Excel2000のVBAでユーザーフォームを使って簡単なインターフェースを作っています。
今まではほとんど IF~Then 文のみでどうにかなるよう処理をしてきましたが、今回はさすがにコードが長くなってしまうので何とかしたいと思い質問させていただきました。
現在
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
…
TextBox50.Value = ""
のような処理になっています。
こういった処理が複数回あり、コードが長くなってしまっています。
これを簡素化する方法はないでしょうか?
No.3ベストアンサー
- 回答日時:
こんにちは。
単に、以下のような単独のプロシージャーか、サブルーチン化させるなら、同じUserformモジュールにしたらいかがですか?
Private Sub CommandButton1_Click()
For i = 1 To 50
Me.Controls("TextBox" & CStr(i)).Value = ""
Next
End Sub
'--------------------------------
'または、
Private Sub CommandButton1_Click()
Call s_TextBoxesClear
End Sub
Sub s_TextBoxesClear()
For i = 1 To 50
Me.Controls("TextBox" & CStr(i)).Value = ""
Next
End Sub
もちろん、Userformが複数あるなら、標準モジュールを使うべきかもしれませんが。
回答ありがとうございました。
今回はコードの記述を簡素化したかったので、上の方法で解決できました。
For~Nextを使うところまでは推察できていたのですが、CStrを知りませんでした。これで一つお利口になれましたw
No.2
- 回答日時:
失礼・・・。
わざわざオブジェクトに入れる必要ありません^^;(しかもObject型つかっちゃってるし・・・)【UserForm1】
Private Sub UserForm_Click()
Call TextInitialize(Me)
End Sub
【Module1】
Public Sub TextInitialize(ByRef Frm As UserForm)
Const CtrlName As String = "TextBox"
Const CtrlStIdx As Long = 1
Const CtrlEdIdx As Long = 50
Dim i As Long
For i = CtrlStIdx To CtrlEdIdx
Frm.Controls(CtrlName & CStr(i)).Text = ""
Next
End Sub
他にもミスしてそう・・・(笑)
No.1
- 回答日時:
> こういった処理が複数回あり、コードが長くなってしまっています。
複数回あるのであれば、この部分だけサブルーチン化してしまえば良いと思います。
以下は例です。
【UserForm1】
Private Sub UserForm_Click()
Call TextInitialize(Me)
End Sub
【Module1】
Public Sub TextInitialize(ByRef Frm As UserForm)
Const CtrlName As String = "TextBox"
Const CtrlStIdx As Long = 1
Const CtrlEdIdx As Long = 50
Dim Obj As Object
Dim i As Long
For i = CtrlStIdx To CtrlEdIdx
Set Obj = Frm.Controls(CtrlName & CStr(i))
Obj.Text = ""
Next
End Sub
早速の回答ありがとうございました。
こんなに早く回答がくるとは思っていませんでした。
今回はとりあえず簡単そうな方法でやってみることにします。
行き当たりばったりで作っているので、苦労してますが、今後必要に応じてサブルーチン化も検討したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
土曜の昼、学校帰りの昼メシの思い出
週休2日が当たり前の今では懐かしい思い出ですが、昔は土曜日も午前中まで学校や会社がある「半ドン」で、いつもよりちょっと早く家に帰って食べる昼ご飯が、なんだかちょっと特別に感じたものです。
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
-
複数のテキストボックスに同じ処理をしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォー...
-
GOSUB命令とは
-
初心者です。Perlではどんな時...
-
VBAで2重のDoLoop関数から抜け...
-
COBOLで、Shellを起動するには?
-
Attempt to free unreferenced ...
-
サブルーチンを認識しません。
-
Excel VBAでリンク切れをチェッ...
-
perlをバージョンアップしたら...
-
VBAで別モジュールへの変数の受...
-
Excelで時刻になったら知らせて...
-
Excel VBA 『Call』で呼び出す...
-
標準モジュールを削除したい。(...
-
VBSがコンパイルエラーになりま...
-
VBAで旧字体を異字体に一括で変...
-
erf(x)とerfc(x)のカタカナ読み...
-
エクセルVBA クラスモジュール...
-
VBでグローバル変数を宣言するには
-
LCD ディスプレイを Raspberry ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォー...
-
モジュールとサブルーチン
-
オフコン(富士通Kシリーズ)...
-
COBOLで、Shellを起動するには?
-
配列と互換性のない型の要素に...
-
サブルーチンを認識しません。
-
初心者です。Perlではどんな時...
-
ExcelVBA AddinでOnAction
-
”:”がいっぱいの文について。
-
fortran95実行エラー
-
ACCESSのVBAでPrivate Sub ~en...
-
Excel2000VBA 複数のテキストボ...
-
perlの構文でカンマの意味が分...
-
プログラムの「生産性」について
-
初歩的な質問なのですが、サブ...
-
Attempt to free unreferenced ...
-
cobol サブルーチンのlink
-
GOSUB命令とは
-
Excel VBAから利用できるフリー...
おすすめ情報