iT邦幫忙

0

區間日期生成VBA

小弟正在自學VBA,但現時都是用錄製的方式進行.只能做非常簡易的進作.
現在想做一個只輸入開始和結束日期的VBA可以生成區間的日期和相關的備註作紀錄.
詳情如下
我想在工作表1中輸入
https://ithelp.ithome.com.tw/upload/images/20201020/20122398zsCJgvMb58.png

利用VBA生成並複製到工作表2的紀錄如下圖
https://ithelp.ithome.com.tw/upload/images/20201020/20122398KDJkcfZvW9.png

各位大大有辦法嗎?我真的想不到.

你會進入VBA編輯器跟編寫VBA嗎?或是只會錄製不懂程式碼?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
paicheng0111
iT邦大師 5 級 ‧ 2020-10-21 09:01:49
最佳解答
Sub listLeave()
    Dim d As Date, startDate As Date, endDate As Date
    Dim myId As Long, myItem As String, myNote As String
    Dim myRng As Range, rng As Range
    
    With Worksheets("工作表1").Range("A1").CurrentRegion
        set myRng = .Offset(1).Resize(.Rows.Count - 1, 1)
    End With
    
    For Each rng in myRng
        myId = rng
        startDate = rng.Offset(, 1)
        endDate = rng.Offset(, 2)
        myItem = rng.Offset(, 3)
        myNote = rng.Offset(, 4)
        
        For d = startDate To endDate
            With Worksheets("工作表2").Cells(Rows.Count,1).End(xlup).Offset(1)
                .Value = myId
                .Offset(,1) = d
                .Offset(,2) = myItem
                .Offset(,3) = myNote
            End With
        Next d
    Next rng
End Sub
看更多先前的回應...收起先前的回應...
AnakinTai iT邦新手 5 級 ‧ 2020-10-21 09:28:02 檢舉

謝謝你.如果方便的話可以講解一下嗎?

謝謝你.如果方便的話可以講解一下嗎?

是哪裡讓你卡住了?
用ZOOM講比較快。

AnakinTai iT邦新手 5 級 ‧ 2020-10-21 12:36:30 檢舉

因為我覺得我只是COPY了你的代碼.但我不是太明白他的原由.所以想了解一下,因為我只會用錄製去做簡單的VBA.所以想深入了解一下.

想深入了解一下

可以先學習用F1鍵與F8鍵。

我要發表回答

立即登入回答