使用VBA(Excel)在不同的工作表上运行宏
我想制作一张具有不同宏按钮的工作表。该工作表名为按钮。此工作表中的宏按钮链接到应在不同工作表上运行的宏。我试图为工作表1制作一个宏按钮。库存与需求:使用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
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上工作。库存与需求。但当我让它从另一张纸上运行时,它不会。这让我很困惑。