Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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(Excel)在不同的工作表上运行宏_Vba_Excel_Ms Office - Fatal编程技术网

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

使用VBA(Excel)在不同的工作表上运行宏,vba,excel,ms-office,Vba,Excel,Ms Office,我想制作一张具有不同宏按钮的工作表。该工作表名为按钮。此工作表中的宏按钮链接到应在不同工作表上运行的宏。我试图为工作表1制作一个宏按钮。库存与需求: Sub NeuerTag() 'Abfrage ob der Tag eingefügt werden soll, No = QUIT' If MsgBox("Möchtest du die Tabelle vorbereiten?", vbYesNo) = vbNo Then Exit Sub 'Copies the last three c

我想制作一张具有不同宏按钮的工作表。该工作表名为按钮。此工作表中的宏按钮链接到应在不同工作表上运行的宏。我试图为工作表1制作一个宏按钮。库存与需求

Sub NeuerTag()

'Abfrage ob der Tag eingefügt werden soll, No = QUIT'
If MsgBox("Möchtest du die Tabelle vorbereiten?", vbYesNo) = vbNo Then Exit Sub

'Copies the last three coloumns of the Worksheet 1. Stock & Demand'
With Sheets("1. Stock & Demand")
Lastcol = .Cells(1, Columns.Count).End(xlToLeft).Column
Columns(Lastcol - 1).Resize(, 1).Select
Selection.Copy

'Selects the first empty cell in 1. Stock & Demand and pastes'
Sheets("1. Stock & Demand").Range("F3:ZZ3").End(xlToRight).Offset(-2, 1).Paste

'Pastes the Today()'
Sheets("1. Stock & Demand").Range("F3:ZZ3").End(xlToRight).Offset(-1, 0).Select
Selection.Value = Date

'Paste Special - Values'
With Sheets("1. Stock & Demand")
Lastcol = .Cells(1, Columns.Count).End(xlToLeft).Column
Columns(Lastcol - 3).Resize(, 1).PasteSpecial Paste:=xlPasteValues

End With
End With

End Sub
现在我有一个问题。每次我制作一个宏按钮并让它运行时,它只在工作表按钮中执行其工作,而不是在工作表中执行,我希望它工作


我不得不说我不太擅长编码,所以请像我五岁一样给我解释;-)

必须为宏指定工作表名称。例如,您可以尝试以下方法:

 Workbooks("Your_worksheet_name_here").Sheets("1. Stock & Demand").Range("F3:ZZ3").End(xlToRight).Offset(-2, 1).Paste
通常情况下,为了保持清楚,我会这样做:

 Set targetSheet = Workbooks("Your_worksheet_name_here").Sheets("1. Stock & Demand")
 targetSheet.Range("F3:ZZ3").End(xlToRight).Offset(-2, 1).Paste

必须为宏指定工作表名称。例如,您可以尝试以下方法:

 Workbooks("Your_worksheet_name_here").Sheets("1. Stock & Demand").Range("F3:ZZ3").End(xlToRight).Offset(-2, 1).Paste
通常情况下,为了保持清楚,我会这样做:

 Set targetSheet = Workbooks("Your_worksheet_name_here").Sheets("1. Stock & Demand")
 targetSheet.Range("F3:ZZ3").End(xlToRight).Offset(-2, 1).Paste

一些次要的东西-在你的
语句中,你是错误的编码。注意这一点。如果将其放错位置/忽略,则结果将显示在不正确的选项卡中

比如说

With Sheets("1. Stock & Demand")
    Lastcol = .Cells(1, Columns.Count).End(xlToLeft).Column
    Columns(Lastcol - 3).Resize(, 1).PasteSpecial Paste:=xlPasteValues
End With
应该是

With Sheets("1. Stock & Demand")
    Lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    .Columns(Lastcol - 3).Resize(, 1).PasteSpecial Paste:=xlPasteValues
End With
而这个

With Sheets("1. Stock & Demand")
    Lastcol = .Cells(1, Columns.Count).End(xlToLeft).Column
    Columns(Lastcol - 1).Resize(, 1).Select
    Selection.Copy

'Selects the first empty cell in 1. Stock & Demand and pastes'
    Sheets("1. Stock & Demand").Range("F3:ZZ3").End(xlToRight).Offset(-2, 1).Paste

'Pastes the Today()'
    Sheets("1. Stock & Demand").Range("F3:ZZ3").End(xlToRight).Offset(-1, 0).Select
    Selection.Value = Date
应该是

With Sheets("1. Stock & Demand")
    Lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    .Columns(Lastcol - 1).Resize(, 1).Copy

'Selects the first empty cell in 1. Stock & Demand and pastes'
    .Range("F3:ZZ3").End(xlToRight).Offset(-2, 1).Paste

'Pastes the Today()'
    .Range("F3:ZZ3").End(xlToRight).Offset(-1, 0).Value = Date

一些次要的东西-在你的
语句中,你是错误的编码。注意这一点。如果将其放错位置/忽略,则结果将显示在不正确的选项卡中

比如说

With Sheets("1. Stock & Demand")
    Lastcol = .Cells(1, Columns.Count).End(xlToLeft).Column
    Columns(Lastcol - 3).Resize(, 1).PasteSpecial Paste:=xlPasteValues
End With
应该是

With Sheets("1. Stock & Demand")
    Lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    .Columns(Lastcol - 3).Resize(, 1).PasteSpecial Paste:=xlPasteValues
End With
而这个

With Sheets("1. Stock & Demand")
    Lastcol = .Cells(1, Columns.Count).End(xlToLeft).Column
    Columns(Lastcol - 1).Resize(, 1).Select
    Selection.Copy

'Selects the first empty cell in 1. Stock & Demand and pastes'
    Sheets("1. Stock & Demand").Range("F3:ZZ3").End(xlToRight).Offset(-2, 1).Paste

'Pastes the Today()'
    Sheets("1. Stock & Demand").Range("F3:ZZ3").End(xlToRight).Offset(-1, 0).Select
    Selection.Value = Date
应该是

With Sheets("1. Stock & Demand")
    Lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    .Columns(Lastcol - 1).Resize(, 1).Copy

'Selects the first empty cell in 1. Stock & Demand and pastes'
    .Range("F3:ZZ3").End(xlToRight).Offset(-2, 1).Paste

'Pastes the Today()'
    .Range("F3:ZZ3").End(xlToRight).Offset(-1, 0).Value = Date

我是否必须使用
工作簿(“您的工作表”\u此处的名称”)
?这是同一个工作簿,但不同的工作表<代码>targetSheet.Range(“F3:ZZ3”).End(xlToRight)。偏移量(-2,1)。粘贴会产生错误。我误解了您的问题,请看OldDuugh的回答。我认为他关于代码中的点的观点是正确的。我是否必须使用
工作簿(“您的工作表”\u这里的名称”)
?这是同一个工作簿,但不同的工作表<代码>targetSheet.Range(“F3:ZZ3”).End(xlToRight)。偏移量(-2,1)。粘贴会产生错误。我误解了您的问题,请看OldDuugh的回答。我认为他关于代码中的点的观点是正确的。谢谢!但是现在行
”选择1中的第一个空单元格。库存与需求并粘贴.Range(“F3:ZZ3”).End(xlToRight).偏移量(-2,1).粘贴给我一个错误。
.Range(“F3:ZZ3”).End(xlToRight)
计算为单元格
XFD3
,是工作表中的最后一列
.Offset(-2,1)
尝试向上移动两行,然后向右移动一行-在工作表的右侧。我不知道你想做什么-所以我不能告诉你一个解决方案。这就是宏应该做但没有做的。Visual Basic向我显示一条黄线:/。运行时错误“438”:对象不正确支持此方法。宏就是这样做的。您试图粘贴到一个不存在的单元格,因此它会抛出一个错误。黄线只是告诉你错误在哪里。但是这个宏在1上工作。库存与需求。但当我让它从另一张纸上运行时,它不会。这让我很困惑,谢谢!但是现在行
”选择1中的第一个空单元格。库存与需求并粘贴.Range(“F3:ZZ3”).End(xlToRight).偏移量(-2,1).粘贴给我一个错误。
.Range(“F3:ZZ3”).End(xlToRight)
计算为单元格
XFD3
,是工作表中的最后一列
.Offset(-2,1)
尝试向上移动两行,然后向右移动一行-在工作表的右侧。我不知道你想做什么-所以我不能告诉你一个解决方案。这就是宏应该做但没有做的。Visual Basic向我显示一条黄线:/。运行时错误“438”:对象不正确支持此方法。宏就是这样做的。您试图粘贴到一个不存在的单元格,因此它会抛出一个错误。黄线只是告诉你错误在哪里。但是这个宏在1上工作。库存与需求。但当我让它从另一张纸上运行时,它不会。这让我很困惑。