Excel VBA質問箱 IV

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

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


7678 / 76734 ←次へ | 前へ→

【74642】Re:同じ値認識しない
発言  kanabun  - 13/8/20(火) 11:22 -

引用なし
パスワード
   ▼。・゚・(ノД`)・゚・。 さん:

>御蔭で理由分かったのですが結局アホなのでコード分かりません。(´・ω・`)
>全部チェックしてからのELSEはどうやって書けばいいんですか??

というか、コードを見ただけでは 結局何をしたいのか分かりません。

Dim i As Long

For i = 17 To 66
  If Range("L2").Value = Range("B" & i).Value Then
    Range("E" & i).Value = Range("E" & i).Value _
     - Range("D" & i).Value * Range("M2").Value
    Range("C9").Value = Range("C9").Value _
      + Range("D" & i).Value * Range("M2").Value
    Range("C" & i).Value = Range("c" & i).Value - Range("M2").Value
    Range("G13").FormulaR1C1 = "=SUM(R[-6]C:R[-1]C)"
     
    Range("k2:m2").ClearContents
    Range("N2").Formula = "=rounddown(P2,0)"
  
  ElseIf Range("L6").Value = Range("b67").Value Then
    Range("G12").Value = Range("g12").Value - Range("o2").Value
    Range("C69").Value = Range("c69").Value - Range("m2").Value
    
    Range("k2:m2").ClearContents
    Range("N2").Formula = "=rounddown(P2,0)"
  Else
    MsgBox "商品はありません"
    Exit For
  End If
Next

現在このようになっていますが、これを簡単にすると

For i = 17 To 66
  If Range("L2").Value = Range("B" & i).Value Then
    【処理1】

  ElseIf Range("L6").Value = Range("b67").Value Then
    【処理2】

  Else
    MsgBox "商品はありません"
    Exit For
  End If
Next

とまとめることができると思うけど、ここで
>    MsgBox "商品はありません"
の文は全部調べてからなので、For〜Next のループの外に出します。

>  If Range("L2").Value = Range("B" & i).Value Then

で何回一致したか、変数に覚えておきましょう。
そうすると、こんな構文になります。

Dim Cnt As Long
For i = 17 To 66
  If Range("L2").Value = Range("B" & i).Value Then
     Cnt = Cnt + 1 '一致した回数をカウント
    【処理1】

  ElseIf Range("L6").Value = Range("b67").Value Then
    【処理2】

  End If
Next
If Cnt = 0 Then
  MsgBox "商品はありません"
End If
  
こんなふうになります。
しかし、分らないのは

>  ElseIf Range("L6").Value = Range("b67").Value Then
>    【処理2】
>
のブロックです。このブロックではセルアドレスは固定になってます。
そうすると、 iが 17 To 66 まで変わるたびに(処理(1))を通らなかったら
毎回
>  ElseIf Range("L6").Value = Range("b67").Value Then
と固定セルの値を比較していますが、
これは どういうことでしょう。
For〜Next に入る前とかで、一度だけやっておけば済むような感じですが、
たぶんそういうことではないのでしょう。
その辺のところを 日本語とか 上に書いたような疑似コードで説明してみて
ください。

9 hits

【74639】同じ値認識しない 。・゚・(ノД`)・゚・。 13/8/19(月) 17:30 質問
【74640】Re:同じ値認識しない kanabun 13/8/19(月) 17:51 発言
【74641】Re:同じ値認識しない 。・゚・(ノД`)・゚・。 13/8/20(火) 9:50 質問
【74642】Re:同じ値認識しない kanabun 13/8/20(火) 11:22 発言
【74643】Re:同じ値認識しない kanabun 13/8/20(火) 11:49 発言
【74644】Re:同じ値認識しない (*´∀`) 13/8/20(火) 15:51 質問
【74645】Re:同じ値認識しない こたつねこ 13/8/20(火) 22:52 回答
【74648】Re:同じ値認識しない (*´∀`) 13/8/21(水) 15:14 質問

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