Excel 如何基于非空列中的单元格设置单元格格式?
这真的很简单,但我是VBA新手 如果列B中的单元格不是空的,我想用灰色填充和边框格式化列J和K中的单元格(还没有到K)。我想在工作簿中的每个工作表中都这样做Excel 如何基于非空列中的单元格设置单元格格式?,excel,vba,Excel,Vba,这真的很简单,但我是VBA新手 如果列B中的单元格不是空的,我想用灰色填充和边框格式化列J和K中的单元格(还没有到K)。我想在工作簿中的每个工作表中都这样做 Sub forEachWs() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets Call Format_ForecastingTemplate(ws) Next End Sub Sub Format_Forecasting
Sub forEachWs()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Call Format_ForecastingTemplate(ws)
Next
End Sub
Sub Format_ForecastingTemplate(ws As Worksheet)
Dim cell As Range
Dim N As Long
Dim i As Long
N = Cells(Rows.Count, "B").End(xlUp).Row
For i = 1 To N
If cell <> "" Then
With ActiveSheet.Range(Cells("J"), cell.Row)
.ThemeColor = xlThemeColorDark1
.BorderAround LineStyle:=xlContinuous
End With
End If
Next
End Sub
Sub-forEachWs()
将ws设置为工作表
对于ActiveWorkbook.Worksheets中的每个ws
调用格式\u ForecastingTemplate(ws)
下一个
端接头
子格式\u ForecastingTemplate(ws-As工作表)
暗淡单元格作为范围
长
我想我会坚持多久
N=单元格(Rows.Count,“B”)。结束(xlUp)。行
对于i=1到N
如果是单元格“”,则
使用ActiveSheet.Range(单元格(“J”)、单元格.Row)
.ThemeColor=xlThemeColorDark1
.边框线型:=xlContinuous
以
如果结束
下一个
端接头
给我一个错误的行是如果单元格为“”,则为。我想这是因为我没有引用B列中的单元格变量
错误为:对象变量或未设置块变量
像这样:
我将其更改为单个宏,并对原始代码进行了更改
Sub Format_ForecastingTemplate()
Dim cell As Range
Dim N As Long
Dim i As Long
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
N = Cells(Rows.Count, "B").End(xlUp).Row
For i = 1 To N
'Looks at B to check if empty
If ws.Cells(i, 2).Value <> "" Then
'changes cells J to color and border
ws.Cells(i, 10).Borders.LineStyle = xlContinuous
ws.Cells(i, 10).Interior.ThemeColor = xlThemeColorDark1
ws.Cells(i, 10).Interior.TintAndShade = -0.25
End If
Next i
Next ws
End Sub
子格式\u ForecastingTemplate()
暗淡单元格作为范围
长
我想我会坚持多久
将ws设置为工作表
对于ActiveWorkbook.Worksheets中的每个ws
N=单元格(Rows.Count,“B”)。结束(xlUp)。行
对于i=1到N
'查看B以检查是否为空
如果ws.Cells(i,2).Value为“”,则
'将单元格J更改为颜色和边框
ws.Cells(i,10).Borders.LineStyle=xlContinuous
ws.Cells(i,10).Interior.ThemeColor=xlThemeColorDark1
ws.Cells(i,10).Interior.TintAndShade=-0.25
如果结束
接下来我
下一个ws
端接头
可以更改列号,也可以为列K添加新行
希望这能有所帮助,请友好地留下反馈。:) 在Cells()之前添加ws.
,以确保它正在使用ws
上的Cells()
。否则,它将使用ActiveSheet。另外,也将ActiveSheet
更改为ws
,这样它在循环中使用ws
,而不是使用任何活动表。不使用条件格式有什么原因吗?也要使用cell.valueAh,也要使用Cells(“J”)
需要是一个数字…ws.Cells(“J1”).Value
例如。@controlnetic.nomad条件格式在这种情况下会更好吗?作为最佳实践?我没有完全使用您的代码,但它给了我一些想法。谢谢