【问题标题】:Excel Macro stops running as intended when assigned to a button分配给按钮时,Excel 宏停止按预期运行
【发布时间】:2022-12-05 20:42:03
【问题描述】:

我有下面的宏。当它运行时,它基本上将“主表”上的范围复制并粘贴到工作表上需要的其他地方:

Sub Macro2()
With Worksheets("Master Sheet")
Range("CC25:CE33").Select
Selection.Copy
Range("CC44").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
Range("CC21").Select
Selection.Copy
Range("CC40").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
Range("CC6:CE14").Select
Selection.Copy
Range("CC25").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
Range("CC2").Select
Selection.Copy
Range("CC21").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
End With 
End Sub 

宏按预期运行。我想将它分配给不同工作表上的按钮(“Summary_QC”)。当我这样做时,宏会运行但由于某种原因它使用“Summary_QC”工作表而不是“主工作表”上的范围,尽管我说明了 With Worksheets(“主工作表”)。

任何想法我的问题可能是什么,以及可能的解决方案?

【问题讨论】:

  • 您有一个 With 语句,但没有在您的 Range 对象上使用它....使用 .Range 使其使用 With 而不是 ActiveSheet
  • 另外,考虑使用其他方式复制数据。选择/复制/粘贴速度慢且容易出错,请参阅stackoverflow.com/a/10717999/1490783 了解替代方案。

标签: excel vba


【解决方案1】:

你能复制你的文件并测试以下内容吗?

Sub Macro2()

Application.ScreenUpdating = False

Dim wb As Workbook
Dim wsMaster As Worksheet, wsCopyTo As Worksheet

Set wsMaster = wb.Sheets("Master Sheet")
Set wsCopyTo = wb.Sheets("The sheet name to be copied")

'Copy
wsMaster.Activate
wsMaster.Range("CC25:CE33").Copy

'Paste
wsCopyTo.Activate
wsCopyTo.Range("CC44").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False

'Copy
wsMaster.Activate
wsMaster.Range("CC21").Copy

'Paste
wsCopyTo.Activate
wsCopyTo.Range("CC40").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
    
'Copy
wsMaster.Activate
wsMaster.Range("CC6:CE14").Copy

'Paste
wsCopyTo.Activate
wsCopyTo.Range("CC25").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False

'Copy
wsMaster.Activate
wsMaster.Range("CC2").Copy

'Paste
wsCopyTo.Activate
wsCopyTo.Range("CC21").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False

Application.ScreenUpdating = True
End Sub

【讨论】:

    猜你喜欢
    • 2012-09-04
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2020-07-21
    相关资源
    最近更新 更多