0

通过使用此代码,我在工作表中选择了一个范围。例如“BE5:BE182”我从这段代码中得到回报:

MsgBox "Selected range: " & Selection.Areas(1).Address(False, False)

现在我想要我的 retrive BE5 并将其转换为两个 col 的数值。和行(例如 1,1),我也想为 BE182 执行此操作。我怎么做?

野心:我对宏的目标是选择一个应该附加数字数据的范围。根据范围开始和范围结束之间的行数,我将始终使用存储国家名称的 col 1 (A)。针对这些,我想针对来自另一个工作簿的数据实现类似的 VLOOKUP 功能 - 用户还应该选择应该从中获取数据的范围。

让用户定义 col 的想法。并且行范围是针对 vlook-up 的行范围可以改变,并且 col 可能并不总是只是 +1。

提前谢谢了!

4

2 回答 2

0

您可以使用范围的RowColumn属性来获取范围的数值范围。

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函数返回的数组的长度,以确保用户选择了实际的单元格范围而不是单个单元格(或什么都没有)。

例如,这会将所选范围A1:E3转换为坐标 (1, 1) 和 (3, 5)。

于 2018-06-20T15:02:32.503 回答
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
于 2018-06-20T15:08:27.083 回答