我对VBA相当新,并且在基本语法方面存在一些普遍的障碍。我正在使用以下代码修剪前导空格和颜色代码我正在处理的ActiveSheet。
我有另一个名为“Country”的工作表,我想将相同的逻辑应用于我正在使用的当前工作表。我也很难使用最有效的代码来查找值为“AcctTotal”,“CurrTotal”和“BravoTotal”的任何单元格(大约有14,000行数据)。我目前正在强调整个电子表格,并使用“UsedRange”来查找这些单元格。
总结一下: 我想在两个工作表中修剪前导空格和颜色代码“AcctTotal”,“CurrTotal”和“BravoTotal”的任何值:“Currency”和“Country”
SubColorCodeCurrency()
Dim r As Range
For Each r In Selection
If r.Value = " AcctTotal" Then
r.Value = LTrim(r.Value)
Intersect(r.EntireRow, ActiveSheet.UsedRange).Interior.ColorIndex = 15
End If
Next r
Dim s As Range
For Each s In Selection
If s.Value = " CurrTotal" Then
s.Value = LTrim(s.Value)
Intersect(s.EntireRow, ActiveSheet.UsedRange).Interior.ColorIndex = 40
End If
Next s
Dim t As Range
For Each t In Selection
If t.Value = " BravoTotal" Then
t.Value = LTrim(t.Value)
Intersect(t.EntireRow, ActiveSheet.UsedRange).Interior.ColorIndex = 35
End If
Next t
End Sub
答案 0 :(得分:0)
大多数问题是你三次做同样的事情。 ' For Each'声明正在经历每个细胞三次。如果你加入了
for each r in selection
if r.value ="AcctTotal" then
'do something
elseif r.value = "CurrTotal" then
'do something else
elseif r.value = "BravoTotal" then
'do the third thing
end if
答案 1 :(得分:0)
除了Maudise所说的,当您引用数据时,您可以使用如下语法:
Sheets("Country").Range("A1:E14000")
如果可以对源数据进行更改,您可能会发现将其格式化为表格以便于参考是有帮助的。使用名称管理器为表提供有用的名称。然后,你可以这样说:
For Each r In Sheets("Country").Range("CountryTable")
答案 2 :(得分:0)
您可以尝试这种方式:
Public Sub ColorCode ()
Dim i As Integer, j As Integer, m As Integer, n As Integer
i = Range("A:A").End(xlDown).Row
j = Cells.End(xlToRight).Column
For m = 1 To i
For n = 1 To j
If Cells(m, n).Value < 50 Then
Cells(m, n).Interior.ColorIndex = 13
End If
Next n
Next m
End Sub
一种解决方案是将放置在模块中的代码调用到“Private Sub Workbook_Open()”中的“This workbook”。