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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
複数のテキストボックスのカンマ処理
Visual Basic(VBA)
-
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
-
-
4
カンマ区切り
Visual Basic(VBA)
-
5
VBA テキストボックスの計算
Visual Basic(VBA)
-
6
【エクセル】複数のTextBoxに共通するChangeイベントを簡潔に書きたい
Excel(エクセル)
-
7
ユーザーフォームで数字にカンマを付けたい
Excel(エクセル)
-
8
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
9
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
10
VBA テキストボックスに3桁カンマ表示させたい
その他(Microsoft Office)
-
11
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
12
複数のテキストボックスに同じ処理をしたい
Visual Basic(VBA)
-
13
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
14
Excel VBA ユーザーフォームのテキストボックスで
Visual Basic(VBA)
-
15
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
16
Excel vbaで複数のテキストボックスの足し算
Visual Basic(VBA)
-
17
VBA。複数のChangeイベントをまとめる方法
Visual Basic(VBA)
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
◎PPMのコードをお教えいただ...
-
Gmailを開いた状態でもうひとつ...
-
ギターのTAB譜の記号 N.C....
-
パソコンから出てる有線コード...
-
『車の中でかくれてキスをしよ...
-
VBA ダブルクリックするたびに...
-
カッコウ をギターで・・・
-
ジェフベックの「哀しみの恋人...
-
ドライアーのコードから煙が出...
-
片側がUSBで片側がイヤホンジャ...
-
Dadd11というコードについて
-
最終鬼畜一部声、もしくは最終...
-
ギターを練習するに当たってコ...
-
JANコード、ITFコードの作成
-
マイクロソフト 一時使用コード...
-
【マクロ】文字を1文字づつ、...
-
500マイルのアルペジオ教えてく...
-
マイクロソフト OFFICEが 安い...
-
アコースティックギターの弾き方
-
開封した延長コードが型着いて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA ダブルクリックするたびに...
-
ギターのTAB譜の記号 N.C....
-
マイクロソフト 一時使用コード...
-
片側がUSBで片側がイヤホンジャ...
-
JAN コードとITFコードの違い...
-
ドライアーのコードから煙が出...
-
Gmailを開いた状態でもうひとつ...
-
ギターのコード?見ただけでど...
-
マイクロソフト OFFICEが 安い...
-
JANコード、ITFコードの作成
-
DLookupがうまく出来ません
-
CODE関数から他の文字コードの...
-
コード
-
【マクロ】文字を1文字づつ、...
-
音感
-
◎PPMのコードをお教えいただ...
-
D7alt
-
ギターで2弦2フレットと3弦2フ...
-
コードを白く塗りたい
-
【EXCEL-VBA】PDFファイルを開...
おすすめ情報