Excel VBA質問箱 IV

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

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


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

【59586】ループ中特定周期毎にコマンドを実行させたい (・x・) 08/12/24(水) 10:38 質問[未読]
【59587】Re:ループ中特定周期毎にコマンドを実行さ... ひげくま 08/12/24(水) 10:58 発言[未読]
【59591】Re:ループ中特定周期毎にコマンドを実行さ... (・x・) 08/12/24(水) 12:12 発言[未読]
【59597】Re:ループ中特定周期毎にコマンドを実行さ... ひげくま 08/12/24(水) 13:54 発言[未読]
【59599】Re:ループ中特定周期毎にコマンドを実行さ... (・x・) 08/12/24(水) 14:40 発言[未読]
【59598】Re:ループ中特定周期毎にコマンドを実行さ... SS 08/12/24(水) 14:34 発言[未読]
【59600】Re:ループ中特定周期毎にコマンドを実行さ... (・x・) 08/12/24(水) 14:44 お礼[未読]
【59588】Re:ループ中特定周期毎にコマンドを実行さ... SS 08/12/24(水) 11:01 発言[未読]
【59593】Re:ループ中特定周期毎にコマンドを実行さ... (・x・) 08/12/24(水) 12:18 発言[未読]
【59589】Re:ループ中特定周期毎にコマンドを実行さ... にぃ 08/12/24(水) 11:12 発言[未読]
【59592】Re:ループ中特定周期毎にコマンドを実行さ... (・x・) 08/12/24(水) 12:17 発言[未読]

【59586】ループ中特定周期毎にコマンドを実行させ...
質問  (・x・)  - 08/12/24(水) 10:38 -

引用なし
パスワード
   For〜Next構文の最中、たとえばループ数回ごとに特定の処理をさせたい場合

v = カウント中のループ回数 Mod 10
  If v = 指定周期数 Then
   特定処理
  Else

こうすると、10回に1回しかやってくれません
他に適切な構文がありそうなのですが、わからない状態です

おバカな質問で申し訳ありませんが、どなたかアドバイスお願いします

【59587】Re:ループ中特定周期毎にコマンドを実行...
発言  ひげくま  - 08/12/24(水) 10:58 -

引用なし
パスワード
   ▼(・x・) さん:
>For〜Next構文の最中、たとえばループ数回ごとに特定の処理をさせたい場合
>
>v = カウント中のループ回数 Mod 10
>  If v = 指定周期数 Then
>   特定処理
>  Else
>
>こうすると、10回に1回しかやってくれません

なぜ、Mod 10にしているのでしょうか?
この10にはどんな意味があるのでしょうか?

それが解れば、どうすれば良いのかも解ると思いますよ。

【59588】Re:ループ中特定周期毎にコマンドを実行...
発言  SS  - 08/12/24(水) 11:01 -

引用なし
パスワード
   ▼(・x・) さん:

FOR文を重ねたら如何でしょうか?
例)
Sub test()
  Dim i As Integer, j As Integer
  For i = 1 To 2
    For j = 1 To 3
      '処理1
      MsgBox 3 * (i - 1) + j
    Next j
    '処理2
    MsgBox i & "回目"
  Next i
End Sub
こんな感じです。

>For〜Next構文の最中、たとえばループ数回ごとに特定の処理をさせたい場合
>
>v = カウント中のループ回数 Mod 10
>  If v = 指定周期数 Then
>   特定処理
>  Else
>
>こうすると、10回に1回しかやってくれません
>他に適切な構文がありそうなのですが、わからない状態です
>
>おバカな質問で申し訳ありませんが、どなたかアドバイスお願いします

【59589】Re:ループ中特定周期毎にコマンドを実行...
発言  にぃ  - 08/12/24(水) 11:12 -

引用なし
パスワード
   ▼(・x・) さん:
こんにちは!

SSさんとほぼ同じですがこんなのどうでしょう?

途中で止めたかった場合Ctrl + Break を押してください。

Sub test0()

  Dim i As Integer
  Dim j As Integer
  
  For i = 1 To 100 Step 10
    For j = i To i + 8
      MsgBox j & "回目"
    Next
    
    MsgBox j & "回目 10の倍数"

  Next

End Sub

Sub test1()

  Dim i As Integer
  Dim j As Integer
  
  For i = 1 To 30 Step 3
    For j = i To i + 1
      MsgBox j & "回目"
    Next
    
    MsgBox j & "回目 3の倍数"

  Next

End Sub

【59591】Re:ループ中特定周期毎にコマンドを実行...
発言  (・x・)  - 08/12/24(水) 12:12 -

引用なし
パスワード
   ▼ひげくま さん:
Mod 10 にしている理由は、ループ回数の下1桁を求めようとしたからです。
ループ回数を10で割ったら簡単に下1桁が出ますから…
他に方法が思いつかなかったので、何かいい方法があれば教えて下さい。

>▼(・x・) さん:
>>For〜Next構文の最中、たとえばループ数回ごとに特定の処理をさせたい場合
>>
>>v = カウント中のループ回数 Mod 10
>>  If v = 指定周期数 Then
>>   特定処理
>>  Else
>>
>>こうすると、10回に1回しかやってくれません
>
>なぜ、Mod 10にしているのでしょうか?
>この10にはどんな意味があるのでしょうか?
>
>それが解れば、どうすれば良いのかも解ると思いますよ。

【59592】Re:ループ中特定周期毎にコマンドを実行...
発言  (・x・)  - 08/12/24(水) 12:17 -

引用なし
パスワード
   ▼にぃ さん:
ありがとうございます。
組み込んで試してみることにします。

>▼(・x・) さん:
>こんにちは!
>
>SSさんとほぼ同じですがこんなのどうでしょう?
>
>途中で止めたかった場合Ctrl + Break を押してください。
>
>Sub test0()
>
>  Dim i As Integer
>  Dim j As Integer
>  
>  For i = 1 To 100 Step 10
>    For j = i To i + 8
>      MsgBox j & "回目"
>    Next
>    
>    MsgBox j & "回目 10の倍数"
>
>  Next
>
>End Sub
>
>Sub test1()
>
>  Dim i As Integer
>  Dim j As Integer
>  
>  For i = 1 To 30 Step 3
>    For j = i To i + 1
>      MsgBox j & "回目"
>    Next
>    
>    MsgBox j & "回目 3の倍数"
>
>  Next
>
>End Sub

【59593】Re:ループ中特定周期毎にコマンドを実行...
発言  (・x・)  - 08/12/24(水) 12:18 -

引用なし
パスワード
   ▼SS さん:
ありがとうございます。
にぃさんのアドバイスと平行して試してみようと思います。

>▼(・x・) さん:
>
>FOR文を重ねたら如何でしょうか?
>例)
>Sub test()
>  Dim i As Integer, j As Integer
>  For i = 1 To 2
>    For j = 1 To 3
>      '処理1
>      MsgBox 3 * (i - 1) + j
>    Next j
>    '処理2
>    MsgBox i & "回目"
>  Next i
>End Sub
>こんな感じです。
>
>>For〜Next構文の最中、たとえばループ数回ごとに特定の処理をさせたい場合
>>
>>v = カウント中のループ回数 Mod 10
>>  If v = 指定周期数 Then
>>   特定処理
>>  Else
>>
>>こうすると、10回に1回しかやってくれません
>>他に適切な構文がありそうなのですが、わからない状態です
>>
>>おバカな質問で申し訳ありませんが、どなたかアドバイスお願いします

【59597】Re:ループ中特定周期毎にコマンドを実行...
発言  ひげくま  - 08/12/24(水) 13:54 -

引用なし
パスワード
   >Mod 10 にしている理由は、ループ回数の下1桁を求めようとしたからです。
>ループ回数を10で割ったら簡単に下1桁が出ますから…

なるほど。
それは良い方法だと思います。

ただ、ループ回数の下1桁を利用して、指定周期ごとに処理を行うのは無理があります。
下1桁をもとめるのと、指定周期ごとに処理を行うのは、独立して考えたほうが良いですね。

下1桁とか考えないで、「指定周期ごとに処理を行う」ということだけを考えた場合、どうすれば良いのかを考えてみてください。
そしてそのあとで、「指定周期ごとの処理」の中で、ループ回数の下1桁を求めるようにしてはどうでしょうか?

【59598】Re:ループ中特定周期毎にコマンドを実行...
発言  SS  - 08/12/24(水) 14:34 -

引用なし
パスワード
   ▼(・x・) さん:

先の回答でも良いと思うのですが
Modを使った周期管理方法ではこんな感じだと思います。

v = カウント中のループ回数 Mod 指定周期数
  If v = 0 Then
   特定処理
  Else


>▼ひげくま さん:
>Mod 10 にしている理由は、ループ回数の下1桁を求めようとしたからです。
>ループ回数を10で割ったら簡単に下1桁が出ますから…
>他に方法が思いつかなかったので、何かいい方法があれば教えて下さい。
>
>>▼(・x・) さん:
>>>For〜Next構文の最中、たとえばループ数回ごとに特定の処理をさせたい場合
>>>
>>>v = カウント中のループ回数 Mod 10
>>>  If v = 指定周期数 Then
>>>   特定処理
>>>  Else
>>>
>>>こうすると、10回に1回しかやってくれません
>>
>>なぜ、Mod 10にしているのでしょうか?
>>この10にはどんな意味があるのでしょうか?
>>
>>それが解れば、どうすれば良いのかも解ると思いますよ。

【59599】Re:ループ中特定周期毎にコマンドを実行...
発言  (・x・)  - 08/12/24(水) 14:40 -

引用なし
パスワード
   ▼ひげくま さん:
ありがとうございます。
SSさんがModを使った方法を提示していただけたので、それを軸に組んでみようと思います。
指定周期ごとでのやり方も考えてみたいと思います。

>>Mod 10 にしている理由は、ループ回数の下1桁を求めようとしたからです。
>>ループ回数を10で割ったら簡単に下1桁が出ますから…
>
>なるほど。
>それは良い方法だと思います。
>
>ただ、ループ回数の下1桁を利用して、指定周期ごとに処理を行うのは無理があります。
>下1桁をもとめるのと、指定周期ごとに処理を行うのは、独立して考えたほうが良いですね。
>
>下1桁とか考えないで、「指定周期ごとに処理を行う」ということだけを考えた場合、どうすれば良いのかを考えてみてください。
>そしてそのあとで、「指定周期ごとの処理」の中で、ループ回数の下1桁を求めるようにしてはどうでしょうか?

【59600】Re:ループ中特定周期毎にコマンドを実行...
お礼  (・x・)  - 08/12/24(水) 14:44 -

引用なし
パスワード
   ▼SS さん:
ありがとうございます。
Modで割った後どの数字を指定すればいいか分からなかったので10で割ってから考えていたんです。
0で試してみることにします。

>▼(・x・) さん:
>
>先の回答でも良いと思うのですが
>Modを使った周期管理方法ではこんな感じだと思います。
>
>v = カウント中のループ回数 Mod 指定周期数
>  If v = 0 Then
>   特定処理
>  Else
>
>
>>▼ひげくま さん:
>>Mod 10 にしている理由は、ループ回数の下1桁を求めようとしたからです。
>>ループ回数を10で割ったら簡単に下1桁が出ますから…
>>他に方法が思いつかなかったので、何かいい方法があれば教えて下さい。
>>
>>>▼(・x・) さん:
>>>>For〜Next構文の最中、たとえばループ数回ごとに特定の処理をさせたい場合
>>>>
>>>>v = カウント中のループ回数 Mod 10
>>>>  If v = 指定周期数 Then
>>>>   特定処理
>>>>  Else
>>>>
>>>>こうすると、10回に1回しかやってくれません
>>>
>>>なぜ、Mod 10にしているのでしょうか?
>>>この10にはどんな意味があるのでしょうか?
>>>
>>>それが解れば、どうすれば良いのかも解ると思いますよ。

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