Excel VBA質問箱 IV

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

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


12200 / 13644 ツリー ←次へ | 前へ→

【11792】For Each i In Selectionの使い方 カド 04/3/16(火) 15:00 質問
【11794】Re:For Each i In Selectionの使い方 Asaki 04/3/16(火) 15:17 回答
【11803】Re:For Each i In Selectionの使い方 カド 04/3/16(火) 16:05 お礼

【11792】For Each i In Selectionの使い方
質問  カド E-MAIL  - 04/3/16(火) 15:00 -

引用なし
パスワード
   過去ログの下記コードを例にお尋ねしますが、

1.現在のiと一つ前のiを比較するにはどうすれば良いのでしょうか?
  以下だとエラーが出ます。
  If i.Value = (i-1).Value Then

2.iを逆方から処理することは出来ないのでしょうか?
   (例えば、A10からA1に向かって処理する)

Sub DataFill()

  Dim i As Range, j As Integer

  For Each i In Selection
  
    If i.Value = "" Then ' 対象セルが空白だったら
    
      i.Value = j
      
    Else         ' 対象セルが空白ではなかったら
    
      j = i.Value
      
    End If
    
  Next

End Sub

【11794】Re:For Each i In Selectionの使い方
回答  Asaki  - 04/3/16(火) 15:17 -

引用なし
パスワード
   こんにちは。

1のほうは、↓のような感じでいけそうです。
Sub test()
  Dim rng   As Range
  Dim j    As Long

  j = Selection.Count
  For Each rng In Selection
    MsgBox rng.Value & " : " & Selection.Cells(j).Value
    If j = Selection.Count Then j = 0
    j = j + 1
  Next rng

End Sub

2のほうは、For Each 〜 Next を使わない、というのが一番素直かと思います。
例えば、↓のような感じでは如何でしょう?
Sub test2()

  Dim j    As Long
  
  j = Selection.Count
  Do Until (j = 0)
    MsgBox Selection(j).Value
    j = j - 1
  Loop

End Sub

【11803】Re:For Each i In Selectionの使い方
お礼  カド E-MAIL  - 04/3/16(火) 16:05 -

引用なし
パスワード
   ▼Asaki さん 回答ありがとう御座います。

よ〜く分かりました。

別投稿の回答に、アドバイス頂いた方法を使わせて頂きました。

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