Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2192 / 13645 ツリー ←次へ | 前へ→

【69462】カウンタ変数が二倍になってしまう vba初心者 11/7/15(金) 20:08 質問[未読]
【69463】Re:カウンタ変数が二倍になってしまう neptune 11/7/15(金) 21:05 発言[未読]
【69464】Re:カウンタ変数が二倍になってしまう [名前なし] 11/7/15(金) 21:30 回答[未読]
【69465】Re:カウンタ変数が二倍になってしまう vba初心者 11/7/15(金) 22:13 お礼[未読]

【69462】カウンタ変数が二倍になってしまう
質問  vba初心者  - 11/7/15(金) 20:08 -

引用なし
パスワード
   いつも拝見させて頂いています。

五月くらいからVBAを始めた初心者です。

いつも使い慣れたFOR i NEXTを使って以外のようなコードを書いたら、
何故か0,2,4,6のように、まるでStep 2 と記述したような制御になってしまいました。

Sub Sample1()
Dim Rn As Long, Cn As Long, i As Long, c As Long, Rn1 As Long, Cn1 As Long

With Selection
    Rn = .Rows.Count
    Cn = .Columns.Count
End With
With Selection(1)
    Rn1 = .Row
    Cn1 = .Column
End With
    For c = 0 To Cn - 1
        For i = 0 To Rn - 1
        Debug.Print i
            If Cells(Rn1, Cn1).Offset(i, c) = "" Then
                Cells(Rn1, Cn1).Offset(i, c).Value = Cells(Rn1, Cn1).Offset(i - 1, c).Value
            End If
            i = i + 1
        Next i
        c = c + 1
    Next c
End Sub


コードの目的は、
選択範囲セル内を対象に、
空白セルを、値のある直近の上セルの内容にコピーするものです。

例えば、上記を実行すると、イミディエイトウィンドウに
0
2
4
6
のように、奇数飛ばしでカウントアップしてしまいました。

原因がわからず困ってます。助けてください。
よろしくお願いいたします。

【69463】Re:カウンタ変数が二倍になってしまう
発言  neptune  - 11/7/15(金) 21:05 -

引用なし
パスワード
   ▼vba初心者 さん:
コードが化けてわかりません。
見るのがとても面倒です。
もしかしたら他言語のエディタで書いてます?

VBEでコードを書いて再度貼り付けて下さい。

【69464】Re:カウンタ変数が二倍になってしまう
回答  [名前なし]  - 11/7/15(金) 21:30 -

引用なし
パスワード
   ▼vba初心者 さん:


Next i

Next c

の前で


i = i + 1
c = c + 1

をすれば当然そうなるでしょう。

【69465】Re:カウンタ変数が二倍になってしまう
お礼  vba初心者  - 11/7/15(金) 22:13 -

引用なし
パスワード
   ▼[名前なし] さん:
>▼vba初心者 さん:
>
>
> Next i
>
> Next c
>
>の前で
>
>
>i = i + 1
> c = c + 1
>
>をすれば当然そうなるでしょう。

あ、、、そうですよね。。
Do Loopと混同してしまっていました^^;
どうもありがとうございます。

ちなみに投稿した際に化けてしまってすみませんでした。
化ける前のものはコチラです。

With Selection(1)
  Rn1 = .Row
  Cn1 = .Column
  For c = 0 To Cn - 1
    For i = 0 To Rn - 1
    Debug.Print i
      If Cells(Rn1, Cn1).Offset(i, c) = "" Then
        Cells(Rn1, Cn1).Offset(i, c).Value = Cells(Rn1, Cn1).Offset(i - 1, c).Value
      End If
      i = i + 1
    Next i
    c = c + 1
  Next c
End With
End Sub

それぞれ+1を取りますね!
ありがとうございました!

2192 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free