|    | 
     ▼。・゚・(ノД`)・゚・。 さん: 
 
インデントをつけて見やすいコードを書きましょう。 
> Dim i 
でなく、型宣言を付けましょう  
Dim i As Long 
 
すると流れが見えてきます。 
 
Sub 正方形長方形9_Click() 
 
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 
 
一番最初 i は 17 でループを始めます。 
 
i = 17 のとき、 
>  If Range("L2").Value = Range("B" & i).Value Then 
は 
  If Range("L2").Value = Range("B17").Value Then 
の比較をします。[L2]に等しい値は [B30]にしかないのですから、 
[L2]の値と [B17]の値は等しくなく、 
 
> ElseIf Range("L6").Value = Range("b67").Value Then 
 
にジャンプしますが、ここも等しくないので、 
 
> Else 
 
に飛びます。 
そこで 
 
>    MsgBox "商品はありません" 
 
とメッセージを出し、 
 
>    Exit For 
 
してしまっている(Loopを抜けている) 
ので、 
 
> L2とB30に全く同じ数値が入っているのですが、 
> 最後のELSEに飛んで”商品はありません”と出てしまいます。 
 
は、コードに書いてある通りのことが起きているわけです。 
 | 
     
    
   |