
Microsoft Excel 2013 の VBAのフォーム機能を利用してます。
TextBoxにセルを参照して文字が入ってくるようにしています。、
参照するセルによって文字列の長さが違うので
文字の大きさを自動調整してくれるマクロを使っているのですが
TextBoxがいっぱいあるため、以下のように非常に長いプログラムになってしまいました。
Private Sub textBox1_Change()
Const InitialFontSize As Double = 40 '初期フォントサイズ
Dim BufWidth As Double
Dim BufHeight As Double
With Me.TextBox1
.Font.Size = InitialFontSize
BufWidth = .Width
BufHeight = .Height
.AutoSize = True
While .Width > BufWidth
.Font.Size = .Font.Size - 2.5
Wend
.AutoSize = False
.Width = BufWidth
.Height = BufHeight
End With
End Sub
TextBox2~67は繰り返し
Private Sub textBox67_Change()
Const InitialFontSize As Double = 40 '初期フォントサイズ
Dim BufWidth As Double
Dim BufHeight As Double
With Me.TextBox67
.Font.Size = InitialFontSize
BufWidth = .Width
BufHeight = .Height
.AutoSize = True
While .Width > BufWidth
.Font.Size = .Font.Size - 2.5
Wend
.AutoSize = False
.Width = BufWidth
.Height = BufHeight
End With
End Sub
過去の質問等を参考にいろいろ試してみたのですが
自分の力不足でうまくできませんでした。
うまくまとめられるような方法等ありましたらお知恵を拝借できないでしょうか
よろしくお願い致します
No.1ベストアンサー
- 回答日時:
ほぼ、この回答者様のコードのままですが。。。
以下のコードはテキストボックス8個「TextBox1~8」を
「UserForm1」に配置した場合となります。
■標準モジュールを挿入して、以下のコードを貼付
(フォームを表示するためだけのものです)
Sub フォーム表示()
Load UserForm1
UserForm1.Show vbModeless
End Sub
■クラスモジュールを挿入して、以下のコードを貼付
Private WithEvents myText As MSForms.TextBox
Private myIndex As Integer
Public Sub S_setText(NewText As MSForms.TextBox, Index As Integer)
Set myText = NewText
myIndex = Index
End Sub
Private Sub myText_Change()
Const InitialFontSize As Double = 40
Dim BufWidth As Double
Dim BufHeight As Double
With UserForm1.Controls("TextBox" & myIndex) '★
.Font.Size = InitialFontSize
BufWidth = .Width
BufHeight = .Height
.AutoSize = True
While .Width > BufWidth
.Font.Size = .Font.Size - 2.5
Wend
.AutoSize = False
.Width = BufWidth
.Height = BufHeight
End With
End Sub
■ユーザーフォームのコードに以下のコードを貼付
Private myTextArray(1 To 8) As New Class1 '☆
Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 8 '☆
myTextArray(i).S_setText UserForm1.Controls("TextBox" & i), i '★
Next
End Sub
■貼り付けたコードの修正
末尾が☆の2箇所の「8」を実際のテキストボックスの数に合わせて変更してください
末尾が★の2箇所の「UserForm1」を実際のユーザーフォーム名に合わせて変更してください
末尾が★の2箇所の「TextBox」を実際のテキストボックス名に合わせて変更してください

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) QRコード作成マクロについて 3 2022/11/26 16:55
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
このQ&Aを見た人はこんなQ&Aも見ています
-
複数のテキストボックスのカンマ処理
Visual Basic(VBA)
-
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
-
ユーザーフォームで数字にカンマを付けたい
Excel(エクセル)
-
-
4
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
5
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
6
カンマ区切り
Visual Basic(VBA)
-
7
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
8
【エクセル】複数のTextBoxに共通するChangeイベントを簡潔に書きたい
Excel(エクセル)
-
9
VBA TEXTBOXテキストボックスの文字の大きさが一定にならない。 ユーザーフォームでテキストボ
Visual Basic(VBA)
-
10
Excel vbaで複数のテキストボックスの足し算
Visual Basic(VBA)
-
11
Vba テキストボックス文字を右端から配置していく方法
Visual Basic(VBA)
-
12
複数のtextboxの処理を一括で行えませんか?
Visual Basic(VBA)
-
13
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
14
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
15
どこにもフォーカスを当てたくない
Access(アクセス)
-
16
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
17
マクロ、PDFを任意のフォルダへ保存
Excel(エクセル)
-
18
任意で選択したセルをテキストボックスに表示
Excel(エクセル)
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
だいたいのスーパーでは天ぷら...
-
【マクロ】PasteSpecialメソッ...
-
ギターのTAB譜の記号 N.C....
-
ギターコード
-
神社を参拝するときには、左側...
-
Excel VBA Tabコードの出力
-
JISコードがわからない
-
エクセルで定時に音を出す
-
VBA ダブルクリックするたびに...
-
D7alt
-
【HULFT】 utllist とutladmin
-
【ギターコード】サイトによっ...
-
CODE関数から他の文字コードの...
-
ビートルズ「イエスタディ」ギ...
-
朝起きてテレビが溶けていたら?
-
mp3playerを首から下げて聞くと...
-
電気コードはなぜ絡まるのか
-
ギター初心者です 教えてくだ...
-
Accessに対するGrep検索
-
コードの付ける手順を教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】PasteSpecialメソッ...
-
ギターのTAB譜の記号 N.C....
-
Gmailを開いた状態でもうひとつ...
-
CODE関数から他の文字コードの...
-
マイクロソフト 一時使用コード...
-
外車 色コード BMW 色コード オ...
-
VBA ダブルクリックするたびに...
-
キングクリムゾンの「スターレ...
-
ドライアーのコードから煙が出...
-
JISコードがわからない
-
【HULFT】 utllist とutladmin
-
DLookupがうまく出来ません
-
Dadd11というコードについて
-
Em7onA 。GonB。 GonAのおさ...
-
D7alt
-
ギターで2弦2フレットと3弦2フ...
-
草刈の際に電源ケーブルを切断...
-
電気製品のコードが溶けました
-
ディーバの言葉の意味
-
実行時エラー3251対応処理方法
おすすめ情報