Excel 带单元格值的VBA循环

Excel 带单元格值的VBA循环,excel,vba,Excel,Vba,我对vba还很陌生,我面临着一个迄今为止找不到解决方案的问题。在工作表“Source”中有两个名称列表,我想用于for-each循环。如何使用正确的工作表处理这些单元格 我想访问名为“Boxvariablename”(例如BoxIAA)的组合框和形式为“variablenamevalue”(例如Iavalue)的关联文本框,并检查所有这些对象的内容,如果对象为空,则删除工作表“Source”中右边的两个单元格(例如D3:E3或G5:H5) 我的尝试是: Dim rng As Range, cel

我对vba还很陌生,我面临着一个迄今为止找不到解决方案的问题。在工作表“Source”中有两个名称列表,我想用于for-each循环。如何使用正确的工作表处理这些单元格

我想访问名为“Boxvariablename”(例如BoxIAA)的组合框和形式为“variablenamevalue”(例如Iavalue)的关联文本框,并检查所有这些对象的内容,如果对象为空,则删除工作表“Source”中右边的两个单元格(例如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
Dim rng As Range,cell As Range
设置rng=范围(图纸(“源”).范围(“C2:C4”)、图纸(“源”).范围(“F2:F5”))
对于rng中的每个单元
如果“框”和单元格值为“”,则
MsgBox“值为”&“框”和范围(单元格).value
否则如果
'删除ws“Source”中右侧的两个单元格'
如果结束
下一个细胞
我知道,我没有正确处理工作表源代码中的C2:C4单元格,但我真的不知道如何正确处理。
我如何访问源单元格的内容并为内容/单元格寻址以供以后使用?

这就是您正在尝试的(未测试的)吗

子样本()
变暗rng As范围
Dim aCell As系列
错误转到Whoa“使用Controls()处理控件”
使用Me.Controls(“Box”和aCell.Value)
如果.Value为“”,则
MsgBox.Value
其他的
“~~>做你想做的事
图纸(“来源”)。范围(aCell.偏移量(,1)_
aCell.Offset(,2)).Delete shift:=xlLeft
如果结束
以
下一个亚塞尔
出口接头
哇
MsgBox错误说明
端接头

您也可以使用
If.ListIndex-1 Then
而不是
If.Value“”。我假设组合框中没有空值。

请注意
Set rng=Range(
中的
Range
本身不受工作表的限制。为了节省键入时间,为什么不声明并设置一个工作表变量
ws
?另外,如果
cell
是范围对象,则
Range(cell)
毫无意义。非常感谢Siddharth Rout,解决了这个问题!我真的没有解决这个问题的计划!非常好
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