带单元格值的VBA循环

时间:2019-02-22 10:56:08

标签: excel vba

我对vba来说还很陌生,我面临的一个问题是到目前为止我找不到解决方案。我在工作表“源”中有两个名称列表,我希望将其用于每个循环。如何使用正确的工作表处理这些单元格?

我想访问名为“ Box 变量名”的组合框(例如BoxIAA)和“ 变量名值”形式的关联文本框(例如IAAvalue),并检查所有这些对象的内容,如果对象为空,则删除工作表“源”中右侧的两个单元格(例如D3:E3或G5:H5)。

我的尝试是:

Dim rng As Range, cell As Range
Set rng = Range(Sheets("Source").Range("C2:C4"), Sheets("Source").Range("F2:F5"))


For Each cell In rng
    If "Box" & cell.Value <> "" Then

        MsgBox "The value is " & "Box" & Range(cell).Value

    Else If
        'Delete two cells to the right in ws "Source"
    End If  

Next cell

我知道,我没有正确处理工作表Source中的Cells C2:C4,但是我真的不知道如何正确执行。 如何访问源单元格的内容并寻址内容/单元以供以后使用?

1 个答案:

答案 0 :(得分:1)

这是您要尝试的(未体验)吗?

Sub Sample()
    Dim rng As Range
    Dim aCell As Range

    On Error GoTo Whoa '<~~ Need this in case it couldn't find the control

    Set rng = Sheets("Source").Range("C2:C4,F2:F5")

    For Each aCell In rng
        '~~> Use Controls() to work with the control
        With Me.Controls("Box" & aCell.Value)
            If .Value <> "" Then
                MsgBox .Value
            Else
                '~~> Do what you want
                Sheets("Source").Range(aCell.Offset(, 1), _
                                       aCell.Offset(, 2)).Delete shift:=xlLeft
            End If
        End With
    Next aCell

    Exit Sub
Whoa:
    MsgBox Err.Description
End Sub

您也可以使用If .Value <> "" Then代替If .ListIndex <> -1 Then。我假设组合框中没有空白值。