通过使用此代码,我在工作表中选择了一个范围。 例如。我从以下代码中得到了“ BE5:BE182”:
MsgBox "Selected range: " & Selection.Areas(1).Address(False, False)
现在,我要检索BE5并将其转换为两个col的数值。和行(例如1,1),我也想针对BE182执行此操作。我该怎么办?
抱负:我对宏的目标是选择一个应该附加数字数据的范围。基于范围开始和范围结束之间的行数,我将始终使用存储国家名称的col 1(A)。针对这些问题,我想针对另一个工作簿中的数据实现类似的VLOOKUP功能-用户还应在其中选择应从中获取数据的范围。
让用户定义col的想法。并且row-range是针对vlook-up的行范围可以更改,并且col可能并不总是+1。
非常感谢!
答案 0 :(得分:0)
您可以使用范围的Row
和Column
属性来获取范围的数字范围。
Dim Selected As String
Dim SelectedRange() As String
Dim BeginSel As String
Dim EndSel As String
' Get the range of cells selected by the user.
Selected = Selection.Areas(1).Address(False, False)
MsgBox "Selected range: " & Selected
' Split the selected range into begin and end cells.
SelectedRange = Split(Selected, ":")
BeginSel = SelectedRange(0)
EndSel = SelectedRange(1)
MsgBox "Begin Selected range: " & BeginSel
MsgBox "End Selected range: " & EndSel
' Convert the begin and end cells to row and column values
MsgBox Range(BeginSel).Row & ", " & Range(BeginSel).Column
MsgBox Range(EndSel).Row & ", " & Range(EndSel).Column
在这里,我在":"
字符上分割了选定的范围,以获取该范围的开始和结束单元格。您可能需要检查Split
函数返回的数组的长度,以确保用户选择了单元格的实际 range 而不是单个单元格(或什么也没有)。
例如,这会将所选范围A1:E3
转换为坐标(1,1)和(3,5)。
答案 1 :(得分:0)
怎么样:
Sub RowAndColumn()
Dim r1 As Range, r2 As Range, addy As String
addy = Selection.Address(0, 0)
If Selection.Count = 1 Then
MsgBox Selection.Row & "," & Selection.Column
Else
arr = Split(addy, ":")
Set r1 = Range(arr(0))
Set r2 = Range(arr(1))
MsgBox r1.Row & "," & r1.Column & vbCrLf & r2.Row & "," & r2.Column
End If
End Sub