【问题标题】:Case Else loop back to Select CaseCase Else 循环回到 Select Case
【发布时间】:2017-09-20 02:11:08
【问题描述】:

我有一个宏,它使用 Select Case 根据单元格的值选择电子邮件模板。

但是,有时,正在检查的单元格为空白。我是否可以更改正在检查的单元格,例如(row + 1) 在 Case Else 中,然后循环回到 Select Case 的开头,例如:

CellToCheck = .Cell(1, 1)

Select Case CellToCheck

Case = 1
Email = "blah blah 1"

Case = 2
Email = "blah blah 2"

Case = 3
Email = "blah blah 3"

Case Else
CellToCheck = Cell(2,1)
'Loop back to "Select Case CellToCheck

我曾考虑将其包含在 Do While 循环中,但如果不调用 Case Else,我将不知道如何退出循环。

想法?

【问题讨论】:

  • 您应该使用循环块或跳转语句(不推荐)。要退出Do 循环,只需使用Exit Do

标签: excel vba


【解决方案1】:

只是您检查的 2 个单元格吗?如果是这样,请在开头尝试一个条件。

Function EmailCheck()

    Dim Email As String
    Dim CellToCheck As Integer

    CellToCheck = Cells(1, 1).Value
    If Cells(1, 1).Value = "" Then CellToCheck = Cells(2, 1).Value

    Select Case CellToCheck

    Case Is = 1
    Email = "blah blah 1"

    Case Is = 2
    Email = "blah blah 2"

    Case Is = 3
    Email = "blah blah 3"

    Case Else
    MsgBox "Check Range Values"
    Exit Function

    End Select

    MsgBox Email

End Function

【讨论】:

    【解决方案2】:

    这样的事情应该可以工作:

       CellToCheck = .Cell(1, 1)
       email = ""
    
       Do While email = ""
          Select Case CellToCheck
             Case Is = 1
                email = "blah blah 1"
    
             Case Is = 2
                email = "blah blah 2"
    
             Case Is = 3
                email = "blah blah 3"
    
             Case Else
                CellToCheck = Cell(2, 1)
          End Select
       Loop
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      相关资源
      最近更新 更多