在另一个工作表中使用Excel宏

时间:2016-05-03 11:46:40

标签: excel vba excel-vba ms-office

我想创建一个菜单表,从中我可以为不同的表启动不同的宏。但是,当我开始时,代码不起作用是从差异表。当我从“1. Stock& Demand”表单

启动代码时,代码才能正常工作
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

'Kopiert die letzten 3 Spalten des Tabellenblattes'
With Sheets("1. Stock & Demand")
Lastcol = Cells(1, Columns.Count).End(xlToLeft).Column
Columns(Lastcol - 1).Resize(, 1).Select
Selection.Copy

'Wählt die erste freie Spalte aus und fügt das zuvor kopierte ein'
Sheets("1. Stock & Demand").Range("F3:ZZ3").End(xlToRight).Offset(-2, 1).Select
ActiveSheet.Paste

'Aktuelles Datum einfügen'
Sheets("1. Stock & Demand").Range("F3:ZZ3").End(xlToRight).Offset(-1, 0).Select
Selection.Value = Date

'Wählt die zuvor kopierten Spalten aus und nimmt die Formeln raus'
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

提前致谢&问候

1 个答案:

答案 0 :(得分:3)

如评论中所示,至少有两个问题

1)当你说"我想创建一个Home-Sheet,我可以在那里为不同的表开始不同的宏。"你给人的印象是你想要使用代码模块来实现" Home-Sheet"包含宏。大多数宏不属于这种表单模块。相反,它们属于标准代码模块。 {/ 1}}在VBA编辑器中将其放在那里。

2)像

这样的行并不重要
Insert

属于Lastcol = Cells(1, Columns.Count).End(xlToLeft).Column rather than Lastcol = Cells(1, Columns.Count).End(xlToLeft).Column 语句的范围。除非您在With前加一个点,否则VBA将在活动工作表的上下文中解释Cells。相反,使用:

Cells

类似评论适用于Lastcol = .Cells(1, Columns.Count).End(xlToLeft).Column rather than Lastcol = Cells(1, Columns.Count).End(xlToLeft).Column