到目前为止,我对宏和VBA的经验仅限于创建一个用于在单元格中进行着色的按钮,因此,如果可能的话,您将不得不为此辩解。
我有一个模板工作表,每周将粘贴有标头和任务的数据-我希望只过滤标头,然后格式化这些行并取消过滤,并使用宏将其自动化。
我已经记录了以下内容:-
ActiveSheet.Range("$A$4:$H$413").AutoFilter Field:=2, Criteria1:="="
ActiveWindow.SmallScroll Down:=-9
Range("A5:L168").Select
Range("A168").Activate
Selection.SpecialCells(xlCellTypeVisible).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 3394611
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Font.Bold = True
Range("I5:L168").Select
Range("L168").Activate
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.ClearContents
Range("C5:H168").Select
With Selection.Font
.Color = -13382605
.TintAndShade = 0
End With
ActiveSheet.Range("$A$4:$H$413").AutoFilter Field:=2
Range("A4").Select
但是,每次运行宏时,它都会格式化相同的行,因此,当将不同的数据粘贴到模板中(在不同位置包含标头)时,宏驱动的格式就不会选择标头行。
是否有任何方法可以调整范围,以便仅将宏应用于用户选择的某些单元格(例如,当我过滤数据时剩余的可见行)?
答案 0 :(得分:1)
选择要更改的单元格。它们不需要是连续的。
此代码循环遍历所选单元格,并将背景色更改为蓝色:
df$ARR_HR1 = as.POSIXct(as.character(df$ARR_HR), format = "%H")
transform(df,
AM_pick = as.integer(ARR_HR1 >= as.POSIXct("08:00", format = "%H:%M") &
ARR_HR1 <= as.POSIXct("09:59", format = "%H:%M")),
PM_pick = as.integer(ARR_HR1 >= as.POSIXct("16:00", format = "%H:%M") &
ARR_HR1 <= as.POSIXct("17:59", format = "%H:%M")),
midday = as.integer(ARR_HR1 >= as.POSIXct("10:00", format = "%H:%M") &
ARR_HR1 <= as.POSIXct("15:59", format = "%H:%M")))