2012-12-17 110 views
1

我正在嘗試選擇單元格範圍。我以前做過這個,但是在語法上遇到了麻煩。Excel 2007 VBA選擇單元格範圍

Sub ChgDateX() 

Range("A41").Select 

Do 
    If ActiveCell.Value = "Last Updated" Then 
    mydate = ActiveCell.Offset(-40, 0).Value 

    'Cells(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 9)).Select 
    ActiveCell.Offset(0, 1).Value = mydate 
    ActiveCell.Offset(0, 2).Value = mydate 
    ActiveCell.Offset(0, 3).Value = mydate 
    ActiveCell.Offset(0, 4).Value = mydate 
    ActiveCell.Offset(0, 5).Value = mydate 
    ActiveCell.Offset(0, 6).Value = mydate 
    ActiveCell.Offset(0, 7).Value = mydate 
    ActiveCell.Offset(0, 8).Value = mydate 
    ActiveCell.Offset(0, 9).Value = mydate 

    ActiveCell.EntireRow.Select 
    Selection.NumberFormat = "m/d/yyyy" 
    ActiveCell.Offset(1, 0).Select 
     Else: ActiveCell.Offset(1, 0).Select 
    End If 
Loop Until ActiveCell.Value = "" & ActiveCell.Offset(-3, 0).Value = "" 

End Sub 

我想擺脫個人偏移= mydate類型編碼。

+0

什麼是你想在這裏做什麼? –

+0

Tim我有一個日期從活動單元格,.Offset(-1,-39),我想覆蓋範圍組中的現有值,我有麻煩引用。 –

+0

我還沒有放置If語句通過的附加代碼。 –

回答

4

幾件事情:

此代碼:

Loop Until ActiveCell.Value = "" & ActiveCell.Offset(-3, 0).Value = "" 

不能按預期工作,因爲你正在尋找正確的操作是And而不是&

你不必「選擇」任何東西。你可以把一個單元格的引用放在一個變量中(參見我的代碼)。

此外,由於您始終向下移至循環中的下一個單元格,因此您可以將其放在IF語句之外。基於您的代碼

我認爲你在尋找這樣的事情:

Option Explicit 

Sub test() 
    Dim r As Range 
    Dim myDate As Date 

    Set r = Range("A41") 

    Do 
     If (r.Value = "Last Updated") Then 
      myDate = r.Offset(-40, 0).Value 

      With Range(r.Offset(0, 1), r.Offset(0, 9)) 
       .Value = myDate 
       .NumberFormat = "m/d/yyyy" 
      End With 
     End If 

     Set r = r.Offset(1, 0) 
    Loop Until r.Value = vbNullString And r.Offset(-3, 0).Value = "" 

End Sub 
0

試試這個:

ActiveCell.Range("B1:J1").Value = MyDate 
0

這個怎麼樣?有1注。我不會建議像這樣循環。也許你可以過濾Column A <> ""什麼的,然後只是循環通過可見的單元格?很難說不知道你在做什麼。

Option Explicit 

Sub ChgDateX() 

Range("A41").Select 

Do 
    If ActiveCell.Value = "Last Updated" Then 

     Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 9)).Value = ActiveCell.Offset(-40, 0).Value 

     ActiveCell.EntireRow.NumberFormat = "m/d/yyyy" 

    End If 

    ActiveCell.Offset(1).Select 

Loop Until ActiveCell.Value = "" & ActiveCell.Offset(-3, 0).Value = "" 

End Sub 
相關問題