vba - Excel VBA - 是否可以通过使用矩阵为范围的每个单元格设置属性?

标签 vba excel matrix cells

我最近发现可以使用单个命令在范围的每个单元格内设置值,例如:

Worksheet.Range(Worksheet.Cells(Row1, Column1), Worksheet.Cells(Row2, Column2)) = MyMatrix

其中 MyMatrix 是一个二维矩阵,维度为:Row2-Row1 和 Column2-Column1。

显然,如果我对每个单元格应用相同的属性(假设 .Font.Bold - 当 MyMatrix 是 bool 矩阵时),它不会不起作用:

Worksheet.Range(Worksheet.Cells(Row1, Column1), Worksheet.Cells(Row2, Column2)).Font.Bold = MyMatrix

上面的命令使整个范围“粗体闪烁”几分之一秒,然后什么也没有发生。怎么会这样?

我绝对希望避免 For 循环,因为在我的代码中它花费的时间太长。

更新:即使我用字符串 "normal""bold" 填充 MyMatrix ,然后写入:

Worksheet.Range(Worksheet.Cells(Row1, Column1), Worksheet.Cells(Row2, Column2)).Font.FontStyle = MyMatrix

我也尝试过(但不起作用):

Worksheet.Range(Worksheet.Cells(Row1, Column1), Worksheet.Cells(Row2, Column2)).Cells.Font.FontStyle = MyMatrix

最佳答案

正如其他答案所说,.Font属性只能设置为标量值,而不是矩阵,但它可以一次设置批量范围。

解决这个问题的一种方法是构造一个 String ,其中包含对所有应具有某种字体的单元格的单元格引用,而不是一个 True 矩阵和 False 等。然后只需更改该范围的字体即可。例如

Dim strRange as String
strRange = "A1,B7,C3,D1"    ' set this in a loop or whatever
Worksheet.Range(strRange).Font.Bold = True

关于vba - Excel VBA - 是否可以通过使用矩阵为范围的每个单元格设置属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42790041/

相关文章:

javascript - SVG上的多重变换矩阵,获取光标点

t-sql - 如何在 SQL 中引用没有标题的 Excel 列

excel - VBA EXCEL - NUMBERFORMAT 不起作用,但 FORMAT FUNCTION 起作用

java - 使用 apache poi 合并和对齐中心单元格

c# - 通过 OleDb c# 在 Excel 中插入回车符

algorithm - 如何最佳地将元素放置在矩阵中,以便与其他元素的距离最小?

windows - 获取按钮的类名

vba - 模仿bdh函数填充向下

python - Pandas read_excel 干扰 na_values 和转换器错误?

java - 数独需要帮助构建可见矩阵