Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Function ListRowCount(ByVal FirstCellName as String) as Long
With thisworkbook.Names(FirstCellName).RefersToRange
If isempty(.Offset(1,0).value) Then
ListRowCount = 1
Else
ListRowCount = .End(xlDown).row - .row + 1
End If
End With
End Function
, Но если Вы чертовски уверены, нет ничего вокруг списка, затем всего thisworkbook.Names(FirstCellName).RefersToRange.CurrentRegion.rows.count
Можно также использовать:
Range( RangeName ).end(xlDown).row
для нахождения последней строки с данными в нем запускающийся в именованном диапазоне.
Я уверен, что Вы, вероятно, хотели ответ, который дал @GSerg. Существует также функция рабочего листа, вызванная rows
, который даст Вам количество строк.
Так, если у Вас есть именованный диапазон данных, названный Data
, который имеет 7 строк, затем =ROWS(Data)
, покажет 7 в той ячейке.
Та единственная последняя строка работала отлично @GSerg.
другая функция была тем, что я продолжал работать, но мне не нравится иметь необходимость обратиться к UDF's, если не абсолютно необходимо.
я пробовал комбинацию Excel и vba и имел это для работы - но его неуклюжее по сравнению с ответом.
strArea = Sheets("Oper St Report CC").Range("cc_rev").CurrentRegion.Address
cc_rev_rows = "=ROWS(" & strArea & ")"
Range("cc_rev_count").Formula = cc_rev_rows