0

特定の列/範囲のすべての奇数セルに値を割り当てようとしています。これまでのところ、別の質問から次のコードを取得していますが、機能していません。

Sub changeClass()

    Dim r As Range
    Set r = Range("B16").End(xlDown)  'set the range the data resides in


    For i = 1 To r.Rows.Count  'merge step
        If i Mod 2 = 1 Then   'this checkes to see if i is odd
            r.Cells.Value = "value"
        End If
        Else 
            r.Cells.Value = "value2"
    Next i


End Sub

基本的に、セル16からデータが含まれる列の最後のセルまでのB列のすべてのセルに値を追加する必要があります。偶数行では値が1つになり、奇数行では別の値になります。 。

どうもありがとう!

4

4 に答える 4

2
Sub changeClass()

    Dim r As Range
    Dim i As Integer

For Each r In Range("B16:B24") 'Change this range

i = r.Row
    If i Mod 2 = 1 Then   'this checks to see if i is odd
        r.Cells.Value = "ODD"

    Else
        r.Cells.Value = "EVEN"
    End If

Next r

End Sub
于 2013-03-26T13:47:57.263 に答える
1

これを試してみてください。ループ内の個々のセルにアクセスしていないため、機能していないと思います。次のマクロでは、「rng」を使用してセルの全範囲を表し、「r」を使用してループの各増分の単一のセルを表します。

Sub changeClass()

    Dim rng As Range 
    Dim r As Range 
    Set rng = Range(Cells(16,2),Cells(16,2).End(xlDown))

    For i = 1 To rng.Rows.Count
        Set r = rng.Cells(i)
        If i Mod 2 = 1 Then ' You may want to test if it is odd based on the row number (depends on your problem...)
            r.Value = "Odd Value"
        Else
            r.Value = "Even Value"
        End If

    Next i

End Sub
于 2013-03-26T13:47:08.390 に答える
0

ifステートメントを台無しにした場合は、それを閉じないでください。完全に終了した後でのみ閉じてください。;) ここ:

Sub changeClass()

Dim r As Range
Set r = Range("B16").End(xlDown)  'set the range the data resides in


For i = 1 To r.Rows.Count  'merge step
    If i Mod 2 = 1 Then   'this checkes to see if i is odd
        r.Cells.Value = "value"
    Else 
        r.Cells.Value = "value2"
    End if 
Next i

End Sub
于 2013-03-26T13:46:52.853 に答える
0

これにはループは必要ありません。

Sub OddRowAlert()
With Range("B16:B100")
    .Formula = "=IF((MOD(ROW(B16),2)),""Odd"",""Even"")"
    .Formula = .Value
End With
End Sub

数式の奇数と偶数を必要なものに置き換えるだけです

于 2015-05-13T22:32:26.543 に答える