正如标题所述,我的用户窗体中的msgbox陷入无限循环。
我决定在此表单中包括每个命令按钮代码,以防它有助于解决此问题。也有一个文本框。除了For循环外,我还尝试了各种类型的循环,因为我看到的每个For循环示例都有一个计数器或某种形式的增量公式。
我想在循环中发生的事情是,如果用户单击标记为open的命令按钮,然后单击txtbxSelectFile.value = ""
,然后显示消息框,并在每次cmdbtnOpen_Click
为{{1 }}和true
。
唯一可以起作用的是条件条件语句txtbxSelectFile.value = ""
,但它不会循环。它只会运行一次,然后继续其他状态。也许更好的解释是,如果用户一直单击打开按钮,而文本框中没有任何内容,然后继续显示消息框。
文本框中的值应该来自文件浏览按钮。当用户单击浏览按钮时,将打开一个文件对话框,以便用户可以找到他们想要打开的文件。
If ... Then
我真的希望我的解释有意义。谢谢。
答案 0 :(得分:0)
略有不同的方法呢?为什么不使“打开”按钮的.Enabled
属性取决于txtbxSelectFile
的值?
这样,在值位于txtbxSelectFile
中之前,无法按下“打开”按钮。
在设计模式下,更改“打开”按钮的属性:将.Enabled
设置为False
,然后使用:
Private Sub cmdBrowse_Click()
'myFile = Application.GetOpenFilename(, , "Select a File.")
Dim fname As String
Dim fpath As String
fpath = ThisWorkbook.Path
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = fpath
.ButtonName = "Get File Name"
.Title = "File Selection"
.Filters.Clear
.Filters.Add "Excel Files", "*.xl; *.xlsx; *.xlsm; *.xlb; *.xlam; *.xltx; *.xltm; *.xls; *.xla; *.xlt; *.xlm; *.xlw"
.AllowMultiSelect = False
If .Show = True Then
fname = .SelectedItems(1)
Me.txtbxSelectFile.Text = fname
Else
MsgBox "Operation Canceled"
End If
cmdbtnOpen.Enabled = Me.txtbxSelectFile.Text <> ""
End With
End Sub
Private Sub cmdbtnOpen_Click()
Workbooks.Open Me.txtbxSelectFile
Unload Me
selectRangefrm.Show
End Sub