こんにちは、よろしくお願いします。
ユーザーフォーム上にテキストボックスが 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)
-
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
-
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
-
4
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
5
ユーザーフォームのTextに数値を入れるとセルにエ
Excel(エクセル)
-
6
UserForm1.Showでエラーになります。
工学
-
7
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
8
ExcelVBA でリストリストボックスにNULLを挿入
Access(アクセス)
-
9
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
10
Excel VBAにてUserFormのTextBoxにセルの値を色情報込みで反映させる方法があれば教えてください。
会計ソフト・業務用ソフト
-
11
TextBoxから数字が文字として入力される?
Visual Basic(VBA)
-
12
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
13
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
14
Access VBAで int型にnullを入れる方法について
Windows Vista・XP
-
15
シート上のコントロール(TextBoxのみ)のカウント
Visual Basic(VBA)
-
16
ユーザーフォームで動的(Me.Controls.Add)に作成したコントロールの削除
Visual Basic(VBA)
-
17
ExcelVBA EnableプロパティがFalseの時に文字の色を変えたくない
Visual Basic(VBA)
-
18
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
19
VBAから変更した時だけイベントを発生させない方法
Excel(エクセル)
-
20
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスでテキストボックスの...
-
VBAでテキストボックスに斜線を...
-
もう一点、組織図について
-
accessのフォームで日付を定形...
-
ACCESS 値の代入
-
Word縦書きで左から右への行
-
Accessテキストボックスの未入...
-
チェックボックスのON OFFでの...
-
スクロールテキストボックスで...
-
ユーザーフォーム上にある「テ...
-
passwordが入れられません・・・・
-
YahooのIDがロックされてしまい...
-
レコードを保存するコード ア...
-
Access レポート印刷するときに...
-
データベースのINT型項目にNULL...
-
Accessで、フォームからフォー...
-
エクセルをACCESSのレポ...
-
アクセスの自動保存解除はでき...
-
ACCESSのフォーム上で複数検索...
-
Accessでサブフォームのボタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスでテキストボックスの...
-
Word縦書きで左から右への行
-
Access VBAボタンでテキストボ...
-
チェックボックスのON OFFでの...
-
VBA 空白テキストボックスカウント
-
VBAでテキストボックスに斜線を...
-
ユーザーフォーム上にある「テ...
-
Accessテキストボックスの未入...
-
ACCESSのタブオーダー
-
ACCESS 値の代入
-
openoffice Base の使い方
-
アクセス Dlookup関数の表示が...
-
連番を変更するマクロ
-
エクセルの縦書きテキストボッ...
-
テキストボックスや図、オブジ...
-
エクセルVBA テキストボックス...
-
Wordのテキストボックスの位置...
-
スクロールテキストボックスで...
-
マクロ初心者です。エクセルの...
-
エクセル2000での2つのテキスト...
おすすめ情報