Capture Cell范围来自Excel VBA中的用户输入

时间:2015-06-23 20:51:16

标签: excel vba excel-vba

我收到来自不同客户的excel工作簿,其中包含有性别和出生日期列的员工列表。它们以不同的格式到达。我正在创建一个excel工作表,我将添加到每个工作簿中,这将允许我将一系列公式应用于客户数据。问题是我不提前知道出生日期数据的位置。

我想要一个宏来提示我选择出生日期值的范围,然后将该数据范围放入我工作表上的单元格(F31)中,以便我可以将其拉入其他公式。

我在下面创建的代码有效,但它不会将工作表选项卡名称与范围一起提取。如何获取工作表名称以及单元格范围?

Sub ChooseDOBRange()
    Dim rng As Range

    Set rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
    rng.Copy

    Worksheets("COVER SHEET").Range("F31") = rng.Address    
End Sub 

2 个答案:

答案 0 :(得分:3)

  

如何获取工作表名称以及单元格范围?

您需要rng.Parent.Name

这是你在尝试什么?

Sub ChooseDOBRange()
    Dim rng As Range

    On Error Resume Next '<~~ In case user presses Cancel
    Set rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
    On Error GoTo 0

    If Not rng Is Nothing Then
        rng.Copy

        Worksheets("COVER SHEET").Range("F31").Value = _
        rng.Parent.Name & " - " & rng.Address '<~~ Something like "Sheet2 - $C$6:$H$14"
    End If
End Sub

答案 1 :(得分:3)

根据您是否希望Workbook名称也在公式中,有两种方法可以实现此目的。我正在立即窗口中测试这些。

方法1 使用.AddressExternal参数设置为True

?ActiveCell.Address(,,,True)
  

[第二册] Sheet 1中!$ A $ 1

方法2 使用.Address以及Range.Parent.Name中的工作表名称,其中Parent指的是Worksheet Range }

?"'" & ActiveCell.Parent.Name & "'!" & ActiveCell.Address
  

'Sheet 1中'!$ A $ 1