格式化所有工作表上特定的一组单元格

下面的代码没有给出任何错误,但是它并没有完全按照我希望的方式进行,我不确定我在做什么错误。

代码的目的是根据每张表上的标准将公式添加到所有表中的特定单元格中。 这部分的公式工作得很好(如果可以缩短,那么这将是一个奖金)。 不正常工作的部分是代码的格式部分。 我希望在所有的表格上都进行定义的格式,但是它只发生在第一个“摘要”表格上。

正如我前面提到的,没有错误消息,它运行良好,但只改变汇总表单元格的格式,而不是在所有表单上。

任何意见将不胜感激:)

Sub Summary() Dim wb1 As Workbook Dim Sht As Worksheet Dim Rng, Rng2 As Range Dim cell As Range Dim ws As Worksheet Set wb1 = ThisWorkbook Set Sht = wb1.Worksheets("Summary") Set Rng = Sht.Range("A6:A" & Sht.Cells(Sht.Rows.Count, "A").End(xlUp).Row) For Each cell In Rng Set ws = wb1.Sheets(cell.Text) Select Case ws.Range("A4").Value Case "Standard Kitchen Template" ws.Range("G10").Formula = "=Sum(e2167:e2182, e2179:e2885)" ws.Range("H10").Formula = "=Sum(e49:e54, e291:e296)" ws.Range("I10").Formula = "=Sum(e125:e139)" ws.Range("J10").Formula = "=Sum(e213:e286, e299:e302)" ws.Range("K10").Formula = "=Sum(e168:e208)" ws.Range("L10").Formula = "=Sum(e156:e162)" ws.Range("O10").Formula = "=Sum(e142:e148)" ws.Range("Q10").Formula = "=Sum(e14:e48, e56:e78)" Case "Standard Bathroom Template" ws.Range("G10").Formula = "=Sum(e334:e339, e347:e1050)" ws.Range("H10").Formula = "=Sum(e185:e317)" ws.Range("I10").Formula = "=Sum(e79:e97)" ws.Range("J10").Formula = "=Sum(e68:e70, e323:e326)" ws.Range("K10").Formula = "=Sum(e134:e178)" ws.Range("L10").Formula = "=Sum(e115:e132)" ws.Range("O10").Formula = "=Sum(e99:e107)" ws.Range("Q10").Formula = "=Sum(e29:e33, e41:e50)" End Select Next cell '<------The code below this line is the one not working properly For Each Sht In ThisWorkbook.Sheets With Sht Range("G10").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 12611584 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("H10").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("I10").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 49407 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("J10").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("K10").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 5296274 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("L10").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 10498160 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("O10").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent3 .TintAndShade = -0.249977111117893 .PatternTintAndShade = 0 End With Range("Q10").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark1 .TintAndShade = -0.149998474074526 .PatternTintAndShade = 0 End With End With Next End Sub 

在你的For Each Sht In ThisWorkbook.Sheets循环中,你没有使用Sht对象。 你指的是你的ActiveSheet的范围,因为你的.Select方法没有以前缀. 将范围连接到Sht对象。

例如,在您With Sht您需要将下一行设置为.Range("G10").Select不是Range("G10").Select – 注意. 在开始。

你已经在代码中使用了Sht的variables来定义wb1.Worksheets("Summary")所以最好在你的循环中使用一个不同的variables来避免混淆。

但是,总是build议不要使用Select因为这会减慢代码。 试试这个:

 For Each Sht In ThisWorkbook.Sheets With Sht With .Range("G10").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 12611584 .TintAndShade = 0 .PatternTintAndShade = 0 End With With .Range("H10").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With With .Range("I10").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 49407 .TintAndShade = 0 .PatternTintAndShade = 0 End With With .Range("J10").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With With .Range("K10").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 5296274 .TintAndShade = 0 .PatternTintAndShade = 0 End With With .Range("L10").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 10498160 .TintAndShade = 0 .PatternTintAndShade = 0 End With With .Range("O10").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent3 .TintAndShade = -0.249977111117893 .PatternTintAndShade = 0 End With With .Range("Q10").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark1 .TintAndShade = -0.149998474074526 .PatternTintAndShade = 0 End With End With Next Sht