こんにちは、よろしくお願いします。
ユーザーフォーム上にテキストボックスが 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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA ユーザーフォーム内のラベルにテキストボックスの小計を出す方法 5 2022/08/17 14:27
- その他(Microsoft Office) エクセルのマクロを教えてください。 1 2023/01/27 09:05
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
UserForm1.Showでエラーになります。
工学
-
-
4
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
-
5
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
6
TextBoxから数字が文字として入力される?
Visual Basic(VBA)
-
7
Excel ユーザーフォームで計算 空欄の場合のエラー処理
Visual Basic(VBA)
-
8
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
9
ExcelVBA でリストリストボックスにNULLを挿入
Access(アクセス)
-
10
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
11
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
12
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
13
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
14
Excel VBAにてUserFormのTextBoxにセルの値を色情報込みで反映させる方法があれば教えてください。
会計ソフト・業務用ソフト
-
15
シート上のコントロール(TextBoxのみ)のカウント
Visual Basic(VBA)
-
16
ExcelVBA EnableプロパティがFalseの時に文字の色を変えたくない
Visual Basic(VBA)
-
17
エクセルVBA ユーザーフォーム 複数のコンボボックス 同一リスト
Excel(エクセル)
-
18
Access VBAで int型にnullを入れる方法について
Windows Vista・XP
-
19
数字以外の入力をエラーにするには?
Visual Basic(VBA)
-
20
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスでテキストボックスの...
-
ユーザーフォーム上にある「テ...
-
openoffice Base の使い方
-
Word縦書きで左から右への行
-
YahooのIDがロックされてしまい...
-
Accessで、フォームからフォー...
-
サブフォームに対してGoToRecor...
-
レコードを保存するコード ア...
-
Accessの検索フォームで。
-
Accessフォームからパラメータ...
-
エクセル 自動入力
-
エクセルをACCESSのレポ...
-
このオブジェクトに値を代入す...
-
Accessで上の行を自動でコピー...
-
皆さん使っているブラウザを教...
-
エクセルVBA ユーザーフォーム...
-
MSワード 年齢を計算表示でき...
-
Accessでチェックボックスで抽...
-
アクセスで特定のレコードのみ...
-
フォームの高さを数値で指定し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word縦書きで左から右への行
-
アクセスでテキストボックスの...
-
Accessテキストボックスの未入...
-
Access VBAボタンでテキストボ...
-
チェックボックスのON OFFでの...
-
ユーザーフォーム上にある「テ...
-
VBAでテキストボックスに斜線を...
-
VBA 空白テキストボックスカウント
-
アクセス Dlookup関数の表示が...
-
ACCESS 値の代入
-
連番を変更するマクロ
-
ACCESSのタブオーダー
-
Wordについて
-
エクセルVBA テキストボックス...
-
Wordのテキストボックスの位置...
-
ワード テキストボックスの編...
-
indesignでテキストの連結順序...
-
テキストボックスや図、オブジ...
-
選択フォームに入力した条件を...
-
【Access】 テキストボックスへ...
おすすめ情報