excel - 如何在多个范围内调用函数
问题描述
我有一个格式化范围的函数,但它似乎只是格式化我选择的第一个范围。
我试过先选择范围然后格式化,但它会延长我的代码。
Sub Numbers()
Call format(Range(Cells(4, "A"), Cells(2 + i - j, "AA")))
Call format(Range(Cells(4, "C"), Cells(4 + i - j, "F")))
Call format(Range(Cells(4, "G"), Cells(4 + i - j, "J")))
End Sub
Sub format(R As Range)
With R
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.weight = xlMedium
End With
End With
End Sub
我想格式化所有范围,但它只格式化第一个范围,即:仅格式化 ->Range(Cells(4, "A"), Cells(2 + i - j, "AA"))
解决方案
您可以在主子中循环并调用format
子 x 次或修改format
子以使用ParamArray
. format
这将允许您在一行中将任意数量的范围传递给子
Sub formatRange(ParamArray rngs() As Variant)
Dim i As Long
For i = 0 To UBound(rngs)
If TypeName(rngs(i)) = "Range" Then
With rngs(i)
Debug.Print i, .Address, TypeName(rngs(i))
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
End With
End If
Next i
End Sub
Sub test()
formatRange Range("A1"), Range("A2"), Range("A3")
formatRange Range("B5"), Range("I6")
' etc. etc....
End Sub
推荐阅读
- sparql - 使用 Hermit 和 ONT-API 和 SPARQL 查询
- javascript - 如何包装自定义 json:api 客户端并使调用流畅和异步(非 ES6)
- python - 有谁知道如何在 python 中将随机图与旅行商问题算法放在一起?
- r - r 中 WDI、wb_stats SP.POP.TOTL 指标的问题
- python-3.x - 如何使用python将iso 8859-1转换为简单字母
- logging - 多个文件的日志级别上的 Serilog.Expressions SubLogger
- mql5 - 如何在 MQL5 中进行日期时间运算?
- excel - 如何在表格中查找每个字符串并仅显示一次?
- r - 解释 catnetwork 对象的“catnet”包的 cnProb 输出
- java - Spring JpaSpecificationExecutor 在第一次查询中太慢了