Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改vba对话框中“是/否”按钮的语言_Vba_Dialog - Fatal编程技术网

更改vba对话框中“是/否”按钮的语言

更改vba对话框中“是/否”按钮的语言,vba,dialog,Vba,Dialog,是否可以更改标准vba对话框中“是/否”按钮的语言?请参阅下面的代码: If MsgBox("Bla bla bla question", vbYesNo) = vbYes Then ... 尝试使用Userform,如中所述 这是有效的,您可以创建一个用户表单来完成相同的任务,而不是更改yes/no msgbox的语言 关于如何做到这一点的建议: 在MS Office文件中创建用户表单,并创建两个命令框。 将所需语言的框更改为是/否。 插入一个标签,您就不需要费心编辑其中的文本了 现在,您应

是否可以更改标准vba对话框中“是/否”按钮的语言?请参阅下面的代码:

If MsgBox("Bla bla bla question", vbYesNo) = vbYes Then ...

尝试使用
Userform
,如中所述


这是有效的,您可以创建一个用户表单来完成相同的任务,而不是更改yes/no msgbox的语言

关于如何做到这一点的建议:
在MS Office文件中创建用户表单,并创建两个命令框。
将所需语言的框更改为是/否。
插入一个标签,您就不需要费心编辑其中的文本了

现在,您应该向用户表单中添加代码。这里,我使用每个对象/用户表单的默认名称

Public bool As Boolean
Public Question As String

Private Sub UserForm_Activate()
    Label1.Caption = Question
End Sub
Private Sub CommandButton1_Click()
     'Yes box
     bool = True
     Me.Hide
End Sub

Private Sub CommandButton2_Click()
     'No box
     bool = False
     Me.Hide
End Sub
此代码使bool和Question可公开访问以进行读/写。
当表单被激活时,它会将Label1中的文本替换为您将变量问题设置为的任何文本。
单击yes(是)或no(否)将根据您的答案返回True(真)或False(假)

接下来,让我们创建一个基本函数来调用它

Function yesno(Question As String)
    UserForm1.Question = Question
    UserForm1.Show
    While UserForm1.Visible = True
        DoEvents
    Wend
    yesno = UserForm2.bool
End Function
此函数提示显示新的UserForm,并在回答后返回True/False

 Sub test()
     Cells(1, 1) = yesno("Insert Question Here")
 End Sub
最后,这段代码只是测试我们是否成功地创建了一个工作函数,并将您的答案(True/False)放在ActiveSheet的单元格(1,1)中



希望这能有所帮助,我建议通过另一个答案中提到的链接阅读userforms:

这对我来说非常有用。值得注意的是,你为按钮定制的标题)在stackoverflow上给了我一个惊喜)@Rafaeil,代码只有一个小问题。消息框的大小不会根据自定义消息的长度进行调整,这与标准msgbox的情况相同。结果,消息被截断。您认为有可能以任何方式解决此问题吗?通过在
MessageBoxH=MessageBox(hwnowner,Space$(120),Space$(120),mbFlags)中更改120
u可以使文本的长度空间变长
 Sub test()
     Cells(1, 1) = yesno("Insert Question Here")
 End Sub