
こんにちは、よろしくお願いします。
ユーザーフォーム上にテキストボックスが 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も見ています
-
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
シート上のコントロール(TextBoxのみ)のカウント
Visual Basic(VBA)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
6
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
7
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
8
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
9
Excel VBA コンボボックスで空白を削除
その他(Microsoft Office)
-
10
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
11
ユーザーフォームのラベルに日付を表示させる方法があればお願いします。出来ればコード書いていただけると
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Word縦書きで左から右への行
-
チェックボックスのON OFFでの...
-
ユーザーフォーム上にある「テ...
-
選択フォームに入力した条件を...
-
アクセスでテキストボックスの...
-
Access レポート印刷するときに...
-
データベースのINT型項目にNULL...
-
アクセスでフォームビューがみ...
-
アクセスで数値型のフィールド...
-
複数のクエリーを一枚のレポー...
-
クエリで出来た表にチェックボ...
-
Accessレポートのチェックボッ...
-
Access2003 フォーム入力中に...
-
ACCESSの複数レポートの印刷に...
-
フォームで入力しても反映されない
-
ACCESSでオートメーションエラー
-
フィルタ後のフォームの件数の...
-
ACCESSのフォームからハイパー...
-
サブフォームに対してGoToRecor...
-
ACCESS チェックしたも...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスでテキストボックスの...
-
Word縦書きで左から右への行
-
ユーザーフォーム上にある「テ...
-
Accessテキストボックスの未入...
-
チェックボックスのON OFFでの...
-
VBAでテキストボックスに斜線を...
-
アクセス Dlookup関数の表示が...
-
VBA 空白テキストボックスカウント
-
テキストボックスや図、オブジ...
-
Access VBAボタンでテキストボ...
-
選択フォームに入力した条件を...
-
ACCESSのタブオーダー
-
indesignでテキストの連結順序...
-
ワード テキストボックスの編...
-
ACCESS 値の代入
-
wordのテキストボックスについ...
-
連番を変更するマクロ
-
Wordのテキストボックスの位置...
-
ACCESSの日付について。
-
ACCESS 日付データ
おすすめ情報