図形のテキストボックスの大きさを取得して、その値を各テキストボックスの基準の大きさとして記録しておき、テキストボックスの大きさをマウスでドラッグして大きさを変えた後、ボタン1つでもとの大きさに戻したいのですが、どのようにすればよいでしょうか?
1)図形のテキストボックス、大きさの取得方法は?
2)基準の大きさと記録する方法は?
3)記録された大きさに戻すには?(シート上に配置されたボタンで実行)
※ 複数のシートに複数のテキストボックスがあります。
※ シート毎にセットします。(シート毎にテキストボックスのサイズが違う為)
※ 現在、各テキストボックスには、基準位置がセットしてあり、ボタンで基準位置へ戻る仕組みが組まれています。(これをそのままにして・・・)
※ エクセル97と2000で使えるようにします。(作成は97)
宜しくお願い致します。
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
これで、テキストボックスを選択すると背景色が変わります。再度選択すると戻ります。
このアクションで内部でテキストボックス名を記憶します。
以下次へ・・・・・・
この回答への補足
うーーーん! うまくいきません!なぜでしょう?????
すみません!またお世話になります!
Set rg_iniSet = Range("SyokiIchi_" & ShtNo)
で、エラーです。
シートにサイズを書く位置はどこでもいいんですよねー?????
とりあえず、テストファイルで、A1から書いてますけど・・・・・
範囲名とは、SyokiIchi_1のことですよねー
No1| No2 |No3|は大文字?小文字?
宜しくお願いします。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- その他(Microsoft Office) パワーポイントやワード、エクセルでのスライドショーやテキストの微調整について 1 2023/01/12 05:50
- Visual Basic(VBA) Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。 3 2023/03/19 18:31
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- Access(アクセス) テキストボックスの値をテーブルに入力したい 2 2022/06/28 12:08
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- Visual Basic(VBA) ExcelVBAでユーザーフォームでテキストボックスなどからセルに連続して入力するコーディングの際の 2 2022/06/29 22:51
- Visual Basic(VBA) Vba 電卓 一文字消すボタン 3 2022/05/04 13:40
- Visual Basic(VBA) テキストボックス1の値に対するテキストボックス2に表示する値 1 2022/04/05 14:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでブック内の倍率がバ...
-
EXCELで複数のシートを一度に「...
-
特定のシートのみ再計算させな...
-
エクセルで複数のシートに画像...
-
エクセル シート同士の引き算
-
SUMIF関数【複数のシート...
-
エクセルのシー名を二段表示に...
-
EXCELの「シートの見出し」のフ...
-
エクセル シートのグループ化...
-
アクセスからエクセルのシート...
-
エクセルの2つのシートを並び...
-
エクセルでシート数が分からな...
-
複数シートの選択解除の方法
-
Excelでの複数シートにまたがる...
-
ワークシートそのものの色を変...
-
DATE関数 4月31日などのあ...
-
エクセルでリンク貼り付けした...
-
エクセルのシートが消えた
-
Accessのテーブルを既存のExcel...
-
エクセル、別のシートの表をポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
特定のシートのみ再計算させな...
-
エクセルでブック内の倍率がバ...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルの2つのシートを並び...
-
EXCELの図形(テキストボックス)...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
特定の複数のシートに同じ処理...
-
エクセルのシー名を二段表示に...
-
Wordで差し込み印刷時に表示す...
-
エクセルで、シートの名前を変...
-
エクセルでリンク貼り付けした...
-
エクセル、特定のシートにパス...
-
accessへエクセルの複数のシー...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
EXCELの「シートの見出し」のフ...
おすすめ情報