
エクセルのVBAについて質問させてください。
フォームにtxt1.text~txt14.textがあります。
cmdDSをclickしたときに空値をセット(= "")したく、今は下のようになっています。
private sub cmdDS_click()
txt1.text = ""
txt2.text = ""
…
end sub
ですが、1~14という数字以外はすべて同じ文であることから数字の部分だけを入れ替えるようにし、loopのようなものを使ってもっと簡単にできないでしょうか?
マクロを組めば必然的にファイルのサイズが大きくなってしまうと言うことはわかっていますが、サイズを抑えるためにできることやそう言ったことについてのHPなどがありましたら併せて教えていただきたいと思います。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは。
>フォームにtxt1.text~txt14.textがあります。
txt1とかいうのは何ですか? TextBox のことですか?
フォームとは何ですか? UserForm ですか?
Form ツールのフォームには、TextBox とは呼びません。
Excelの場合は、できる限り標準名称を使用してください。オブジェクトの名前自体をVBのコントロールの名称にわざわざ書き換えているようですが、書き換えの手間とか面倒になると思います。なお、VBなら、コントロール配列を使えばよいと思います。また、Excelのこの種のコントロールで擬似的なコントロール配列は、あまり賛成できません。
一応、UserForm のTextBox とさせていただきます。
UserForm 場合
For i = 1 To 14
Me.Controls("Txt" & i).Text = ""
Next
>マクロを組めば必然的にファイルのサイズが大きくなってしまう
基本的に誤解があるように思います。
私は、Excelの使用メモリを減らすために、マクロを組みます。特に、Mode 関数や Frequency 関数のような配列を使うと、大きなファイルでは、とても、そのままでは使えませんので、その代わりに、マクロに切り替えます。また、アドインにすることにり、マクロ部とデータ部と切り離すなど、いくつかのテクニックがあります。
少し、話を膨らませて、個人的なことも書かせてもらいます。
Excelというものは、基本的にはファイルサイズの限界というものは、明確には仕様には出ていません。しかし、Excelを使用するキャッシュ・メモリがあるわけで、それは、私たちが想像するよりもはるかに小さいのです。マクロは、ファイルを開き、セキュリティ・パスが通れば、中間言語にコンパイルされます。その中間言語のファイルのストックの大きさには、当然限界はあるのですが、ファイルサイズとの直接の関係があるとはいえません。間接的には、他のメモリに押しやられることはあるかと思います。
サイズを抑えるというよりも、まずワークシート全体のメモリ管理をしなくてはならないのです。
マクロについては、「マクロの最適化」という名称で、マイクロソフトのサポートのライブラリに残されていますし、私もその内容については、ここの掲示板に書いたことがありますが、多くの方がは、それを重要視しません。しかし、ある程度のVBAに精通している方であれば、この基本的なルールをご存知ないとすれば、とても残念なことだと思います。そのルールに当てはめれば、正しいか正しくないか一目瞭然のはずなのです。
VBAコードを最適化する
http://msdn.microsoft.com/library/ja/default.asp …
詳しい内容は、『Microsoft Office プログラマーズガイド』の中にあります。(私の所有しているものは、Office 97とOffice 2000)
Office Tanaka でも、少し書いてありますが、こちらは、内容的に、それがそのまま応用できるわけでもなければ、その実験がそのまま実務で使えるわけでもありません。この方の原則を踏襲している人もあるようですが、おかしなコードになりやすいように思います。たとえば、シートをIndex で呼び出すというのは、現実的ではありません。
Office Tanaka
http://www.officetanaka.net/excel/vba/speed/inde …
なお、補足として、ワークシートのメモリを減らす方法として、以下があります。
[XL] メモリを節約するワークシートの作成方法
http://support.microsoft.com/kb/401704/ja
不備ばかりの質問で申し訳ありませんでしたが、回答ありがとうございました。
サイズについては理解するのにまだ時間がかかりそうですが、
マクロはお陰様で組むことができました。
本当にありがとうございました。
No.4
- 回答日時:
こんばんは。
#2の回答者です。割り込みさせていただきます。
ただし、UserFormを条件とします。
>If Left$(ctrl.name, 3) = "txt" Then ctrl.Text = ""
>If Left$(ctrl.name, 2) = "op" Then ctrl.Value = False
そういう形にするなら、普通は、オブジェクト型を取って処理すれば良いのでは?
ただし、Optionボタンを、あえてすべてFalse にするという考え方自体はヘンですが。
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is MSForms.TextBox Then
ctrl.Text = ""
ElseIf TypeOf ctrl Is MSForms.OptionButton Then
ctrl.Value = False
End If
Next
No.3
- 回答日時:
3つの場合((テキストボックスも、フォームも、フォームへD&Dしてから名前を変えてない場合。
)全部初期化かクリアする方法
Private Sub CommandButton1_Click()
For i = 1 To 3
’UserForm1.Controls("TextBox" & i).Text = "aa" '初期化
UserForm1.Controls("TextBox" & i).Text = "" 'クリア
Next i
End Sub
ーー
#1のオプションボタンの場合
Frameを普通使うと思うが、使わない場合の例
Private Sub CommandButton1_Click()
UserForm1.OptionButton2.Value = True
MsgBox "A"
For i = 1 To 3
UserForm1.Controls("OptionButton" & i).Value = False 'False
Next i
End Sub
上2行はテスト確認の為に入れている。
グループ化したオプションボタンのOnのもの1つをOffにすればよいが
無駄をして、3つともOFFにしている。
ーー
http://www.hisystec.co.jp/VBAroom/VBA08.html
を参照
Frameを普通使うと思うが(下記はFrameが2つ、オプションボタン各3つの例)
AAが表示された瞬間でOnになっていることを確認し、OKをクリックで消える(Offになる)ことを確認してください
Private Sub CommandButton1_Click()
UserForm1.Frame2.OptionButton5.Value = True
MsgBox "AA"
For i = 4 To 6
UserForm1.Frame2.Controls("OptionButton" & i) = False
Next i
End Sub
No.1
- 回答日時:
以下は一例です。
フォーム上のコントロールを検索して、名前の左3文字が "txt"なら内容をクリアします。
※"UserForm1"はフォーム名なので、お使いのフォーム名に直してください。
Private Sub CommandButton1_Click()
Dim ctrl As Control
For Each ctrl In UserForm1.Controls
If Left$(ctrl.Name, 3) = "txt" Then
ctrl.Text = ""
End If
Next
End Sub
ありがとうございました。
お礼に書こうか補則に書こうか悩んだのですが、
同じ方法でオプションボタンをfalseにできないでしょうか?
(同じコマンドボタンをクリックしたときの動作としてです。)
Dim ctrl As Control
For Each ctrl In (4)Form予定入力.Controls
If Left$(ctrl.name, 3) = "txt" Then ctrl.Text = ""
If Left$(ctrl.name, 2) = "op" Then ctrl.Value = False
End If
Next
こうかな?と思ったのですが、
テキストを空値にすることしかできませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) chromedriverのver-upで動作不安定となった 3 2022/07/07 11:32
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
昨日まで動いていたエクセルの...
-
VBAを一度起動するとずっと出て...
-
マクロを消すマクロは不可能?
-
Excelマクロ ファイル名が変わ...
-
Excelが勝手にシート移動してし...
-
VBA マクロ実行時エラー’1004Ra...
-
excelファイルに使われているVB...
-
コピーしたファイルのマクロを...
-
マクロを設定したのに、拡張子...
-
Excel>マクロを使っていないは...
-
excelが別プロセスで起動してし...
-
別のパソコンでエクセルのマク...
-
EXCEL マクロ クリップボードク...
-
マクロで自動保存を無効にしたい
-
【マクロ】エラーが発生⇒実行時...
-
エクセル開く時重たい
-
アクセスからエクセルファイル...
-
エクセルマクロ実行中に別ファ...
-
Excelからnotesメールを自動で...
-
アクセスでファイルを開いたと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
昨日まで動いていたエクセルの...
-
VBAを一度起動するとずっと出て...
-
エクセル終了時の保存確認メッ...
-
コピーしたファイルのマクロを...
-
別のパソコンでエクセルのマク...
-
excelファイルに使われているVB...
-
VBA マクロ実行時エラー’1004Ra...
-
マクロを消すマクロは不可能?
-
エクセルマクロ実行中に別ファ...
-
EXCEL マクロ クリップボードク...
-
アクセスでファイルを開いたと...
-
【マクロ】エラーが発生⇒実行時...
-
Excelマクロ ファイル名が変わ...
-
Excelが勝手にシート移動してし...
-
エクセル2013vbaで、見えない名...
-
エクセルファイルを自身のファ...
-
Excel2010 PERSONAL.xlsbの挙動...
-
マクロを設定したのに、拡張子...
-
excelでpersonal.xlsを常に開く...
-
excelが別プロセスで起動してし...
おすすめ情報