遍历具有值的单元格并填充文本框

时间:2018-10-18 16:33:53

标签: excel-vba excel-2013

我在一个范围内有9个单元格,它们与一个用户窗体上的9个不同的文本框控件相对应,我想知道For循环是否比9个不同的if语句更容易,更高效。以下是激活用户窗体后两个单元格的当前If语句以及相应的文本框。

If wsCalc.Range("CCBalance1") > 0 Then
    With RiskCalc.CCBal1
        .Visible = True
        .Value = Format(wsCalc.Range("CCBalance1"), "Currency")
    End With
End If
If wsCalc.Range("CCBalance2") > 0 Then
    With RiskCalc.CCBal2
        .Visible = True
        .Value = Format(wsCalc.Range("CCBalance2"), "Currency")
    End With
End If

下面是我正在考虑使用的For循环,但是我对使用循环还是很陌生,尤其是在将信息从工作表加载到用户窗体控件时。我觉得我还差得远,所以任何指导都将不胜感激。

For Each Cell In wsCalc.Range("CCBalance1:CCBalance9")
    If Cell.Offset(0, 0) > 0 Then 'I believe this will choose the first cell in the range named above
        With RiskCalc.CCBal1
            .Visible = True
            .Value = Format(wsCalc.Range("CCBalance1"), "Currency")
        End With
    End If
Next

1 个答案:

答案 0 :(得分:1)

这未经测试,请尝试一下。它假定范围名称和文本框之间的关系看起来很简单。

Sub x()

Dim i As Long

For i = 1 To 9
    If Range("CCBalance" & i).Value > 0 Then 'I believe this will choose the first cell in the range named above
        With RiskCalc.Controls("CCBal" & i)
            .Visible = True
            .Value = Format(Range("CCBalance" & i), "Currency")
        End With
    End If
Next i

End Sub