VBA 具有范围的工作表数组,遍历单元格并更改单独列的值
VBA Array of Sheets with a range, loop through cells and change value of separate column
目标是查看数组中所有工作表中的 A 列。如果在 A 列的单元格中找到 "CASH",请将同一行的 D 列替换为 "USD"。
我遇到了 array.range 的错误。我意识到我不能按原样声明它,但不确定从这里开始做什么。我也可能会遇到循环障碍,也可以接受建议。
谢谢
Sub test()
Dim Sht As Worksheet
Dim SCAFI, ILB, IILB, MMA, IMBD, SCAEQ, IMEQ, IREA, IMSC, ExclSecFI, ExclSecEQ As Worksheet
Dim FIFindCASH, FIFindCASHRng As Variant
Set FIFindCASHRng = Sheets(Array("SCA FI", "ILB", "IILB", "MMA", "IMBD", "Excluded Securities FI")).Range("A:A")
Set SCAFI = Sheets("SCA FI")
Set ILB = Sheets("ILB")
Set IILB = Sheets("IILB")
Set MMA = Sheets("MMA")
Set IMBD = Sheets("IMBD")
Set SCAEQ = Sheets("SCA EQ")
Set IMEQ = Sheets("IMEQ")
Set IREA = Sheets("IREA")
Set IMSC = Sheets("IMSC")
Set ExclSecFI = Sheets("Excluded Securities FI")
Set ExclSecEQ = Sheets("Excluded Securities EQ")
For Each Sht In FIFindCASHRng
If Cell.Value = "CASH" Then
Cell.Value.Offset(0, 3) = "USD"
End If
Next
End Sub
请测试下一段代码:
Sub testIterateChangeVal()
Dim wb As Workbook, Sht As Worksheet, i As Long, lastRow As Long
Set wb = ActiveWorkbook 'use here the needed workbook
For Each Sht In wb.Worksheets
Select Case Sht.Name
Case "SCA FI", "ILB", "IILB", "MMA", "IMBD", "Excluded Securities FI"
lastRow = Sht.Range("A" & Rows.count).End(xlUp).Row
For i = 1 To lastRow
If Sht.Range("A" & i).value = "CASH" Then
Sht.Range("A" & i).Offset(0, 3) = "USD"
'or
'Sht.Range("D" & i).value = "USD"
End If
Next i
End Select
Next
End Sub
目标是查看数组中所有工作表中的 A 列。如果在 A 列的单元格中找到 "CASH",请将同一行的 D 列替换为 "USD"。
我遇到了 array.range 的错误。我意识到我不能按原样声明它,但不确定从这里开始做什么。我也可能会遇到循环障碍,也可以接受建议。
谢谢
Sub test()
Dim Sht As Worksheet
Dim SCAFI, ILB, IILB, MMA, IMBD, SCAEQ, IMEQ, IREA, IMSC, ExclSecFI, ExclSecEQ As Worksheet
Dim FIFindCASH, FIFindCASHRng As Variant
Set FIFindCASHRng = Sheets(Array("SCA FI", "ILB", "IILB", "MMA", "IMBD", "Excluded Securities FI")).Range("A:A")
Set SCAFI = Sheets("SCA FI")
Set ILB = Sheets("ILB")
Set IILB = Sheets("IILB")
Set MMA = Sheets("MMA")
Set IMBD = Sheets("IMBD")
Set SCAEQ = Sheets("SCA EQ")
Set IMEQ = Sheets("IMEQ")
Set IREA = Sheets("IREA")
Set IMSC = Sheets("IMSC")
Set ExclSecFI = Sheets("Excluded Securities FI")
Set ExclSecEQ = Sheets("Excluded Securities EQ")
For Each Sht In FIFindCASHRng
If Cell.Value = "CASH" Then
Cell.Value.Offset(0, 3) = "USD"
End If
Next
End Sub
请测试下一段代码:
Sub testIterateChangeVal()
Dim wb As Workbook, Sht As Worksheet, i As Long, lastRow As Long
Set wb = ActiveWorkbook 'use here the needed workbook
For Each Sht In wb.Worksheets
Select Case Sht.Name
Case "SCA FI", "ILB", "IILB", "MMA", "IMBD", "Excluded Securities FI"
lastRow = Sht.Range("A" & Rows.count).End(xlUp).Row
For i = 1 To lastRow
If Sht.Range("A" & i).value = "CASH" Then
Sht.Range("A" & i).Offset(0, 3) = "USD"
'or
'Sht.Range("D" & i).value = "USD"
End If
Next i
End Select
Next
End Sub