Excel 2013 VBA使用激活和选择的替代方法

Excel 2013 VBA使用激活和选择的替代方法,excel,vba,Excel,Vba,因此,我在这里的另一篇文章中介绍了如何避免使用Select and Activate: 但是,另一篇文章仍然没有提到如何避免在某些VBA代码中使用Activate或Select,如下面的示例所示: ThisWorkbook.Sheets("Data").Activate ThisWorkbook.Sheets("Data").Select Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select With Sele

因此,我在这里的另一篇文章中介绍了如何避免使用Select and Activate:

但是,另一篇文章仍然没有提到如何避免在某些VBA代码中使用Activate或Select,如下面的示例所示:

ThisWorkbook.Sheets("Data").Activate
ThisWorkbook.Sheets("Data").Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
With Selection.Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.149998474074526
    .PatternTintAndShade = 0
End With
我需要找出如何避免使用.Activate,以及如何避免使用.Select,因为此代码在这两个方面都给了我错误

这些错误是在我从Excel 2010升级到Excel 2013后开始出现的


请帮忙

关键是始终以如下方式使用完整参考:

ExcelFile.sheetinfle.CellOrRangeOnSheet.PropertyOfSaidCellOrRange=something

如果这样做,则不必首先选择任何内容,但可以直接寻址单元格或范围的属性(无论是其值、内部颜色还是其他内容)

通过以上步骤,您的代码基本上转换为以下内容:

With ThisWorkbook.Sheets("Data")
    With .Range(.Range("A1"), .Range("A1").End(xlToRight)).Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.149998474074526
        .PatternTintAndShade = 0
    End With
End With
请注意,您的代码只需要在两者之间进行
选择
,因为每当您无法明确引用某个内容时,就会使用当前活动的或选定的单元格。如果每次都明确完整地声明文件、工作表、单元格和范围,则不必再选择它们,因为VBA不必假定
range(Selection,Selection.End(xlToRight))。select
指的是
ActiveWorkbook.ActiveWorksheet.range…..等。