• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストボックスの大きさを、基準の大きさに戻す(エクセルVBA))

エクセルVBA:テキストボックスサイズの基準値に戻す方法

このQ&Aのポイント
  • エクセルVBAを使用して、図形のテキストボックスのサイズを取得し、基準値として記録する方法について教えてください。
  • また、テキストボックスのサイズを変更した後、ボタンをクリックするとサイズが基準値に戻るような仕組みを作りたいのですが、具体的な方法を教えてください。
  • なお、エクセルのバージョンは97と2000を対象としています。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

前提がクリアされたとして・・・ 質問の意味を充分理解したかどうかは疑問ですが・・・・ 元のサイズを各シートに入力しておきます。(cm単位)   |□□□□|   No1  |   No2  |   No3  |   | 高さ |  1.01  |  1.00  |  1.20  |   | 幅  |  4.00  |  2.50  |  3.00  | 各テキストボックスを右クリックし、オートシェイブの書式設定から基本のサイズを調べます。ダイアログはcm単位ですがVBAでポイントに直します。 上のようにセルに入力して下さい。縦横の表題の交点のセル(□□□□の箇所)に範囲名「SyokiIchi_1」を付けます。「1」はシート番号の意味です。ボタンを押すことでこの値に戻します。シート2なら「SyokiIchi_2」にします。 シート1のコードウインドウに貼り付け(例) Private Sub CommandButton11_Click() 'サイズを元に戻すボタン SizeInitialize Val(Right(Me.Name, 1)), tbxClickName End Sub 標準モジュールに貼り付け Public Sub SizeInitialize(ShtNo As Integer, txtName As String) Dim txtHeight As Double '元の高さ Dim txtWidth As Double '元の幅 Dim TxtNo As Integer 'テキストボックス番号 Dim rg_iniSet As Range '初期位置を書き込んだセル範囲 If Len(txtName) <> 0 Then '選択したテキストボックス名 Set rg_iniSet = Range("SyokiIchi_" & ShtNo) TxtNo = Val(Right(txtName, 1)) With ActiveSheet.Shapes(txtName) txtHeight = rg_iniSet.Offset(1, TxtNo) 'cm単位の高さ txtWidth = rg_iniSet.Offset(2, TxtNo) 'cm単位の幅 .Height = Application.CentimetersToPoints(txtHeight) .Width = Application.CentimetersToPoints(txtWidth) .Fill.ForeColor.SchemeColor = 65 End With End If End Sub

その他の回答 (1)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

「テキストボックスの大きさを、基準の大きさの戻す(エクセルVBA)」と 「テキストボックスのフォントサイズの復元」の共通の前提です。 図形のテキストボックスを選択してコマンドボタンを押すと、ボタンを押したことで、どのテキストボックスを選択していたか分からなくなるようです。(手段を尽くせば分かるかもしれないが技術不足で・・・) どのテキストボックスを選択したか分かるように、テキストボックスをクリックしたら、その名前を覚えるようにしました。 各テキストボックスには「myText1_2」のように名前を付けます。(もう付けている?)「1」はシート番号で、「2」はそのシートでのテキストボックスの番号です。 各シートのコードウインドウにテキストボックスの個数分マクロを作ります(次はシート1に3個の場合) === シート1に貼り付け(例) === Sub myText1_1_Click() 'Sheet1のテキストボックス1を選択 tbxClickName = "myText1_1": txtSentaku tbxClickName End Sub Sub myText1_2_Click() 'Sheet1のテキストボックス2を選択 tbxClickName = "myText1_2": txtSentaku tbxClickName End Sub Sub myText1_3_Click() 'Sheet1のテキストボックス3を選択 tbxClickName = "myText1_3": txtSentaku tbxClickName End Sub 次に各テキストボックスにマクロの登録をします。(選択して右クリック)テキストボックスと対応するものを選びます。 標準モジュールに貼り付け(上の方に) Public tbxClickName As String '選択したテキストボックス名 標準モジュールに貼り付け '*** テキストボックスを選択したら色を変える *** Public Sub txtSentaku(txtName As String) With ActiveSheet.Shapes(txtName) .Select With Selection.ShapeRange.Fill.ForeColor If .SchemeColor = 65 Then .SchemeColor = 41 Else .SchemeColor = 65 End If End With .TopLeftCell.Select End With End Sub これで、テキストボックスを選択すると背景色が変わります。再度選択すると戻ります。 このアクションで内部でテキストボックス名を記憶します。 以下次へ・・・・・・

rurucom
質問者

補足

うーーーん! うまくいきません!なぜでしょう????? すみません!またお世話になります! Set rg_iniSet = Range("SyokiIchi_" & ShtNo) で、エラーです。 シートにサイズを書く位置はどこでもいいんですよねー????? とりあえず、テストファイルで、A1から書いてますけど・・・・・ 範囲名とは、SyokiIchi_1のことですよねー No1| No2 |No3|は大文字?小文字? 宜しくお願いします。

関連するQ&A