我现在有一些代码提示用户选择一个范围(1 个区域、1 列、几行)。这是提示用户这样做的代码:
MsgBox "Select a continuous range of cells where numeric values should be appended."
Set Rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8) 'Type Values, 8 - Range object
Run Code Online (Sandbox Code Playgroud)
但是,如何从上面的选择中获取工作簿名称和工作表名称?
我需要这个:
目标 ws 的工作表名称- 最好也从上面的代码中读取它,其中提示用户“Set Rng /---/”
源 wb 的工作簿名称- 读取目标 ws 后,我想通过打开对话框提示用户选择源工作簿,其中我将提示用户选择一个附加范围(源范围) - 它将输入到3和4。
源 ws 的工作表名称-参见 3
另外,我希望有绝对的 ws 名称“Sheet1”等,而不是它的名称(例如 Kalle Anka)。
非常感谢!
编辑:我知道在输入对话框显示中是否选择了另一个 ws 或 wb,而不是从启动宏的位置,即“[Cognos Orders and Deliveries.xlsx]Truck Orders”!$F$11:$F$18。但是,如果我将“设置为范围”变暗 - 有什么方法可以检索该信息吗?如果它是一个字符串,你也许可以用 !然后] 分别获取 ws 和 wb ?现在如何使用范围?
EDIT2:根据下面的答案,我尝试了以下结果/问题:
Sub AppendCognosData()
Dim Rng As Range
Dim AppendWb As Workbook
Dim AppendWs As Worksheet
Dim AppendWb2 As Workbook
'Create a reference to Wb where to append data
Set AppendWb = ThisWorkbook
MsgBox "Select a continuous range of cells (in a column) where numeric values should be appended."
Set Rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8) 'Type Values, 8 - Range object
AppendWs = Rng.Parent.Name
AppendWb2 = Rng.Parent.Paranet.Name
Run Code Online (Sandbox Code Playgroud)
在最后两行我得到错误。
要引用带有字符串变量的工作表,语法如下:
set wks = Worksheets("NameOfWorksheet")
工作表 MSDN
要引用带有字符串变量的工作簿:
set wkb = Workbooks("NameOfWorkbook")
MSDN 工作手册
现在的问题是如何从选择中"NameOfWorksheet"获取字符串。"NameOfWorkbook"这是一些最小的例子:
Public Sub TestMe()
Dim wks As Worksheet
Dim wkb As Workbook
Dim rng As Range
Set rng = Selection
Debug.Print rng.Parent.Name 'Name of the worksheet
Debug.Print rng.Parent.Parent.Name 'Name of the workbook
Debug.Print rng.Parent.CodeName 'Code Name of the worksheet
Set wks = Worksheets(rng.Parent.Name)
Debug.Print wks.Name
Set wkb = Workbooks(rng.Parent.Parent.Name)
Debug.Print wkb.Name
End Sub
Run Code Online (Sandbox Code Playgroud)