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

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

テキストボックスの大きさを、基準の大きさに戻す(エクセルVBA)

図形のテキストボックスの大きさを取得して、その値を各テキストボックスの基準の大きさとして記録しておき、テキストボックスの大きさをマウスでドラッグして大きさを変えた後、ボタン1つでもとの大きさに戻したいのですが、どのようにすればよいでしょうか? 1)図形のテキストボックス、大きさの取得方法は? 2)基準の大きさと記録する方法は? 3)記録された大きさに戻すには?(シート上に配置されたボタンで実行) ※ 複数のシートに複数のテキストボックスがあります。 ※ シート毎にセットします。(シート毎にテキストボックスのサイズが違う為) ※ 現在、各テキストボックスには、基準位置がセットしてあり、ボタンで基準位置へ戻る仕組みが組まれています。(これをそのままにして・・・) ※ エクセル97と2000で使えるようにします。(作成は97) 宜しくお願い致します。

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

  • ベストアンサー
  • 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

  • テキストボックスの移動(2)

    前回、質問しましたが、回答いただいたプログラムで、別のシートから複数のシートのテキストボックスの移動を移動させたいのですが・・・ たとえば、Sheet1・Sheet2・Sheet3にテキストボックス1が配置してあって、A位置とB位置に動くようにしてあります。 前回のプログラムでは、各シートに位置を指定するボタンが配置してありましたが、このボタンをSheet5に配置して、Sheet1・Sheet2・Sheet3の各テキストボックス1が一斉に動くようにしたいのですがよろしくお願いします。 前回のURL → http://oshiete1.goo.ne.jp/kotaeru.php3?q=85846

  • テキストボックスを消すVBA

    ボタンを押すことでテキストボックスが消えるようにしたいのですが、 ボタンは、2つ 「ONとOFF」 1~3のSheetにあるテキストボックスをSheet5に配置した「ONとOFF」のボタンで操作するようにしたいのですがよろしくお願いします。

  • テキストボックスのフォントサイズの復元

    エクセルのシート上にある、図形のテキストボックスのフォントサイズに「12」をセットしておいて、シート上に配置してあるコントロールボタンをクリックする事で、変更されたサイズから「12」へもどす仕組みを作りたいのですが・・・ テキストボックスのフォントサイズ 「12」から、テキストボックスをアクティブにし、ツールバーでフォントサイズを変更する。 ↓ ** その後 シート上に配置されたボタンを押すと元の「12」に戻る ※ エクセル97、2000で使用(作成は97) こんなことできますか? できれば、どなたか教えて下さい。宜しくお願いします。

  • テキストボックスをグループ化するVBA

    エクセル上に並んだテキストボックスを、ボタンを押すことで、任意のテキストボックスをグループ化させたい。また、別のボタンでグループ化の解除が出来るようなVBAをおしえてください。 テキストボックスは、Sheet1~3まであって、ボタンもそれぞれに配置してあり、 どこのSheetのボタンを押しても、各シート、それぞれに任意の設定したテキストボックスがグループ化できるようにしたい ※各シート、グループ化するテキストボックスはおなじでなない・・・ よろしくお願いします。

  • エクセルVBAで、テキストボックスにセルの値を入れる

    宜しくお願いします。 エクセルデータの各項目を、すでに書式(表)が印刷された用紙のそれぞれの項目の位置に印刷させたいのですが・・・ 各項目には、500行ぐらいのデータがあり、別のワークシートの表示させたい位置(すでに印刷された用紙にあわせてある)に各項目ごとのテキストボックスを作っておいて、そのテキストボックスに各項目のデータを1行ごとに表示させて、テキストボックスのフォント調整、印刷 ~を繰り返したいのですが、どのようなコードを書けばよいのでしょうか? 進め方としては、データシートからテキストボックスに各項目のデータが表示されたら、シート上でテキストボックスのフォントや位置の微調整が出来るようにしておいて、印刷ボタンをクリックすると印刷され、次へのボタンをクリックすると、次の行のデータがテキストボックスに表示されるようにしたい。 ※印刷する場合は、テキストボックス内の文字のみ印刷(シートには印刷したくない文字書きたいので・・・) また、そのフォームには、パターンが5つあって、データには1行ごとにパターン番号が入力されているとして、それぞれのパターンにあわせたテキストボックスの配置してあるシートへ行くようにもしたい。 データの入れ替わりが多いので、別のワークブックと繋がるような仕組みにしておいて、テキストボックスの配置してあるブック側から、データのあるブックを呼びに行ってデータを取りに行くようにしておきたい。 以上、条件が多くてすみませんが、VBAは初心者で、ほんの部分的にしかまだ分かりません。どなたか詳しい方宜しくお願いします。

  • テキストボックスの移動

    図形のテキストボックスをエクセル上に配置しているのですが、これをVBAを使って、配置されている位置を変える方法を探しています。 仕組みとしては、 1)ボタンを押す毎に、予め決めてい置いた位置、2個所~3個所へ移動していく方法 2)ボタン名に場所を示す何らかの名前が付いていて(例えば位置A、B・・・等)そのボタン(位置A)を押す事で予め決めておいたA位置へ、位置Bボタンを押すとB位置へ移動する方法 2点の仕組みで作りたいのですが、どなたか詳しい方、宜しくお願いします。

  • EXCELの図形(テキストボックス)を固定したい

    いつもお世話になっております。 ご存知の方がいらっしゃいましたら、お手数ですがご教授下さい。 当方EXCEL2010を使用しております。 シートに画像を貼り付けた後、その画像の上に図形(テキストボックス)を配置し、 テキストボックスの中の文字列は入力可能にしたいのと、 このテキストボックスの位置は移動不可にしたいので、 シートの保護等でオブジェクトのロックを行ったのですがうまくいきません。 ※図形の移動はロックできたのですが、同時に文字列も編集できなくなってしまいました。 どのような手順で固定したらいいのでしょうか? 当方語彙が乏しいのでうまく伝えられずすみません。 お手数ですが、よろしくお願いいたします。

  • EXCELでテキストボックスを選べない

    EXCELでのシートで セルにはデータが入っています セルはそれぞれクリックできます シートの真ん中に テキストボックス(四角い図形の中に テキストが入力されているので) があり それをクリックしようとすると ○の中に /が入っている 警告のようなものが出てきて テキストボックスを選べません  シートは保護されていないようです どんな設定がされていますか

  • Accessのレポートでのテキストボックス等の位置調整について

    現在、Accessのレポートを作成しています。 複数のテキストボックスを配置し、ドラッグして位置を調整しているのですが、マウスでドラッグした時の移動量が多すぎて目的の位置にボックスを移動できません。ラベル等でも同様です。 ドラッグした時にボックスが移動する量を減らすような操作方法がありませんでしょうか。以前、どこかのWebページで見たような気がするのですが、いくら検索しても見つかりません。ぜひご教授ください。よろしくお願いいたします。

  • Excel : テキストボックス中のテキストの検索・置換

    Excelの図として貼り付けたテキストボックスにテキストが入力されていて、そのテキストボックスが数十個、シートに貼り付けられています。またそれが30シートくらいあります。 このたくさんのテキストボックスに入力されたテキストを複数のシートに渡って一括置換する方法はありませんでしょうか。

専門家に質問してみよう