Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA在不同的工作表上运行宏_Vba_Excel - Fatal编程技术网

使用VBA在不同的工作表上运行宏

使用VBA在不同的工作表上运行宏,vba,excel,Vba,Excel,我在尝试运行宏时遇到了问题,我在“当前”表和“按钮”表中记录了宏。这是两个单独的工作表,我想在“按钮”工作表上运行宏。这是我目前掌握的代码: Sub FormatCurrentSheet() Range(Selection, Selection.End(xlToRight)).Select Selection.Font.Bold = True Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range(S

我在尝试运行宏时遇到了问题,我在“当前”表和“按钮”表中记录了宏。这是两个单独的工作表,我想在“按钮”工作表上运行宏。这是我目前掌握的代码:

Sub FormatCurrentSheet()

Range(Selection, Selection.End(xlToRight)).Select
Selection.Font.Bold = True
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.SmallScroll Down:=6
With Selection.Font
    .Name = "Calibri"
    .Size = 9
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ThemeColor = xlThemeColorLight1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontMinor
End With
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Rows.AutoFit
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Columns.AutoFit
Columns("H:H").Select
Selection.AutoFilter
ActiveWorkbook.Worksheets("Current").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Current").AutoFilter.Sort.SortFields.Add Key:= _
    Range("H1:H800"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
    :=xlSortNormal
With ActiveWorkbook.Worksheets("Current").AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub

当我单击该宏所指定的按钮时,如何更改该宏,使其在“按钮”表上工作。我觉得我可能不得不使用
ActiveSheet
。感谢您的帮助,请随时提问。

在使用
范围时,您需要指定工作表,例如:

Worksheets("SheetName").Range("A1").Select
更优雅的解决方案是将
一起使用,您可以这样使用:

With Worksheets("SheetName")
    .Range("A1").Select
    .Range("A2").Select
End With

您可以在开始时说出sheets(“Buttons”)。选择

在代码的后面,它说您正在使用“当前”工作表。
将“当前”更改为“按钮”,它应该可以正常工作

选择图纸总是会减慢VBA的速度。尽可能通过工作表名称或参考进行工作,避免在计算过程中对显示进行更改,除非您特别希望用户在计算过程中看到发生的情况。使用Application.ScreenUpdate=False可解决此问题。我只是提供了一个可能更容易实现的替代解决方案。当然不值得投反对票,因为它确实解决了问题。它可能不是最有效的。嘿,我已经将
工作表(“当前”)更改为
工作表(“按钮”)
,因为我想在“按钮”工作表上运行宏来更改“当前”工作表上的格式。但是,当我在代码中将工作表从“当前”更改为“按钮”时,它最终会格式化“按钮”工作表。我如何获取它,以便在按下“按钮”表上的按钮时格式化“当前”表?谢谢。为了澄清,您想运行宏来格式化
工作表(“当前”)
?如何运行宏-通过单击工作表上的按钮(“按钮”)