【问题标题】:Excel VBA: how to access and control the "Sheet Select" dialog?Excel VBA:如何访问和控制“工作表选择”对话框?
【发布时间】:2016-08-31 08:36:52
【问题描述】:

当我的 VBA 脚本无法确定要使用哪个工作表时,它会打开一个 Excel 对话框:“选择工作表”。这是太棒了!如何以编程方式控制和使用“工作表选择”对话框?

我正在编写一个使用的代码

Application.FileDialog(msoFileDialogFilePicker)

..要设置一个变量=一个选择的文件名,但我也试图将一个变量设置为该文件中的某个工作表。全部无需打开文件。

我希望工作流程是:

  1. 文件对话框打开 -> 选择一个 Excel 文件 > 确定
  2. 工作表对话框打开(如 Excel 的“选择工作表”对话框)-> 选择该 Excel 文件中的一个工作表 > 确定

我已经通过 Application.Dialog(xl...) 的东西,但找不到正确的选项。

请帮忙!谢谢。

【问题讨论】:

  • “选择工作表”对话框是什么意思?如果您已经在您的 VBA 代码中使用它,那么您已经确实“以编程方式控制”它。你能更具体一点吗?此外,“我还试图为该文件中的某个工作表设置一个变量。所有这些都无需打开文件。”是不可能的。如果有一个对象,则只能将变量设置为工作表 - 只有打开文件时才会出现这种情况。没有办法解决这个问题。
  • 否,“选择工作表”对话框看起来像一个组合框,其中包含一个列表中的所有文件工作表。当 Excel 不知道您要使用哪个工作表时,它会打开。我想知道您是否可以使用某种对话框工作表选择器使用尚未打开的工作表的名称填充变量,就像您可以使用尚未打开但使用 msoFileDialogFilePicker 选择的文件的名称填充 VBA 变量一样对话框。
  • 我仍然不清楚“选择工作表”功能。你有一个具体的例子(或示例代码)吗?对于工作表列表:您必须先打开文件才能查看其中有哪些工作表。就像您必须打开一个目录才能查看其中的文件一样。这不能在不打开文件的情况下完成。但是可以在后台打开文件,之后可以直接关闭文件。所有这一切都可以在没有用户注册文件的情况下完全打开。但它必须打开,无论你尝试为用户执行此操作如何隐形。

标签: vba excel worksheet


【解决方案1】:

你可以试试这个(改编自 Tom Urtis 的 here

Option Explicit

Dim mySht As Worksheet

Sub SelectSheet()

Dim cmdBar As CommandBar
Dim cmdBarBtn As CommandBarButton
Dim sht As Worksheet

RegDel

Set cmdBar = Application.CommandBars.Add("Register", msoBarPopup)
For Each sht In ThisWorkbook.Worksheets
    Set cmdBarBtn = cmdBar.Controls.Add
    cmdBarBtn.Caption = sht.Name
    cmdBarBtn.Style = msoButtonCaption
    cmdBarBtn.OnAction = "SelectThatSheet"
Next sht
cmdBar.ShowPopup

MsgBox "you selected sheet '" & mySht.Name & "'"

End Sub

Sub SelectThatSheet()
Set mySht = Worksheets(Application.Caller(1))
RegDel
End Sub

Sub RegDel()
On Error Resume Next
Application.CommandBars("Register").Delete
On Error GoTo 0
End Sub

【讨论】:

  • 哇,这似乎奏效了。现在我要弄清楚如何将它包装在一个看起来很提示的东西中,然后我们就准备好了。
  • 你所说的“看起来很迅速”是什么意思?上面的内容实际上会弹出一个列表以从中选择工作表名称。否则你可以使用用户表单
  • 是的,试图弄清楚如何在用户表单环境中执行此操作而无需实际制作,希望使用默认提示/对话框。
  • 据我所知,您可以使用上述内容,这实际上是“默认提示”,或者使用 Userfom
猜你喜欢
  • 2014-12-08
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 2017-06-03
  • 2017-05-17
  • 1970-01-01
相关资源
最近更新 更多