格式化宏不适用于所有工作表

时间:2017-06-07 12:45:51

标签: excel vba excel-vba

以下是我的代码的一部分,用于处理格式化生成的输出。因此,简单地说,我的宏从各种来源提取数据,比较它们并在多个工作表中生成市场差异和追赶等统计数据。我需要做的是将一系列单元格格式化为" Percentage"在所有工作表中。发生的事情是格式化仅在生成的第一个工作表中应用,而不是在后续工作表中。格式化为"逗号"的代码部分在所有工作表上工作正常但不是百分比。 我不确定问题是什么。我尝试过调整但没有成功。我真的很紧迫,需要尽快开始工作,所以如果这个问题已经存在,我会提前道歉。 PFB代码段:

10px

先谢谢你们!

1 个答案:

答案 0 :(得分:0)

当您选择所有表格时,代码无法确定您希望代码运行在哪个工作表上(虽然您的方法是逻辑VBA只是不起作用,实际上几乎所有编程语言都需要您指定要使用的对象),因此它使用选择中的第一个。

使用for loop移动工作表。此外,您无需选择要对其执行操作的内容,您可以使用With block来缩短代码:

For s = 1 To Sheets.Count

    With Sheets(s).Range(Cells(100, 2), Cells(142, MarketRangeColumn + 10))
        .Style = "Comma"
        .NumberFormat = "_(* #,##0.0_);_(* (#,##0.0);_(* ""-""??_);_(@_)"
        .NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""??_);_(@_)"
    End With

    Sheets(s).Range(Cells(143, 2), Cells(146, MarketRangeColumn + 10)).Style = "Percent"

Next s