1

Я пытаюсь создать рабочую книгу, которая создает новую страницу и помещает совокупную сумму из двух ячеек, чтобы добавить к новым итогам, введенным на новой странице. Мне удалось создать новую страницу, но я не могу определить код для переноса совокупного итога на следующую страницу. Сумма на каждой странице указана в J22, совокупная сумма для этой суммы в K22, а другая сумма в J32, совокупная сумма в K32.

Вот код, который у меня есть для первой части (Добавить новый день):

Function NewShtName(NewDate As Date) As String
Dim Mon As String

Select Case Month(NewDate)
Case 1: Mon = "Jan"
Case 2: Mon = "Feb"
Case 3: Mon = "Mar"
Case 4: Mon = "Apr"
Case 5: Mon = "May"
Case 6: Mon = "Jun"
Case 7: Mon = "Jul"
Case 8: Mon = "Aug"
Case 9: Mon = "Sep"
Case 10: Mon = "Oct"
Case 11: Mon = "Nov"
Case 12: Mon = "Dec"
End Select

NewShtName = Mon & Day(NewDate)
End Function

Sub Create_New_Day()
'This adds a new day to the Daily Report
Dim NewDay As Integer
Dim Sht2Name As String
Dim NewName As String
Dim ThisDate As Date
Dim Temp As String
Dim DailyID As Integer


ThisDate = ActiveSheet.Range("J2")
DailyID = ActiveSheet.Range("K47")

If ActiveSheet.Range("J2") = "" Then
Ans2 = MsgBox("There is no date on the Report" & Chr(13) _
       & "Report for sheet " & ActiveSheet.Name & ".", vbInformation, "Company Name")
Exit Sub
End If

NewName = NewShtName(ThisDate + 1)

For Sht = 2 To Sheets.Count
If Sheets(Sht).Name = NewName Then
    Ans1 = MsgBox("A sheet with the name " & NewName & " already exists." & Chr(13) _
        & Chr(13) & "Check to make sure that the sheet names" & Chr(13) _
        & "correspond to the dates on the dailies.", vbExclamation, "Company Name")
    Exit Sub
End If

If Sheets(Sht).Range("J2") = ThisDate + 1 Then
    Ans1 = MsgBox("Sheet " & Sheets(Sht).Name & " already has the date " & ThisDate + 1 & " on it." & Chr(13) _
    & Chr(13) & "A new day will not be added.", vbExclamation, "Company Name")
    Exit Sub
End If
Next Sht


ActiveSheet.Copy After:=ActiveSheet

NewDay = Sheets.Count

Sheets(NewDay).Range("J2") = ThisDate + 1
Sheets(NewDay).Name = NewName

Sht2Name = Sheets(2).Name

Sheets(NewDay).Range("K47") = DailyID + 1


With Sheets(NewDay)    'clears previous days comments

Range("C6:K11").Select
Selection.ClearContents
Range("C14:K19").Select
Selection.ClearContents
Range("C24:K29").Select
Selection.ClearContents
Range("C33:K38").Select
Selection.ClearContents
Range("C41:K46").Select
Selection.ClearContents
Range("D22:H22").Select
Selection.ClearContents
Range("G32:H32").Select
Selection.ClearContents

End With

End Sub

1 ответ1

0

Идея, подсказка для вас, ПРИМЕЧАНИЕ, НЕПРОВЕРЕННЫЙ КОД.

NewDay = Sheets.Count
cmlSum=0
for sht=0 to NewDay
  cmlSum=Sheets(sht).Range("J22")+cmlSum
  Sheets(sht).Range("K22")=cmlSum
next

... и вам нужно исправить любые ошибки, так как Sht2Name = Sheets(2).Name по крайней мере, не то, что вы собираетесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .