捕获单元格范围从Excel VBA中的用户input

我收到来自不同客户的包含性别和出生date栏目的员工名单的Excel工作簿。 他们到达不同的格式。 我正在创build一个excel工作表,我将添加到每个这些工作簿,这将允许我将一系列公式应用于客户数据。 问题是我不知道出生date数据的位置。

我想要一个macros提示我select出生date值的范围,然后将该数据范围放到工作表上的一个单元格(F31)中,以便将其拉入我的其他公式中。

我在下面创build的代码工作,但它不会拉动工作表选项卡名称和范围。 我如何获得工作表名称以及单元格范围?

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 

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

你需要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 

有两种方法可以取决于您是否希望Workbook名称也在公式中。 我正在testing这些在即时窗口中。

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

 ?ActiveCell.Address(,,,True) 

[第二册]工作表Sheet1!$ A $ 1

方法2使用.Address以及Range.Parent.Name中的表名称,其中Parent指向RangeWorksheet

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

'工作表Sheet1'!$ A $ 1