我有一个空的Excel电子表格,其中我在name manager
中定义了一个变量Row
。
此变量当前引用3:3
但可以随时切换。
因此,它也可以是105:105
或5000:5000
或任何其他可能的数字。
现在,我使用以下VBA来提取行地址的第一个数字:
Sub Extract_Row_Adress()
If Len(Sheet1.Range("Row").Address(RowAbsolute:=False, ColumnAbsolute:=False)) <= 3 Then
RowNumber = Mid(Sheet1.Range("Row").Address(RowAbsolute:=False, ColumnAbsolute:=False), 1, 1)
Else
If Len(Sheet1.Range("Row").Address(RowAbsolute:=False, ColumnAbsolute:=False)) <= 5 Then
RowNumber = Mid(Sheet1.Range("Row").Address(RowAbsolute:=False, ColumnAbsolute:=False), 1, 2)
Else
If Len(Sheet1.Range("Row").Address(RowAbsolute:=False, ColumnAbsolute:=False)) <= 7 Then
RowNumber = Mid(Sheet1.Range("Row").Address(RowAbsolute:=False, ColumnAbsolute:=False), 1, 3)
Else
If Len(Sheet1.Range("Row").Address(RowAbsolute:=False, ColumnAbsolute:=False)) <= 9 Then
RowNumber = Mid(Sheet1.Range("Row").Address(RowAbsolute:=False, ColumnAbsolute:=False), 1, 4)
Else
End If
End If
End If
End If
Sheet1.Range("A5").Value = RowNumber
End Sub
到目前为止,所有这些都运行良好。
正如您在 VBA 中看到的,我需要使用几个IF statements
因为行地址的第一个数字的位数可能会有所不同。据此,我必须用( 1, 1) ( 1, 2) ( 1, 3) ( 1, 4)
等调整Mid
函数的长度。
我想知道是否有更好的方法可以在不运行所有这些If statements
的情况下做到这一点?
这将返回行号
Sheet1.Range("Row").Row
如果Range("Row")
例如"4:6"
则
Sheet1.Range("Row").Row 'returns 4
Sheet1.Range("Row").Row + Sheet1.Range("Row").Rows.Count - 1 'returns 6