2017-07-20 47 views
0

我是MS EXCEL VBA的新成員,但我仍然閱讀了一些關於VBA的博客以及它如何工作。我想到了重命名Excel工作表,禁用行和添加新工作表。但我想知道
如何每天自動插入行,每月添加新表,並且每年在MS EXCEL 2013中添加新的相同(默認結構)工作簿?我怎麼做?使用當前日期,月份和年份自動生成的工作簿

今天的日期是1,那麼明天excel會自動爲日期添加1行。如果1月份的月份結束,那麼Excel將自動爲2月份添加新表格。而且它每年的變化都會在當年生成相同的默認或空工作簿。

了Excel,Excel文件的默認構造位於 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 

有一個想法SHEET每個月的位置: https://excel.tips.net/T002017_Sheets_for_Months.html

+0

難道是默認結構你在1月份表格上顯示的內容?即5行用於一個日期的數據並且爲下一個日期插入另外5行等等?您應該在當前佈局中缺少的工作表上也有一個日期列。 – sktneer

+0

如果您幾天沒有運行代碼,然後運行代碼,您希望發生什麼? – jsotola

+0

@jsotola。我想每天自動添加excel行。如果月份發生變化,它將創建新工作表並從第一天開始,但與默認工作表相同。如果年份發生變化,它應該使用默認形式創建新的工作簿。例如(現在是2017年,工作簿名稱應該是2017年,而且我們應該在一月到7月之間,然後7月份有24個日期.7月份的日期是1-31,那麼我們應該看到7月份的最後一個日期應該是1-31添加所有的SUM行,明年是2018年,它會自動創建新的工作簿2018,然後開始到1月 – Ailyn

回答

0

這裏是一個開始...只是嘗試一些代碼...創建月份工作如果等不存在...然後將數據添加到工作表

我必須走了幾天......會拿出更多的東西,當我回來

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

不錯的代碼,但有可能用戶使用您的代碼複製日期。 – Ailyn

相關問題