在消息框中打印单元格位置(例如E3)

时间:2018-06-14 21:18:16

标签: excel excel-vba vbscript vba

我正在从E2到E15进行迭代。我想显示一个消息框并指出其中的单元格。例如E3是空的,我希望错误是请填写单元格E3。我正在使用下面的代码。怎么改变?

        Set rRng = Sheet1.Range("E2:E15")
        For Each c In rRng.Cells
            If c.Value = "" Then
                      MsgBox ("Please fill in cell" + c)
                      GoTo end_of_for
            End If
        Next
        end_of_for: 

3 个答案:

答案 0 :(得分:2)

使用SpecialCells来避免循环:

If Application.CountA(Sheet1.Range("E2:E15")) <> Sheet1.Range("E2:E15").Cells.Count Then
    Set rrng = Sheet1.Range("E2:E15").SpecialCells(xlCellTypeBlanks)
    If Not rrng Is Nothing Then MsgBox "Please fill in cell(s): " & rrng.Address(0, 0)
End If

这将立即返回所有空白单元格的地址。

enter image description here

答案 1 :(得分:1)

像这样,使用范围的地址属性。如果只有一个空白,则可以避免使用特殊单元的循环。请注意,连接器是&amp;而不是+。

    let duration: TimeInterval = 10
    let fontSize = CGFloat(68)
    let label = UILabel()
    label.font = UIFont.systemFont(ofSize: fontSize)
    label.layer.anchorPoint = CGPoint(x: 0, y: 0)
    label.layer.position = CGPoint(x: 0, y: 0)
    label.text = "yourText"
    label.sizeToFit()
    view.addSubview(label)

    label.transform = CGAffineTransform(scaleX: 0.25, y: 0.25)
    UIView.animate(withDuration: duration) {
        label.transform = CGAffineTransform(scaleX: 1, y: 1)
    }

答案 2 :(得分:0)

您可以通过调用Cells对象上的方法.Address以“$ E $ 2”的形式获取地址。通过替换'$'字符,您可以得到您想要的内容

Set rRng = Range("E2:E15")
For Each c In rRng.Cells
    If c.Value = "" Then
        MsgBox ("Please fill in cell " + Replace(c.Address, "$", ""))
        GoTo end_of_for
    End If
Next
end_of_for: