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

Excel VBA脚本创建新工作表并相应编辑公式,vba,excel,Vba,Excel,这可能看起来很琐碎,但我无法得到任何提示,我需要做几周 我有为我创建模板的脚本。它是每日报告,因此它确实为每月的每一天创建相同的表。但是,我也需要它来更新此模板中的公式 我有两份文件。让我们称之为源和结果。SOURCE在2月的每一天都有28份工作表。A1中有一些数据。我有一个脚本,可以根据模板为每个月的每一天创建结果 但是,每个工作表每天都引用源中的相同位置,因为它只是复制带有公式的表。所以我最终得到了28张工作表的结果,其中每天的公式都引用了SOURCE 2月1日的工作表 我需要每个工作表都指

这可能看起来很琐碎,但我无法得到任何提示,我需要做几周

我有为我创建模板的脚本。它是每日报告,因此它确实为每月的每一天创建相同的表。但是,我也需要它来更新此模板中的公式

我有两份文件。让我们称之为源和结果。SOURCE在2月的每一天都有28份工作表。A1中有一些数据。我有一个脚本,可以根据模板为每个月的每一天创建结果

但是,每个工作表每天都引用源中的相同位置,因为它只是复制带有公式的表。所以我最终得到了28张工作表的结果,其中每天的公式都引用了SOURCE 2月1日的工作表

我需要每个工作表都指向各自的日期。所以2月1日的结果工作表指的是来源的2月1日。结果的2月2日是指来源的2月2日。。等等

有人能帮忙吗

这是密码

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

要回答post Excel VBA脚本的标题以创建新工作表并相应地编辑公式,请使用以下方法创建新工作表并编辑其公式:

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

不是答案而是这样;选择案例与编写以下内容时的If-so类似:

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。

请发布您的代码。更好。需要改变的公式是什么?该问题可以在For day_循环部分中解决。在ActiveSheet.Name之后,类似ActiveSheet.RangeA1.Formula=blahdiblah的内容(其中blahdiblah是动态生成的公式字符串)可以解决此问题:@BK201,blahdiblah返回的数据类型是什么;这是需要更改的公式='C:\Users\Desktop[final.xls]1.febr'$33美元。或者实际上有8个。。同样的,只是指不同的牢房有没有关于这个的提示?我已经有好几天没有在那里了,现在我发现这个问题仍然没有答案。您必须设置wrkSheet=Worksheets.AddWorksheet Name,因为工作表类型引用对象类型,您必须设置对象。谢谢。我需要回家在我的个人笔记本电脑上试一试。。我会让你知道结果的。