Vba 格式化宏不能在所有工作表上工作

Vba 格式化宏不能在所有工作表上工作,vba,excel,Vba,Excel,下面是我处理格式化生成的输出的部分代码。因此,简而言之,我的宏从各种来源提取数据,进行比较,并在多个工作表中生成市场差异和赶超等统计数据。我需要它做的是将所有工作表中的一系列单元格格式化为“百分比”。所发生的情况是,格式仅在生成的第一个工作表中应用,而不在后续工作表中应用。格式化为“逗号”的代码部分在所有工作表上都可以正常工作,但在百分比上不能。 我真的不确定问题出在哪里。我试过调整,但没有成功。我真的时间紧迫,需要这项工作尽快,所以我提前道歉,如果这个问题已经存在。 PFB代码段: Activ

下面是我处理格式化生成的输出的部分代码。因此,简而言之,我的宏从各种来源提取数据,进行比较,并在多个工作表中生成市场差异和赶超等统计数据。我需要它做的是将所有工作表中的一系列单元格格式化为“百分比”。所发生的情况是,格式仅在生成的第一个工作表中应用,而不在后续工作表中应用。格式化为“逗号”的代码部分在所有工作表上都可以正常工作,但在百分比上不能。 我真的不确定问题出在哪里。我试过调整,但没有成功。我真的时间紧迫,需要这项工作尽快,所以我提前道歉,如果这个问题已经存在。 PFB代码段:

ActiveWorkbook.Sheets.Select
Range(Cells(100, 2), Cells(142, MarketRangeColumn + 10)).Select
Selection.Style = "Comma"
Selection.numberformat = "_(* #,##0.0_);_(* (#,##0.0);_(* ""-""??_);_(@_)"
Selection.numberformat = "_(* #,##0_);_(* (#,##0);_(* ""-""??_);_(@_)"
Range(Cells(143, 2), Cells(146, MarketRangeColumn + 10)).Select
Selection.Style = "Percent"

提前谢谢各位

当您选择所有这样的工作表时,代码无法确定要在哪个工作表上运行代码(尽管您的方法是逻辑VBA,但实际上几乎所有编程语言都要求您指定要使用的对象),因此它在选择中使用第一个

使用鼠标在图纸中移动。此外,您不需要选择某个操作,您可以使用a将代码缩短一点:

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

我建议总是使用
工作表
而不是
工作表
,除非确实需要工作表。“工作表”集合仅包含工作表,但“工作表”集合还包含图表等。因此,如果工作簿包含图表,则代码
工作表.Range
将失败,因为图表没有范围对象。