excel VBA If语句条件的计算结果为False,但它在Worksheet SelectionChange Event中运行时就像它是True一样

pjngdqdw  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(128)

简而言之,我在SelectionChange事件中的代码如下:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Right(Target.Cells(1, 1).Value, 4) = ".txt" And DataSize < 30000 Then
            Me.Shapes("txtFileBox").TextFrame.Characters.Text = ReadTextFile(Target.Cells(1, 1).Value)
        End If
        
End Sub

引发错误的原因可能是将太大的文本加载到TextBox中。检查公共DataSize(长类型)变量以避免将大文本加载到工作表上的TextBox形状中,并且此检查在条件语句中工作正常。
问题在于,即使If语句中的条件计算为False(在“监视”窗口中检测到),If语句中的语句仍会执行。
此问题的原因是什么,如何解决?

2ledvvac

2ledvvac1#

在上面的所有指导和帮助下,我设法解决了将代码编辑为以下内容的问题:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim TextData As Variant
    If Right(Target.Cells(1, 1).Value, 4) = ".txt" Then
        TextData = ReadTextFile(Target.Cells(1, 1).Value)  '' Function ReadTextFile should be run before If Statemet
    End If
    '' if DataSize is in reasonable size
    If DataSize < 30000 Then  '' DataSize is a module level variable set by ReadTextFile function when reading text file
        Me.Shapes("txtFileBox").TextFrame.Characters.Text = TextData
    End If
    
End Sub

相关问题