Excel VBA質問箱 IV

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

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


10643 / 13646 ツリー ←次へ | 前へ→

【20678】FOR NEXTで MIKA 04/12/14(火) 23:04 質問[未読]
【20679】Re:FOR NEXTで ちゃっぴ 04/12/14(火) 23:25 回答[未読]
【20680】Re:FOR NEXTで [名前なし] 04/12/15(水) 0:00 回答[未読]

【20678】FOR NEXTで
質問  MIKA  - 04/12/14(火) 23:04 -

引用なし
パスワード
   いつも参考にさせて頂いています。
VBA初心者です。
FOR NEXTで23列24列26列27列29列30列・・・といった感じで同じ処理を繰り返したいのですが指定の仕方が分かりません。一定の間隔でなければ使えないのでしょうか?
どうぞよろしくお願いします。

【20679】Re:FOR NEXTで
回答  ちゃっぴ  - 04/12/14(火) 23:25 -

引用なし
パスワード
   > FOR NEXTで23列24列26列27列29列30列・・・
> といった感じで同じ処理を繰り返したいのですが指定の仕方が分かりません。
> 一定の間隔でなければ使えないのでしょうか?

一定の間隔で使うものですね。
例外がある場合はIfステートメントやSelect Caseステートメントで
条件分岐してやるのが基本ですね。

また、23列24列26列27列29列30列・・・を配列として定義しておいて、
For Each 〜 NextステートメントでLoopさせる手もありますね。

【20680】Re:FOR NEXTで
回答  [名前なし]  - 04/12/15(水) 0:00 -

引用なし
パスワード
   ▼MIKA さん:
繰り返す処理に、一定の間隔になるような法則性を見つけることがコツです。

Sub Macro1()
Dim i As Long
Const MinValue = 23
Const MaxValue = 30

  '方法1 3列に1回は処理しない。
  For i = MinValue To MaxValue
    If (i - (MinValue - 1)) Mod 3 > 0 Then MsgBox i & "列"
    '23→24→(25)→26→27→(28)→29→30 ()の列は処理されない
  Next

  '方法2 2列おきに2列ずつ処理する。
  For i = MinValue To MaxValue Step 3
    MsgBox i & "列"   '23→26→29
    MsgBox i + 1 & "列" '24→27→30
  Next
  
  '方法3 2列おきを2回処理する。(順番不問の場合)
  For i = MinValue To MaxValue Step 3
    MsgBox i & "列"   '23→26→29
  Next
  For i = MinValue + 1 To MaxValue Step 3
    MsgBox i & "列" '24→27→30
  Next

End Sub

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