excel 输入框选择工作表和列

ktca8awb  于 2023-11-20  发布在  其他
关注(0)|答案(2)|浏览(156)

我有一个工作簿上的宏,我想做一个宏,弹出要求我选择工作簿和范围,它做别的事情。
我需要的工作簿名称和范围将在每个工作簿上不同,我使用它,因此为什么我需要它有选择的输入框。

  1. Sub Getsheet()
  2. Dim desiredSheetName As String
  3. desiredSheetName = Application.InputBox("Select any cell inside the target sheet: ", "Prompt for selecting target sheet name", Type:=8).Worksheet.Name
  4. Debug.Print desiredSheetName
  5. MsgBox desiredSheetName
  6. Workbooks(desiredSheetName).Activate
  7. Range("A1") = "TEST"
  8. End Sub

字符串
这只得到工作表名称,而不是工作簿名称,所以在激活行失败。我需要得到工作簿,名称和选定的范围。我相信这是很简单的,但我有点卡住。
谢谢你的帮助。

已关闭

我一定是没说清楚,因为我以为我的要求很简单。
我有一个工作簿,其中将房屋宏,我对各种CVS文件执行。
我打开我的masterwork书和文件,我正在工作,我运行从一个按钮的主工作簿,一个宏。
宏需要拿出一个输入框,使它清晰,直接和简单,让我选择一个范围内的另一个工作簿。
然后我需要使用从输入框中选择的范围运行其余的代码。
我所需要的是如何从选择中获得工作簿名称、工作表名称和范围。
我希望这能消除任何困惑。

5m1hhzi4

5m1hhzi41#

这是我使用的(类似的情况在这里):

  1. Sub test2()
  2. Dim columnStart As Range
  3. Dim columnNr As Long
  4. Dim wbC As Workbook
  5. Dim wsC As Worksheet
  6. Dim columnAddress As String
  7. On Error Resume Next
  8. Set columnStart = Application.InputBox("Select the column with the first key", Default:=Selection.Address(0, 0), Type:=8)
  9. On Error GoTo 0
  10. If columnStart Is Nothing Then
  11. MsgBox "Cancelled."
  12. Exit Sub
  13. End If
  14. Set wbC = columnStart.Parent.Parent
  15. Set wsC = columnStart.Parent
  16. columnAddress = columnStart.Address
  17. columnNr = columnStart.Column
  18. Debug.Print "Workbook: " & wbC.Name & " with worksheet: " & wsC.Name & " & column Address: " & columnAddress & " with column number : " & columnNr
  19. End Sub

字符串
你得到的范围有一个parent = Workbook,它也有自己的父对象= Workbook。
我的代码的目的是不使它成为我的活动工作簿,而只是获得键列,以便我可以基于它的其余代码。

**编辑:**为您提供更多内容:

  1. Sub Getsheet()
  2. Dim desiredSheetName As String
  3. Dim rng As Range
  4. Set rng = Application.InputBox("Select any cell inside the target sheet: ", "Prompt for selecting target sheet name", Type:=8)
  5. desiredSheetName = rng.Parent.Name
  6. Debug.Print desiredSheetName
  7. MsgBox desiredSheetName
  8. rng.Parent.Parent.Activate 'Workbook
  9. Range("A1") = "TEST"
  10. 'or without needing to use Activate:
  11. Dim wb As Workbook, ws As Worksheet
  12. Set wb = rng.Parent.Parent 'isn't really needed here
  13. Set ws = rng.Parent
  14. ws.Range("A1").Value = "Test"
  15. End Sub

展开查看全部
p5fdfcr1

p5fdfcr12#

所以我可以看到一些关于你如何提示这个问题,但要回答激活工作表的请求,你不必做任何事情.你说,你希望有人点击范围,这将把他们放在该表上。
如果您想从选定的单元格中捕获信息,则有一个选项列表,例如:

  1. Sub test() 'I have the picture below to show the outputs
  2. Debug.Print Selection.Address
  3. Debug.Print ActiveSheet.Name
  4. Debug.Print ActiveWorkbook.Name
  5. End Sub

字符串
因此,如果你想调用一个工作簿,你可以将它们存储为变量,并使用这样的:

  1. Sub test()
  2. Dim rAddress As Range: rAddress = Selection.Address
  3. Dim rSheet As Worksheet: rSheet = ActiveSheet.Name
  4. Dim rBook As Workbook: rBook = ActiveWorkbook.Name
  5. End Sub


然后调用可以是Workbooks(rBook).Sheets(rSheet).Address(rAddress)


的数据

展开查看全部

相关问题