无法修复无限循环

时间:2018-07-24 07:54:13

标签: excel vba excel-vba infinite-loop

正如标题所述,我的用户窗体中的msgbox陷入无限循环。

我决定在此表单中包括每个命令按钮代码,以防它有助于解决此问题。也有一个文本框。除了For循环外,我还尝试了各种类型的循环,因为我看到的每个For循环示例都有一个计数器或某种形式的增量公式。

我想在循环中发生的事情是,如果用户单击标记为open的命令按钮,然后单击txtbxSelectFile.value = "",然后显示消息框,并在每次cmdbtnOpen_Click为{{1 }}和true

唯一可以起作用的是条件条件语句txtbxSelectFile.value = "",但它不会循环。它只会运行一次,然后继续其他状态。也许更好的解释是,如果用户一直单击打开按钮,而文本框中没有任何内容,然后继续显示消息框。

文本框中的值应该来自文件浏览按钮。当用户单击浏览按钮时,将打开一个文件对话框,以便用户可以找到他们想要打开的文件。

If ... Then

我真的希望我的解释有意义。谢谢。

1 个答案:

答案 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