Option Explicit Sub ボタン89_Click() '//勝判定での初期化 With Worksheets("出目回数") Dim lastrow As Long Dim maxcolumn As Long お世話になります。

Option Explicit Sub ボタン89_Click() '//勝判定での初期化 With Worksheets("出目回数") Dim lastrow As Long Dim maxcolumn As Long お世話になります。 以下の個所にて、エラーにはならず、そのとおりに実行してくれません。 Dim ws As Worksheet Set ws = Worksheets("計算表") Dim i As Long For maxcolumn = 2 To 39 For i = 2 To lastrow lastrow = .Cells(Rows.Count, maxcolumn).End(xlUp).Row If maxcolumn = 3 And lastrow >= 4 And lastrow > lastrow - 1 Then If ws.Range("D10") = "★" Then .Cells(i, maxcolumn).Clear End If Next Next End With End Sub '//ここなのですが、これでは動きません。 If maxcolumn = 3 And lastrow >= 4 And lastrow > lastrow - 1 Then If ws.Range("D10") = "★" Then .Cells(i, maxcolumn).Clear '//これだと動いてくれます。。 If maxcolumn = 3 And lastrow >= 4 And lastrow > lastrow - 1 And_ ws.Range("D10") = "★" Then .Cells(i, maxcolumn).Clear 上記の2つの何が違うのでしょうか、、 Ifで真なら、次のIfが真で実行、、と考えたのですが、、 よろしくご回答お願いいたします。

Visual Basic | Excel16閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

コードの書き方に統一性がないのが問題だと思います。 複数行記述にすれば、同じ動作になると思います。 '//ここなのですが、これでは動きません。 If maxcolumn = 3 And lastrow >= 4 And lastrow > lastrow - 1 Then If ws.Range("D10") = "★" Then .Cells(i, maxcolumn).Clear End If End If '//これだと動いてくれます。。 If maxcolumn = 3 And lastrow >= 4 And lastrow > lastrow - 1 And_ ws.Range("D10") = "★" Then .Cells(i, maxcolumn).Clear End If Then に続いてはコードを記述しない。 IF Then は常に IF Then End If のように複数行で記述するように統一されることをお勧めします。

ThanksImg質問者からのお礼コメント

そのとおりです。 こういう当たり前のことからですが、ちょっとずつでも学習していきます。

お礼日時:10/27 15:34

その他の回答(1件)

0

And_ その前にfor i 代入前のlastrow使うのは何故? ローカルウィンドウ出してステップ実行してる?

ご回答ありがとうございます。 逆になったままでした。 これで何回も実行できないことばかりだったのです、修正していたのですが、、修正してませんでした。