次のマクロを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回まで
  • 13歳以上
  • 登録:2010/09/04 12:21:44
  • 終了:2010/09/04 18:38:34

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492010/09/04 12:58:58

ポイント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ベストアンサー獲得回数11492010/09/04 12:58:58ここでベストアンサー

ポイント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

rsc回答回数4380ベストアンサー獲得回数3982010/09/04 14:43:05

ポイント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

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

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

トラックバック

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません