こんにちは、よろしくお願いします。
ユーザーフォーム上にテキストボックスが 1-31が4段あります。
1-31には数字が入っているところもあれば、空白の所もあります。
このなかの数字が入っているテキストボックスの数をカウント
したいのですがうまくいきません。
自分なりにやってみたこと
テキストボックスの空白を数えて
Dim i As Integer
For i = 1 To 31
If Controls("TextBox" & i).Value = "" Then
s_su.Text =
Exit Sub
s_suはカウントされた数字を表示するテキストボックスです。
上の式の =の右側に何を書いたらいいかがわかりません。
純粋に空白のテキストボックスを数えることは可能でしょうか。
また上記のテキストボックスを1-31数字の合計を別のテキストボックスに
表示しようと思いますが、
val(TextBox1.Text) + val(TextBox2.Text)~これを31回書いてますが
もっとスマートに書けるようなコードはありますか。
No.4ベストアンサー
- 回答日時:
>上記 msgbox "BLANK COUNT " & res1 を 31-res1に変えました。
あなたが書いた「具体的なマクロ」を、手抜きせずあなたのエクセルからコピーしてそのまま情報提供してください。
>テキストボックスに "0"が表示されます。
たとえば
テキストボックス = format(res1, "#")
とかでいいです。
お返事ありがとうございます。
以下のコードでうまく動きました。
Dim i As Double
Dim res1 As Double
Dim res2 As Double
For i = 1 To 31
If Me.Controls("s" & i) = "" Then res1 = res1 + 1
res2 = res2 + Val(Me.Controls("s" & i))
Next i
s_su.Caption = 31 - res1
s_su.Caption = Format(31 - res1, "#")
s_kei.Caption = res2
s_kei.Caption = Format(res2, "#")
入力されているTextBoxを数えることができました。
TextBox1-31を s1-s31に変更
数を表示する所をLabelに変更 s_su
金額を表示するところをLabelに変更 s_kei
TextBoxが未入力状態では s_suとs_keiに "0"が表示されなく
なりました。
大変勉強になりました。ありがとうございました。
No.3
- 回答日時:
#2の回答者です。
解決したなら何も言うことはありませんが、
>テキストボックスに "0"が表示されます。
>これを表示されないようにするにはどうしたらいいでしょうか。
直接、そのTextBox に値を戻すという条件で、Val を通せば、空白は、当然、0 になりますね。
ただ、合計値を取るなら、何も問題はないはずです。
聞かれていないので、余計なお世話かもしれませんし、質問はよく理解していませんが、
空白かどうかはを検査するなら、私なら、以下のように書くかもしれませんね。
空白とは何を意味するかにも違ってきます。空白とは、文字列の場合は、基本的には、
長さ0の文字列ということになります。ただ、そうとも取れない時があります。
For i = 1 To 10
If Len(Trim(Me.Controls("TextBox" & i))) = 0 Then
cnt = cnt + 1
End If
No.2
- 回答日時:
こんにちは。
既に回答がついているようですが、私は、質問がよく理解できないのですが……
>このなかの数字が入っているテキストボックスの数をカウントしたい
>純粋に空白のテキストボックスを数えること
>テキストボックスを1-31数字の合計を別のテキストボックスに表示
これを、同時に行えとは書いていないし、また、それを同時に行うというロジックの妥当性もありません。
あえてするなら、そう書かないと分かりません。
>If Controls("TextBox" & i).Value = "" Then
>s_su.Text =
>上の式の =の右側に何を書いたらいいかがわかりません。
これをみたら、空白のテキストボックスを数えるようにも思えます。
>val(TextBox1.Text) + val(TextBox2.Text)
これですと、テキストボックスの数字の合計のようにも思えます。
一体、どれが本当なのですか?
わかりにくい質問で申し訳ありません。
TextBoxが31個ありまして、1-31を計算、別のテキストボックスに表示
同じ1-31の空白テキストをカウント 別のテキストボックスに表示を
行いたかったのです。
上記の作業は別々で行うつもりでした。
うまくいきました。ありがとうございました。
No.1
- 回答日時:
>もっとスマートに書けるようなコード
既にあなたのマクロで実現している通りにします
sub macro1()
dim i as integer
dim res1 as integer
dim res2 as double
for i = 1 to 31
if me.controls("TextBox" & i) = "" then res1 = res1 + 1
res2 = res2 + val(me.controls("TextBox" & i))
next i
msgbox "BLANK COUNT " & res1
msgbox "SUM " & res2
end sub
ありがとうございました。まさにこの通りです。
MsgboxをTextBoxにかえてうまくいきました。
最終的に入力されているテキストボックスをカウントすることに
しました。上記 msgbox "BLANK COUNT " & res1 を 31-res1に
変えました。
もう1つ質問させてください。
すべてのテキストボックスが空の場合、計算ボタンを押すと
テキストボックスに "0"が表示されます。
これを表示されないようにするにはどうしたらいいでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
UserForm1.Showでエラーになります。
工学
-
-
4
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
5
Excel-VBA>コントロールをグレイアウトするには?
Excel(エクセル)
-
6
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
7
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
-
8
ラベル内の文字(Caption)を縦表示にする方法
Visual Basic(VBA)
-
9
シート上のコントロール(TextBoxのみ)のカウント
Visual Basic(VBA)
-
10
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
11
Accessでテキストボックスのカウント
その他(Microsoft Office)
-
12
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
13
Access の VBA 実行中に他の操作をさせたくない
Visual Basic(VBA)
-
14
vba listviewにおけるtextのAlingmentを中央にしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Word縦書きで左から右への行
-
アクセスでテキストボックスの...
-
ユーザーフォーム上にある「テ...
-
Access VBAボタンでテキストボ...
-
マクロ初心者です。エクセルの...
-
レコードを保存するコード ア...
-
Access レポート印刷するときに...
-
データベースのINT型項目にNULL...
-
YahooのIDがロックされてしまい...
-
アクセスで数値型のフィールド...
-
ACCESS フォームをそのまま印刷...
-
passwordが入れられません・・・・
-
Accessレポートのチェックボッ...
-
新規レコード行を非表示にしたい
-
Accessで、フォームからフォー...
-
「フォームを作成できませんで...
-
エクセルVBA オプションボタ...
-
ACCESSでコントロールソースの変更
-
サブフォームを非表示させる方...
-
フォームで入力しても反映されない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word縦書きで左から右への行
-
アクセスでテキストボックスの...
-
Accessテキストボックスの未入...
-
ユーザーフォーム上にある「テ...
-
Access VBAボタンでテキストボ...
-
VBA 空白テキストボックスカウント
-
チェックボックスのON OFFでの...
-
ACCESS 値の代入
-
アクセス Dlookup関数の表示が...
-
VBAでテキストボックスに斜線を...
-
ACCESSのタブオーダー
-
ACCESSのテキスト自動入力方法
-
連番を変更するマクロ
-
openoffice Base の使い方
-
Access テキストボックスのフォ...
-
Wordについて
-
エクセルの縦書きテキストボッ...
-
vba(Access2003)の記述情報
-
テキストファイル(またはCSV)...
-
エクセルのVBA
おすすめ情報