繁体   English   中英

VBA 用户表单:获取 xlFileFormat 作为输入

[英]VBA Userform: Get xlFileFormat as input

我创建了一个子循环遍历所有工作表并另存为 CSV - 但后来我想更进一步,为用户提供一个选项来定义应该导出哪些工作表以及使用什么格式。 我的困惑是如何最好地从用户那里收集这些信息。

为了完整起见,这里是整个用户窗体 - 但我希望看到有什么想法可以向用户显示可读的文件格式列表,然后将它们转换回 xlFileFormat 类型的变量。 我打算在这里使用实际枚举中的描述和名称,但我想问题是 - 我是否将我希望在隐藏表中可用的选项存储起来,然后使用该表用友好的描述填充用户窗体,然后将其用作查找表以将 map 选择为有效枚举?

这个问题比我目前的任务更大,因为我找不到一个简单的例子或在那里回答。 我可以使用 Select Case 作为我提供的少量选项,但我想要一些可扩展的东西。 对于附加的代码,我计划在用户单击“确定”后立即将exportFormat传递到我的 Export Sub

Private Sub OKButton_Click()
'translate file format selection to
Select Case ExportFormatList.Value
    Case "CSV"
        exportFormat = xlCSV
End Select


End Sub

Private Sub UserForm_Initialize()
'Empty fields
SheetOptionsList.Value = ""
ExportFormatList.Value = ""

'Fill SheetOptionsListBox
With SheetOptionsList
    .AddItem "Just the active sheet"
    .AddItem "Specific sheets, let me choose!"
    .AddItem "All sheets that can be exported"
End With

'Fill ExportFormatListBox
With ExportFormatList
    .AddItem "CSV"
    .AddItem "Test"
End With

'Set defaults
SheetOptionsList.Value = "Just the active sheet"
ExportFormatList.Value = "CSV"

'Set focus to first field
SheetOptionsList.SetFocus

End Sub

使用字典(您需要添加对 Microsoft Scripting Runtime 的引用)。 使用友好名称(例如,CSV、Open XML Workbook、Open XML Workbook Macro Enabled)并将它们设置为键,将枚举作为值,如下所示:

Function getEnums() As Scripting.Dictionary
    
    Set buffer = New Dictionary
    buffer.Add "CSV", xlCSV
    buffer.Add "Open XML Workbook", xlOpenXMLWorkbook
    buffer.Add "Open XML Workbook Macro Enabled", xlOpenXMLWorkbookMacroEnabled
    
    Set getEnums = buffer
    
End Function

然后获取从您的用户表单传回的友好名称并像这样查找:

actualFormat = getEnums("CSV")

您可以在此处看到它循环字典:

Sub testEnums()
    
    Set typeEnums = getEnums
        
    For Each k In typeEnums.Keys
        Debug.Print k & " : " & typeEnums(k)
        Next
    
End Sub

您可以使用 Public Enum 来设置它,但如果您想保留友好格式名称中的空格,我认为那是不可能的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM