2013-12-18 51 views
2

我試圖編寫一個插入重複行的宏(與列中指定的行數一樣多),並且同時更改每個行的日期重複。 喜歡的東西excel VBA:從電子表格到日期操作/做

BEFORE          AFTER 
20/01/2013 2        20/01/2013 2  
28/02/2013 0        21/01/2013 2 
15/03/2013 1        22/01/2013 2 
              28/02/2013 0 
              15/03/2013 1 
              16/03/2013 1 

重複的部分工作得很好,但它是讓我頭疼的日期改變。我試着用

Cells(x,y).Value = Cells(x,y).Value + 1 

,但它不與日期

DATEADD並沒有給我帶來任何地方任何工作...... 來這裏的代碼...謝謝你給任何人誰可以幫助我

Sub Macro2() 
' 
' Macro2 Macro 
' ola 
' 

Dim i As Integer 
Dim x As Integer 
Dim y As Integer 
Dim k As Integer 
Dim z As Integer 


    i = 2 
    x = Application.InputBox("Number of Rows", "Number of Rows", Type:=1) 
    k = Application.InputBox("Column", "Choose 1 for A, 2 for B, 5 for E...", Type:=1) 


Do 
    y = Cells(i, k).Value 
    If y = 0 Then 
    i = (i + 1) 
    Cells(i, k).Activate 
    Else 
      z = 0 
      ActiveCell.EntireRow.Copy 
      Range(ActiveCell.Offset(y), ActiveCell.Offset(1)).EntireRow.Insert 
      Do 
       i = i + 1 
       z = z + 1 
       Cells(i, 2).Value = Cells(i, 2).Value + z 
      Loop While z < (y + 1) 
      Cells(i, k).Activate 
      Application.CutCopyMode = False 
    End If 

Loop While i < x 


End Sub 

回答

1

也許嘗試創建一個Date類型的變量從單元格的內容即。

如果Range("A1")20/01/2013然後

dim myDate as Date 
myDate = CDate(Range("A1")) 

Cdate()轉換無論是在細胞引入Date類型。因此,不要依賴編譯器來選擇單元格內容的數據類型,而是明確告訴編譯器將內容視爲Date。

現在你可以使用DateAdd()功能

myDate = DateAdd("d", 1, myDate) 

加入日期和寫回不同的小區

Range("A2") = myDate 

一個班輪也可能會被

Cells(x,y).Offset(1,0) = DateAdd("d", 1, Cdate(Cells(x,y))) 

可能的更簡單的解決方案將是說

Cells(x, y) = CDate(Cells(x,y)) + 1 

但現在,至少你明白爲什麼

+0

感謝您的快速回答 範圍(「A1」)怎麼我不可能因爲我需要使用符號(我把他們進入while/do),這就是爲什麼我使用單元格而不是範圍......除此之外,我懷疑這個東西不能工作,因爲我的單元格沒有正確格式化......我試圖選擇它們並改變格式到目前爲止,但我不知道它的工作 我會嘗試你說的,使用單元格,並在一秒鐘內回覆 – kouta

+0

@ user3115524對不起,這是什麼問題? – 2013-12-18 14:27:56

+0

@ user3115524你可以展示你的電子表格的樣子嗎? – 2013-12-18 14:31:45

相關問題