函数查找最后一行,但是程序忽略第一行写入

我写了下面的函数来查找任何列的最后一行:

Public Function GetLastRow(ByVal rngToCheck As Excel.Range) As Long Dim rngLast As Excel.Range rngLast = rngToCheck.Find(What:="*", SearchOrder:=Excel.XlSearchOrder.xlByRows, SearchDirection:=Excel.XlSearchDirection.xlPrevious) If rngLast Is Nothing Then GetLastRow = rngToCheck.Rows.Count Else GetLastRow = rngLast.Rows.Count End If End Function 

我在任何时候使用这个函数来处理一个dynamic范围,这个dynamic范围在我的项目上是好几次。 现在,我想findF列的最后一行,但从F2开始。 它必须忽略行F1,因为这是标题。 然而,它不是,我得到一个错误,它不能从string转换为双,这是预期的,因为F1是一个string(列标题),其他一切都是数据。

我不想改变我的function,因为在某些情况下,我需要从第1行下来,有时从第2行下去,这是我以为我在我的代码下面做的,但它不工作,它不断读取F1当然错误,因为F1是一个string,其余的列是双。

 Dim xlWB As Excel.Workbook = CType(Globals.ThisWorkbook.Application.ActiveWorkbook, Excel.Workbook) Dim xlWSEmployee As Excel.Worksheet = CType(CType(xlWB.Sheets("byEmployee"), Excel.Worksheet), Excel.Worksheet) Dim xlWSPosition As Excel.Worksheet = CType(CType(xlWB.Sheets("byPosition"), Excel.Worksheet), Excel.Worksheet) Sub renameColumns() With xlWSPosition Dim colValue As Excel.Range For Each colValue In .Range("F2:F" & GetLastRow(.Cells)) 'Change range as needed If colValue.Value > 0 Then 'used offset instead of range,ie (E1:E) .Range(colValue.Address).Offset(0, -1).Value = "N" Else .Range(colValue.Address).Offset(0, -1).Value = "Y" End If Next End With End Sub 

我不喜欢太多依赖TryParse ,但是这是一个非常出色的情况:

 For Each colValue In .Range("F2:F" & GetLastRow(.Cells)) 'Change range as needed Dim curVal As Integer If (colValue.Value IsNot Nothing AndAlso Integer.TryParse(colValue.Value.ToString(), curVal)) Then If curVal > 0 Then 'used offset instead of range,ie (E1:E) .Range(colValue.Address).Offset(0, -1).Value = "N" Else .Range(colValue.Address).Offset(0, -1).Value = "Y" End If End If Next 

检查单元格值是否为数字,然后将其与以下代码一起使用:

 If IsNumeric(colValue.Value) And colValue.Value > 0 Then ... 

你的答案是使用for语句

 Dim fColumn As Integer fColumn = 6 For i = 2 To GetLastRow(.Cells) If Cells(i, fColumn).Value > 0 Then Cells(i, fColumn).Offset(0, -1).Value = "N" Else Cells(i, fColumn).Offset(0, -1).Value = "Y" End If Next i