Excel VBA脚本来创build新工作表并相应地编辑公式

这可能看起来微不足道,但我无法得到我需要做几个星期的任何提示。

我有脚本为我创build模板。 这是每日报告,所以它创build一个月的每一天相同的表。 不过,我也需要这个来更新这个模板中的公式。

我有2个文件。 让我们称他们SOURCERESULTSSOURCE有2月28日的工作表。 A1有一些数据。 我也有一个脚本,可以根据模板创build一个月的每一天的RESULTS

然而,每张表格(每一天)都是指SOURCE的相同位置,因为它只是用公式复制表格。 所以我最终得到28个工作表,其中在每一天的公式指的是SOURCE的1.Feb表

我需要每个工作表参考相应的一天。 因此,1.Feb的结果工作表指的是SOURCE的1.Feb。 结果的2.Feb是指SOURCE的2.Feb ..等等。

谁能帮忙?

这是代码

 Private Sub Workbook_Open() Dim odpoved As Integer odpoved = MsgBox("Tento program ti pripravi prazdnu predlohu na XXX." & Chr(13) & "Pre pokracovanie stlac OK, pre ukoncenie programu alebo editaciu" & Chr(13) & "predlohy stlac Cancel!", vbOKCancel, "Welcome!") Select Case odpoved Case vbOK If odpoved = vbOK Then Call test End If Case vbCancel If odpoved = vbCancel Then MsgBox ("Proces ukonceny uzivatelom") GoTo Line2 End If End Select Line2: End Sub Sub test() ' ' Open and work Macro ' Dim selected_month As Long Dim day_count As Integer Dim day_loop As Integer Dim najdi_cestu As String najdi_cestu = ThisWorkbook.Path & "\" Application.ScreenUpdating = True 'Input Box to get the month number user wants to work with Line1: selected_month = 13 While (selected_month < 1) Or (selected_month > 12) selected_month = Val(InputBox("Zadaj poradove cislo mesiaca")) If selected_month = 0 Then Exit Sub Wend 'Script above will loop until 0 or 1 - 12 are inserted ' 'Select Case tells how many days there are in the selected month Select Case selected_month Case 4, 6, 9, 11 day_count = 30 Case 1, 3, 5, 7, 8, 10, 12 day_count = 31 Case Else day_count = 28 End Select ' For day_loop = day_count To 1 Step -1 Sheets("Template").Copy Before:=Sheets(2) ActiveSheet.Name = day_loop & "." & Left(MonthName(selected_month), 3) Next day_loop Application.DisplayAlerts = False Sheets("Template").Delete ' Auto pathfinder ActiveWorkbook.SaveAs Filename:=najdi_cestu & "Zmenový priebeh výroby " & Format(MonthName(selected_month)) & ".xlsx", FileFormat:= _ xlOpenXMLWorkbook MsgBox ("Tvoja predloha na mesiac " & Format(MonthName(selected_month)) & " bola ulozena do: " & najdi_cestu) ' manualny save 'ActiveWorkbook.SaveAs Filename:="C:\Users\pz595v\Desktop\Finalna verzia\" & Format(MonthName(selected_month)) & ".xlsx", FileFormat:= _ ' xlOpenXMLWorkbook Line3: End Sub 

不是一个答案,但就像这样; Select Case就像是一个If是这样的If ,当你写:

 Select Case odpoved Case vbOK If odpoved = vbOK Then Call test End If Case vbCancel If odpoved = vbCancel Then MsgBox ("Proces ukonceny uzivatelom") GoTo Line2 End If End Select 

你应该这样写:

 Select Case odpoved Case vbOK 'this line checks if odpoved = vbOK Call test Case vbCancel 'this line checks if odpoved = vbCancel MsgBox ("Proces ukonceny uzivatelom") GoTo Line2 End Select 

由于odpoved条件已经被Select Case检查过了。

要回答“Excel VBA脚本创build新工作表并相应地编辑公式”文章的标题,您可以创build一个新工作表并编辑其公式:

 'creates a new sheet Dim wrkSheet As Worksheet set wrkSheet = Worksheets.Add("Worksheet Name") 'changes forumula wrkSheet.cells(1, 1) = "=B1+C1"