这看起来似乎微不足道,但我几周都无法得到任何我需要做的提示。
我有为我创建模板的脚本。它是每日报告,所以它确实为每个月的每一天创建了相同的表。但是,我还需要这个来更新此模板中的公式。
我有2个文件。让我们称他们为SOURCE
和RESULTS
。 SOURCE
每月有2个工作表。 A1
中有一些数据。我有一个脚本,可以根据模板为每月的每一天创建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
答案 0 :(得分:0)
要回答帖子标题“Excel VBA脚本以创建新工作表并相应地编辑公式”,您可以创建新工作表并编辑其公式:
'creates a new sheet
Dim wrkSheet As Worksheet
set wrkSheet = Worksheets.Add("Worksheet Name")
'changes forumula
wrkSheet.cells(1, 1) = "=B1+C1"
答案 1 :(得分:0)
不是答案,而是像这样; Select Case
就像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
。