![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
エクセルVBA初心者です。
左の表からある一定以上の売上を得た人を抽出し、右の表に表示したいのですが以下のプログラムだと上手くいきません。
どこがダメなのでしょうか?
Private Sub cmdUriken_Click()
Dim k As Integer
Dim l As Integer
Dim m As Integer
k = 2
l = 2
m = 2
Do Until Cells(m, 32) = ""
Range(Cells(m, 19), Cells(m, 34)).Select
Selection.ClearContents
m = m + 1
Loop
Do Until Cells(k, 14) = ""
If Cells(k, 14) >= txtUriken.Text Then
Range(Cells(k, 1), Cells(k, 16)).Select
Selection.Copy
Range(Cells(l, 19), Cells(l, 34)).Select
ActiveSheet.Paste
l = l + 1
Application.CutCopyMode = False
End If
k = k + 1
Loop
End Sub
ちなみに If Cells(k, 14) = txtUriken.Text Then とするとちゃんと同等の売上が表示されるので
>= の使い方が間違っていると思うのですが
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
If Cells(k, 14) >= txtUriken.Text Then
文字列と数値の比較では、文字列のほうが大きいわけですから、うまくいくはずがありません。
質問では書かれていませんが、オブジェクト名からすると、txtUrikenは、TextBox のようです。
If Val(Cells(k, 14).Value) = Val(txtUriken.Value) Then 'プロパティは、Textでも可
としたら良いでしょうね。一般的には、こういうダイレクトにオブジェクトの値を入れるのではなくて、一旦、変数に受けて、それをチェックさせてから、値比較に使うようにします。
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
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Excel(エクセル) VBAのエラーが直せません 4 2023/06/12 22:10
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
bmp画像をjpegやpng画像に圧縮...
-
Vbで通常使用するプリンターを...
-
0 == False はいいけど
-
Object型からDouble型へのキャスト
-
オブジェクトレベルとメタレベル
-
COMコンポーネントって何?
-
ResultSet での問題
-
Excel VBA : イコールになら...
-
Rangeオブジェクトを一時的に作...
-
エクセルVBAについて
-
C#でフォームのオブジェクト名...
-
オブジェクト名をforループ内で...
-
パワーポイントのVBAでテキスト...
-
.getElementById()のエラーにつ...
-
JqueryとPrototypeの比較
-
画像の転送処理について
-
VBAのWindowオブジェクトとWork...
-
Excelで =EMBED("Acrobat Docu...
-
EXCEL VBAにて動的にCheckBOXを...
-
ヘッダファイルにおける文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0 == False はいいけど
-
パワーポイントのVBAでテキスト...
-
C#でフォームのオブジェクト名...
-
Excelで =EMBED("Acrobat Docu...
-
VBAのWindowオブジェクトとWork...
-
JAVAからHTMLへ値を返す方法
-
EXCEL VBAにて動的にCheckBOXを...
-
ワイルドカード<?>と型パラメー...
-
COMコンポーネントって何?
-
VBA 同じ名前のオブジェクトを...
-
Object型からDouble型へのキャスト
-
ビジュアルC++でボタンの有...
-
error C2712: オブジェクト ア...
-
bmp画像をjpegやpng画像に圧縮...
-
オブジェクト名をforループ内で...
-
戻り値がクラスオブジェクト
-
Vbで通常使用するプリンターを...
-
時間帯判定をする。
-
LISTBOXの内容が更新されま...
-
Webアプリケーションのエラーメ...
おすすめ情報