2017-07-20 4 views
0

Ich bin neu mit MS EXCEL VBA, aber ich lese immer noch einige Blog über VBA und wie es funktioniert. Ich habe eine Idee zum Umbenennen von Excel-Tabellen, zum Deaktivieren von Zeilen und zum Hinzufügen neuer Seiten. Aber ich möchte
wissen, wie automatisch Zeile jeden Tag einzufügen, neue Blatt jeden Monat hinzufügen, und erstellen Sie neue gleiche (Standardstruktur) Arbeitsbuch jedes Jahr in MS EXCEL 2013 hinzufügen? Wie mache ich das?Automatisch generierte Arbeitsmappe mit aktuellem Datum, Monat und Jahr

Datum heute ist 1 dann morgen Excel automatisch 1 Zeile für Datum hinzufügen. Wenn der Monat Januar endet, dann Excel automatisch ein neues Blatt für Februar hinzufügen. Und es Jahr Änderungen Excel generieren gleiche Standard oder leere Arbeitsmappe mit dem aktuellen Jahr.

Die Standard-Struktur der Excel werden die Excel-Datei in https://github.com/Ailyn09/project102/blob/master/2017.xlsx

Sub Sample() 
     'Disable adding row 

     Dim I As Integer 
     Dim cbStr As String 
     Dim cbCtrl As CommandBarControl 
     Application.ScreenUpdating = False 
     For I = 1 To 2 
      If I = 1 Then 
       cbStr = "row" 
      Else 
       cbStr = "column" 
      End If 
      For Each cbCtrl In Application.CommandBars(cbStr).Controls 
       If cbCtrl.ID = 3183 Then 
        cbCtrl.Enabled = False 
       End If 
      Next 
     Next 
     Application.ScreenUpdating = True 

     'Copy Existing Sheet And Month As Name 
     ActiveSheet.Copy , Sheets(Sheets.Count) 
     ActiveSheet.Name = Month() 
    End Sub 

CURRENT CODE befindet hierher gelangt sind JEDEN MONAT eine Idee für BLATT: https://excel.tips.net/T002017_Sheets_for_Months.html

+0

Ist es Standard Strukturieren Sie, was Sie im Januar-Blatt gezeigt haben? d.h. 5 Zeilen für Daten für ein Datum und 5 weitere Zeilen für das nächste Datum und so weiter? Sie sollten auch eine Datumsspalte auf dem Blatt haben, das im aktuellen Layout fehlt. – sktneer

+0

Was möchten Sie tun, wenn Sie den Code einige Tage lang nicht ausführen und dann den Code ausführen? – jsotola

+0

@jsotola. Ich möchte die Excel-Zeile automatisch jeden Tag hinzufügen. Und wenn sich der Monat ändert, erstellt er ein neues Blatt und beginnt mit dem ersten Tag, aber der gleichen Formel mit dem Standardarbeitsblatt. Und wenn sich das Jahr ändert, sollte es eine neue Arbeitsmappe mit dem Standardformular erstellen. zB (jetzt ist 2017, Workbook-Name sollte 2017, und wir sollten Blatt Januar bis Juli haben, dann Juli 24 als Datum haben. Das Datum für Juli ist 1-31 dann das letzte Datum, das wir für das Blatt Juli sehen sollten 1-31 die SUM-Zeile, die alle hinzufügen, und im nächsten Jahr 2018 wird automatisch die neue Arbeitsmappe 2018 erstellt und dann mit Jan. – Ailyn

Antwort

0

Hier ist ein Anfang ... nur etwas Code ausprobieren ... erstellt Monat Workshe et, wenn es nicht existiert ... fügt dann Daten in das Arbeitsblatt

ich habe für ein paar Tage weg zu gehen ... kommen mit etwas mehr als ich

zurück
Sub testDate() 

    Debug.Print Format(Now(), "d") 
    Debug.Print Format(Now(), "dd") 
    Debug.Print Format(Now(), "ddd") 
    Debug.Print Format(Now(), "m") 
    Debug.Print Format(Now(), "mm") 
    Debug.Print Format(Now(), "mmm") 
    Debug.Print Format(Now(), "mmmm") 
    Debug.Print Format(Now(), "yy") 
    Debug.Print Format(Now(), "yyyy") 

    Debug.Print Month(Now) 
    Debug.Print MonthName(Month(Now)) 

    Dim ws As Sheets 
    Set ws = ActiveWorkbook.Worksheets 

    Dim nam As String 
    nam = Format(Now(), "mmmm")      ' month name in local language 

    Dim sh As Worksheet 
    If Evaluate("ISREF('" & nam & "'!A1)") Then  ' sheet name exists ? 
     Set sh = ws(nam) 
    Else 
     Set sh = ws.Add(after:=ws(ws.Count)) 
     sh.Name = nam 
    End If 

' !!!!! use one of the sections below, but NOT both !!!!! 
' -------------------------------------------------------------------------------------- 
    Dim lastCell As Range 
    Set lastCell = sh.Range("A" & sh.Rows.Count).End(xlUp)     ' last used cell in column A 
    lastCell.Offset(1).Value = Format(Now(), "to\da\y i\s t\he dd of mmmm") ' some of the characters must be escaped 
' -------------------------------------------------------------------------------------- 
' this section corrupts the lastCell value that is used above 

' if fixed number of rows per day, then put daily data in particular rows 

' Dim day As Integer 
' day = Format(Now(), "d") 
' sh.Range("A1").Offset(day).Value = Format(Now(), "to\da\y i\s t\he dd of mmmm") 
' -------------------------------------------------------------------------------------- 

End Sub 
+0

Guter Code, aber es gibt die Möglichkeit für den Benutzer, das Datum mit Ihrem Code zu duplizieren. – Ailyn

Verwandte Themen