Excel 如何创建仅在所选单元格上运行的宏?

Excel 如何创建仅在所选单元格上运行的宏?,excel,vba,Excel,Vba,到目前为止,我对宏和VBA的经验仅限于在单元格中创建一个用于着色的按钮,因此,如果这是一个可能的简单解决方法,您将不得不原谅这一点 我有一个模板表,每周都会在其中粘贴包含标题和任务的数据-我只想过滤标题,然后格式化这些行并取消过滤,使用宏自动执行 为此,我录制了以下内容:- ActiveSheet.Range("$A$4:$H$413").AutoFilter Field:=2, Criteria1:="=" ActiveWindow.SmallScroll Down:=-9

到目前为止,我对宏和VBA的经验仅限于在单元格中创建一个用于着色的按钮,因此,如果这是一个可能的简单解决方法,您将不得不原谅这一点

我有一个模板表,每周都会在其中粘贴包含标题和任务的数据-我只想过滤标题,然后格式化这些行并取消过滤,使用宏自动执行

为此,我录制了以下内容:-

    ActiveSheet.Range("$A$4:$H$413").AutoFilter Field:=2, Criteria1:="="
    ActiveWindow.SmallScroll Down:=-9
    Range("A5:L168").Select
    Range("A168").Activate
    Selection.SpecialCells(xlCellTypeVisible).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 3394611
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Selection.Font.Bold = True
    Range("I5:L168").Select
    Range("L168").Activate
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.ClearContents
    Range("C5:H168").Select
    With Selection.Font
        .Color = -13382605
        .TintAndShade = 0
    End With
    ActiveSheet.Range("$A$4:$H$413").AutoFilter Field:=2
    Range("A4").Select
但是,每次运行宏时都会格式化相同的行,因此,当将不同的数据粘贴到包含位于不同位置的标题的模板中时,宏驱动的格式化不会拾取标题行


有没有办法调整范围,以便宏仅应用于用户选择的某些单元格,例如在过滤数据时剩余的可见行?

选择要更改的单元格。它们不需要是连续的

此代码在选定单元格中循环并将背景颜色更改为蓝色:

For Each i In Selection
    i.Interior.ColorIndex = 5
Next i

第1步:第2步:为每个选择使用a或在选择时使用。第0步:确保选择的类型为Excel。范围CC@Chronocidal如是说,您不必关心选择-您可以计算出最后一行是什么,然后使用.RangeA4:H&lastRow格式化整个表格上面的代码可以工作,因为当前工作表上的选择返回一个包含选定单元格列表的范围对象。在循环中,在每个循环迭代中将一个单元对象分配给变量i。因此,您可以将在任何单元格对象上使用的任何属性或方法分配或返回给i。