ExcelVBAで、1桁目に”*”が入っているレコード件数をカウントするVBAを作成しました。
正常に機能すれば「受発注品は2件です」というメッセージボックスが表示される筈なのですが、「1桁目に”*”が在るか否か?」の判定が正常に機能していないようで、「受発注品は0件です」というメッセージボックスが表示されてしまいます。
以下が、作成したVBAです。
-----------------------------------------------------------------------
Sub 受発注品カウント()
Dim i As Integer
Dim c As Integer
i = 1
c = 0
Do Until Cells(i, 1).Value = ""
If Cells(i, 1).Value = "~**" Then
c = c + 1
End If
i = i + 1
Loop
MsgBox "受発注品は " & c & " 件です", vbInformation
End Sub
-----------------------------------------------------------------------
「1桁目に”*”が在るか否か?」の判定方法をご存知の方がいらしたら、是非ご教示下さい。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
「1桁目に”*”が在るか否か?」と言葉通りなら、もちろん、Left で比較すればよいのですが、 "~**" という検索式をVBAで実現するには、Like演算子で、"[*]*" となりますが、厳密に考えると、*の意味は、0個の任意の文字の検出し、かつ「*」がひとつしかないものを除外しようとするなら、"[*]?*"という検索式が良いのではないか、と思います。
基本的に、「=」 は、数字の比較です。便宜的に「=」が文字比較にも使われますが、厳密にはLike演算子やStrComp関数などを利用したほうが良いです。'//サンプル
Sub 受発注品カウントR()
Dim i As Long 'Long型のほうが良い
Dim cnt As Long
Application.ScreenUpdating = False 'セルをループする時は必要です。
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1).Value Like "[*]?*" Then
cnt = cnt + 1
End If
Next
Application.ScreenUpdating = True
MsgBox "受発注品は " & cnt & " 件です", vbInformation
End Sub
当方、ExcelVBA初心者の為、Left関数もLike関数も知りませんでした。
また、ExcelVBAの規則に則ったサンプルもご提示していただき、初心者の私には大変勉強になりました。
お二人のご回答のお陰で、無事に解決しました。
ご回答いただき、誠に有難うございました。
No.1
- 回答日時:
変更前:
If Cells(i, 1).Value = "~**" Then
変更後:
If Left(Cells(i, 1).Value, 1) = "*" Then
「=」の演算にワイルドカードは効きませんので,"*"というただの文字として扱いを検討してください。
この例はまさしく、「1桁目に*が在るか否か?」の比較ですね。
求めていたものは、まさにこれです。
ExcelVBAだと、そういった事も容易に可能なのですね。
大変、勉強になりました。
ご回答いただき、誠に有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
以内について 5日以内までだっ...
-
真の計数率の求め方
-
学校からスタサプの動画を見る...
-
1~200までの自然数のうち 3か5...
-
【スプレッドシート】白色のセ...
-
musicカウントフリーでポッドキ...
-
iPhoneのスクリーンタイムの持...
-
GM計数管で試料を2分間測定した...
-
ウォーキングアプリのトリマに...
-
エクセル =now() の時刻に合わ...
-
Excelで特定のオートシェイプの...
-
万歩計の誤差(実例)
-
アメーバのアクセス数は正確で...
-
会員登録不要のアクセスカウン...
-
ワードで文書の文字数を、常に...
-
一般的に、付き合い始めたらそ...
-
ボタン電池 CR1616 の代替で、C...
-
万歩計をポケットに入れたまま...
-
ウォーキングに関しまして。歩...
-
タクタイルって全部で何種類あ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
以内について 5日以内までだっ...
-
http://oshiete.goo.ne.jp/qa/1...
-
iPhoneのスクリーンタイムの持...
-
Excelで特定のオートシェイプの...
-
1~200までの自然数のうち 3か5...
-
ウォーキングアプリのトリマに...
-
一般的に、付き合い始めたらそ...
-
学校からスタサプの動画を見る...
-
ワードで文書の文字数を、常に...
-
1~270までの自然数のうち、素...
-
【スプレッドシート】白色のセ...
-
ACCESS クエリの引き算
-
経験人数って男がいったらカウ...
-
エクセル =now() の時刻に合わ...
-
GoogleFitが夜中寝ている間にあ...
-
3DSの歩数カウント
-
メールの文字数を数える方法
-
musicカウントフリーでポッドキ...
-
真の計数率の求め方
-
関数“COUNTIF”で日付のカウント
おすすめ情報