Excel VBA:以奇怪的方式自动更改换行符吗?我应该以不同的方式放置这些东西吗?

时间:2018-09-07 16:24:17

标签: excel vba

Excel VBA,Office2016。我有几行很长的代码,我想在Or / And运算符之前或之后对其进行分解。但是,当我执行此操作后,VBA将它们移到行外之后将它们移到怪异的地方。 (如果我做错了这个问题,或者如果这是一个愚蠢的问题,我很抱歉,这是编码和堆栈的新知识)

这是我输入的内容:

Sub testhere()
If [Table1].Cells(1, [Table1[Referral Type]].Column).Value = "T" Or _
   [Table1].Cells(1, [Table1[Referral Type]].Column).Value = "TE" Then
        MsgBox ("OK")

这是Excel VBA将其更改为:

Sub testhere()
If [Table1].Cells(1, [Table1[Referral Type]].Column).Value = "T" Or [Table1 _
   ].Cells(1, [Table1[Referral Type]].Column).Value = "TE" Then
    MsgBox ("OK")

将行继续放置似乎很奇怪。有人知道如何避免这种情况吗?

1 个答案:

答案 0 :(得分:0)

从稍有不同的方向解决此问题并完全避免连续行,您可以使用:

  1. Select Case-简化了IF/OR

Sub Test1()
    Select Case [Table1].Cells(1, [Table1[Referral Type]].Column).Value
        Case "T", "TE"
            MsgBox "OK" ' Note that you don't need parentheses around "OK"
    End Select
End Sub

  1. 或者也许使用ListObjectListColumn变量而不是引用[Table1][Referral Type]

Sub Test2()
    Dim myTable As ListObject
    Dim referralTypeCol As ListColumn

    Set myTable = ThisWorkbook.Sheets("Sheet1").ListObjects("Table1")
    Set referralTypeCol = myTable.ListColumns("Referral Type")

    Select Case referralTypeCol.DataBodyRange.Cells(1).Value
        Case "T", "TE"
            MsgBox "OK"
    End Select
End Sub