我有一个用户表单,用户可以使用它来更改我正在开发的未来工具的一些设置。他们可以提供输入的一件事是未来代码将生成的一些里程碑文本框的默认字体。他们可以在该区域中看到当前字体设置和打开按钮并利用 Excel 的默认对话框 (xlDialogActiveCellFont) 来选择字体、字体大小以及其他任何内容。
我遇到的问题是 Application.Dialogs(xlDialogActiveCellFont).Show(...); 中的 Arg9(“下划线”);微软没有告诉你这是什么变量类型(单个、整数、字符串等),而且我似乎找不到它喜欢的任何输入。
由于 ActiveCell.Font.Underline 是一个“Long”变量类型,我假设 Arg9 想要它采用相同的格式,这就是私有函数“GetData_MSMFontUnderline”提供的功能,它可以将下划线样式“名称”及其关联的样式号转换。因此,假设用户窗体中的文本框为“None”,GetData_MSMFontUnderline 将返回 -4142 或 xlUnderlineStyleNone 作为 Long 变量类型。我尝试输入字符串(例如“None”或“-4142”),但 Application.Dialogs(xlDialogActiveCellFont).Show(...) 不喜欢它。
我收到以下错误:
运行时错误“1004”:
无法获取对话框类的Show属性
Option Explicit
Private Sub CommandButton1_Click()
With Application.Dialogs(xlDialogActiveCellFont)
If .Show(Arg1:=Me.Txt_MSMFontName.Value, Arg3:=Int(Me.Txt_MSMFontSize.Value), Arg9:=GetData_MSMFontUnderline(Me.Txt_MSMFontUnderline, FALSE)) = True Then
Me.Txt_MSMFontName.Value = .Application.ActiveCell.Font.Name
Me.Txt_MSMFontSize = .Application.ActiveCell.Font.Size
Me.ChkBox_MSMFontBold.Value = .Application.ActiveCell.Font.Bold
Me.ChkBox_MSMFontItalic.Value = .Application.ActiveCell.Font.Italic
Me.Txt_MSMFontUnderline = GetData_MSMFontUnderline(.Application.ActiveCell.Font.Underline, True)
End If
End With
End Sub
Private Function GetData_MSMFontUnderline(ValIn As Variant, Optional Bln_ValIsNumber As Boolean) As Variant
Dim arr(1 To 2, 1 To 5) As Variant
arr(1, 1) = xlUnderlineStyleNone
arr(2, 1) = "None"
arr(1, 2) = xlUnderlineStyleDouble
arr(2, 2) = "Double"
arr(1, 3) = xlUnderlineStyleSingle
arr(2, 3) = "Single"
arr(1, 4) = xlUnderlineStyleSingleAccounting
arr(2, 4) = "Single Accounting"
arr(1, 5) = xlUnderlineStyleDoubleAccounting
arr(2, 5) = "Double Accounting"
Dim i As Long
On Error GoTo ExitFunc
If Bln_ValIsNumber Then
For i = 1 To 5
If arr(1, i) = ValIn Then
GetData_MSMFontUnderline = arr(2, i)
Exit For
End If
Next i
Else
For i = 1 To 5
If arr(2, i) = ValIn Then
GetData_MSMFontUnderline = arr(1, i)
Exit For
End If
Next i
End If
ExitFunc:
End Function
如有任何帮助,我们将不胜感激!也许我忽略了一些事情!!
看来
Arg9
通过1
接受5
,对应于以下输入:
1: None
2: Single
3: Double
4: Single Accounting
5: Double Accounting