1

セルの範囲を選択しようとしています。私は以前にこれを行いましたが、構文に問題があります。

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

私は個々のoffset=mydateタイプのコーディングから逃れようとしています。

4

3 に答える 3

4

いくつかのこと:

このコード:

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

探している正しい演算子が isAndであり、not であるため、期待どおりに機能しません&

何も「選択」する必要はありません。セルへの参照を変数に入れることができます(私のコードを参照してください)。

また、常にループ内の次のセルに移動しているため、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
于 2012-12-17T20:34:32.107 に答える
0

これを試して:

ActiveCell.Range("B1:J1").Value = MyDate
于 2012-12-17T20:21:15.567 に答える
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
于 2012-12-17T20:32:18.760 に答える