Я пытаюсь создать цикл для изменения типа шрифта и цвета шрифта на основе текста в ячейках в 3 листах, каждый с именованным динамическим диапазоном.Я не могу выбрать все ячейки на листах, потому что у меня есть легенда в ячейках выше диапазона.
Я успешно отформатировал каждый диапазон отдельно, но мне было интересно, есть ли более эффективный способ.Я понимаю, что Range не будет работать на нескольких листах.Я пытался использовать Collection и Array с именованными диапазонами.Я явно не понимаю, как их использовать, потому что ни один не работал.
Я пытался выяснить это в течение недели.Я прочитал очень много постов, но большинство из них пытаются выполнить функцию в определенном диапазоне на листах.Я очень плохо знаком с VBA (все кодирование), и это самое близкое, что я пришел.
Это то, что сработало.
Sub Macro3()
Dim daily As Worksheet, mon As Worksheet, per As Worksheet
Dim ws As Worksheet, cell As Range
Dim d1 As Range, m1 As Range, p1 As Range
Set daily = Sheets("Daily")
Set mon = Sheets("Monthly")
Set per = Sheets("Personnel")
Set d1 = daily.Range(("A7"), daily.Range("A7").End(xlUp) _
.Offset(-1, 46))
Set m1 = mon.Range("A6:Y6")
Set p1 = per.Range(("A4"), per.Range("A4").End(xlUp).Offset(1, 20))
With d1
Cells.Replace What:="", Replacement:="T"
Cells.Replace What:="Incomplete", Replacement:="T"
Cells.Replace What:="Complete", Replacement:="R"
Cells.Replace What:="Not Applicable", Replacement:="x"
End With
d1.HorizontalAlignment = xlCenter
For Each cell In d1
If cell.Value = "T" Then
cell.Font.Name = "Wingdings 2"
ElseIf cell.Value = "R" Then
cell.Font.Name = "Wingdings 2"
ElseIf cell.Value = "x" Then
cell.Font.Name = "Webdings"
ElseIf cell.Value = "v" Then
cell.Font.Name = "Wingdings"
End If
Next
With d1
.Borders(xlInsideVertical).Weight = xlThin
.Borders(xlInsideHorizontal).Weight = xlThin
.Borders(xlEdgeLeft).Weight = xlMedium
.Borders(xlEdgeTop).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlMedium
.Borders(xlEdgeRight).Weight = xlMedium
End With
' this is repeated for m1 and then p1
End Sub
Это не
Set dta_all = Array(Sheets("Daily").daily.Range(("A7"), _
daily.Range("A7").End(xlUp).Offset(-1, 46)), _
Sheets("Monthly").Range("A6:Y6"), _
Sheets("Personnel").Range(("A4"), _
per.Range("A4").End(xlUp).Offset(1, 20)))
For Each ws In ThisWorkbook.Worksheets
For Each cell In dta_all
If cell.Text = "Incomplete" Then
cell.Value = "T"
cell.Font.Name = "Wingdings 2"
cell.Font.Bold = True
cell.Font.Color = vbRed
End If
Next
Next
Я получаю сообщение об ошибке 438 - свойство или метод не поддерживаются.Буду очень признателен за вашу помощь.