次のマクロをB2,B3,B4,…と最終行まで同じ操作を行うマクロをご教示いただければ幸いです。

Sub Macro()
If (Range("B1").Value = "X") Then
Range("C1").Value = Range("A1").Value + 30
ElseIf (Range("B1").Value = "Y") Then
Range("C1").Value = Range("A1").Value + 10
ElseIf (Range("B1").Value = "Z") Then
Range("C1").Value = Range("A1").Value
End If

End Sub

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/09/04 18:38:34
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント35pt

いろいろな書き方がありますけれど、なるべく元の式を崩さない方向で作りました

Sub Macro1()
    Dim lasrRow As Integer
    lastRow = Range("A65536").End(xlUp).Row
    For i = 1 To lastRow
        If (Range("B" & i).Value = "X") Then
            Range("C" & i).Value = Range("A" & i).Value + 30
        ElseIf (Range("B" & i).Value = "Y") Then
            Range("C" & i).Value = Range("A" & i).Value + 10
        ElseIf (Range("B" & i).Value = "Z") Then
            Range("C" & i).Value = Range("A" & i).Value
        End If
    Next i
End Sub

その他の回答1件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149ここでベストアンサー

ポイント35pt

いろいろな書き方がありますけれど、なるべく元の式を崩さない方向で作りました

Sub Macro1()
    Dim lasrRow As Integer
    lastRow = Range("A65536").End(xlUp).Row
    For i = 1 To lastRow
        If (Range("B" & i).Value = "X") Then
            Range("C" & i).Value = Range("A" & i).Value + 30
        ElseIf (Range("B" & i).Value = "Y") Then
            Range("C" & i).Value = Range("A" & i).Value + 10
        ElseIf (Range("B" & i).Value = "Z") Then
            Range("C" & i).Value = Range("A" & i).Value
        End If
    Next i
End Sub
id:rsc96074 No.2

回答回数4506ベストアンサー獲得回数438

ポイント35pt

 こちらは参考になるでしょうか。Excel 2007で実行確認しました。


Sub myMacro()
    Dim i As Integer
    
    Dim sheetobj As Worksheet
    Set sheetobj = ThisWorkbook.Worksheets(1)

    With sheetobj
        For i = 1 To LastRow(sheetobj, 1)
            If (.Cells(i, 2).Value = "X") Then
                .Cells(i, 3).Value = .Cells(i, 1).Value + 30
            ElseIf (.Cells(i, 2).Value = "Y") Then
                .Cells(i, 3).Value = .Cells(i, 1).Value + 10
            ElseIf (.Cells(i, 2).Value = "Z") Then
                .Cells(i, 3).Value = .Cells(i, 1).Value
            End If
        Next i
    End With

    MsgBox "OK!"
End Sub

'最終行を求める関数
Function LastRow(sheetobj As Worksheet, C)
    LastRow = sheetobj.Cells(sheetobj.Rows.Count, C).End(xlUp).Row
End Function

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません