• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAについて)

エクセルVBAでの売上抽出に関する問題

このQ&Aのポイント
  • エクセルVBAを使用して、左の表からある一定以上の売上を得た人を抽出し、右の表に表示する方法について質問があります。
  • 質問者はプログラムを実行してもうまくいかない理由がわからないようです。
  • 質問者は、条件を変更すると正しい結果が表示されることを確認しており、不等号の使い方が間違っている可能性を指摘しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

If Cells(k, 14) >= txtUriken.Text Then 文字列と数値の比較では、文字列のほうが大きいわけですから、うまくいくはずがありません。 質問では書かれていませんが、オブジェクト名からすると、txtUrikenは、TextBox のようです。 If Val(Cells(k, 14).Value) = Val(txtUriken.Value) Then 'プロパティは、Textでも可 としたら良いでしょうね。一般的には、こういうダイレクトにオブジェクトの値を入れるのではなくて、一旦、変数に受けて、それをチェックさせてから、値比較に使うようにします。

shorinji36
質問者

お礼

回答有難うございます。 無事できました。

その他の回答 (3)

  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.4

ANo.3です。無駄な部分があったので修正します。 Private Sub cmdUriken_Click() Dim rNum1 As Long, rNum2 As Long Range(Cells(2, 19), Cells(Rows.Count, 34)).ClearContents rNum2 = 2 For rNum1 = 2 To Cells(Rows.Count, 14).End(xlUp).Row If Cells(rNum1, 14).Value >= Val(txtUriken.Text) Then Range(Cells(rNum1, 1), Cells(rNum1, 16)).Copy Cells(rNum2, 19) rNum2 = rNum2 + 1 End If Next rNum1 End Sub

shorinji36
質問者

お礼

回答有難うございます。

  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.3

こんな感じでどうでしょう。 Private Sub cmdUriken_Click() Dim LastRow As Long Dim rNum1 As Long, rNum2 As Long LastRow = Cells(Rows.Count, 32).End(xlUp).Row If LastRow > 1 Then Range(Cells(2, 19), Cells(LastRow, 34)).ClearContents rNum2 = 2 For rNum1 = 2 To Cells(Rows.Count, 14).End(xlUp).Row If Cells(rNum1, 14).Value >= Val(txtUriken.Text) Then Range(Cells(rNum1, 1), Cells(rNum1, 16)).Copy Cells(rNum2, 19) rNum2 = rNum2 + 1 End If Next rNum1 End Sub

shorinji36
質問者

お礼

回答有難うございます。

noname#208392
noname#208392
回答No.1

>If Cells(k, 14) >= txtUriken.Text Then この txtUriken.Text を txtUriken.Value にしたらどうでしょう。 変わらなかったらごめん。

shorinji36
質問者

お礼

回答有難うございます。 変わりませんでした。