我目前正在寻找改进我的信息中心的代码。实际上,我需要知道如何在列X中使用一个循环来影响列Y(同一行上的单元格)。
举个例子:
我实际从SAP提取信息,因此我的B列不在“货币”中。 行动应该是: 如果A + i不为空,则B + i的值变为“货币”。 我也可以获得一个可以与其他东西一起使用的“通用”代码。
这是我目前的代码......
Sub LoopTest()
' Select cell A2, *first line of data*.
Range("A2").Select
' Set Do loop to stop when an empty cell is reached.
Do Until IsEmpty(ActiveCell)
ActiveCell.Offset(0, 1).Style = "Currency"
ActiveCell.Offset(1, 0).Select
Loop
End Sub
答案 0 :(得分:0)
尝试以下方法:
Sub calcColumnB()
Dim strLength As Integer
Dim i As Long
For i = 1 To Rows.Count
columnAContents = Cells(i, 1).Value
strLength = Len(columnAContents)
If strLength > 0 Then
Cells(i, 2).NumberFormat = "$#,##0.00"
End If
Next i
End Sub
Explanation-- 上面的代码对B列中的每个单元格执行的操作,只要A列中的内容不为空,就会将格式设置为带有2位小数的货币
修改强>
不需要循环
答案 1 :(得分:0)
我可以看到我比其他人慢一点,但如果你想要更多的灵感,那么heer是一个超级简单的解决方案(也很容易理解)
Sub FormatAsCurrency()
'Dim and set row counter
Dim r As Long
r = 1
'Loop all rows, until "A" is blank
Do While (Cells(r, "A").Value <> "")
'Format as currency, if not blank'
If (Cells(r, "B").Value <> "") Then
Cells(r, "B").Style = "Currency"
End If
'Increment row
r = r + 1
Loop
End Sub
答案 2 :(得分:0)
另一个示例,获取Last Row,以防您的数据包含任何空白行。
Sub UpdateColumns()
Dim wks As Worksheet
Dim lastRow As Long
Dim r As Long
Set wks = ActiveSheet
lastRow = ActiveSheet.Cells.SpecialCells(xlLastCell).Row
For r = 2 To lastRow
If wks.Cells(r, 1) <> "" Then
wks.Cells(r, 2).NumberFormat = "$#,##0.00"
End If
Next r
End Sub
答案 3 :(得分:0)
这是一个非常简单的,我试图评论 - 但格式搞砸了。它只是读取第1列(A)的内容。如果第1列(A)不为空,则将第2列(B)更新为货币。改变活动单元使VBA比它需要的更复杂(在我看来)
Sub LoopTest()
Dim row As Integer
row = 1
While Not IsEmpty(Cells(row, 1))
Cells(row, 2).Style = "Currency"
row = row + 1
Wend
End Sub