図形のテキストボックスの大きさを取得して、その値を各テキストボックスの基準の大きさとして記録しておき、テキストボックスの大きさをマウスでドラッグして大きさを変えた後、ボタン1つでもとの大きさに戻したいのですが、どのようにすればよいでしょうか?

1)図形のテキストボックス、大きさの取得方法は?
2)基準の大きさと記録する方法は?
3)記録された大きさに戻すには?(シート上に配置されたボタンで実行)

※ 複数のシートに複数のテキストボックスがあります。
※ シート毎にセットします。(シート毎にテキストボックスのサイズが違う為)
※ 現在、各テキストボックスには、基準位置がセットしてあり、ボタンで基準位置へ戻る仕組みが組まれています。(これをそのままにして・・・)

※ エクセル97と2000で使えるようにします。(作成は97)

宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 0

「テキストボックスの大きさを、基準の大きさの戻す(エクセル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|は大文字?小文字?

宜しくお願いします。

補足日時:2001/07/05 20:26
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWordのテキストボックスの行間をつめたいのです

Wordのテキストボックスの行間をつめたいのです。

他者からもらった印刷物がありますが、
文字の高さが3.3mmで行間が3.6mm程度です。
Wordでやろうとしていますがなかなかできません。
テキストボックスの中に文字を入れればテキストボックスの上との行間が縮まりますが
テクストボックス内の行間が縮まりません。
どうしたらできますか?

Aベストアンサー

こんばんは!
↓の画像でテキストボックス内の行間を12ptでやってみました。
当方使用のWord2003の場合です。

左側のテキストボックスはデフォルト(ページ設定)の1行の行間そのままです。

(1)テキストボックス内の文字を範囲指定 → メニュー → 書式 → 段落
(2)「インデントと行間隔」タブ → 間隔の「行間」の下向き▼を選択 → 「固定値」を選択(自動で12ptになると思います)
このポイント数で好みの行間に設定できます。

※ 行間とは文字の上端~次の行の文字の上端までですので、行ピッチと言った方が判りやすいかもしれません。

すなわち、フォントサイズよりも小さいpt数を設定してしまうと文字が重なってしまいます。

以上、参考になれば良いのですが
的外れならごめんなさいね。m(_ _)m

QAccess97 テキストボックスを利用したあいまい検索フォーム

Acces97にて下記のようなデータベースを使用しております。

 テーブル:銀行コード一覧(銀行コード、銀行名、支店コード、支店名、支店住所)
 クエリー:Q-銀行名検索、Q-支店名検索
 フォーム:F-銀行名検索、F-支店名検索

今は検索したいフィールド毎にクエリーとフォームが作ってあり、同じようなクエリーとフォームが複数ある状態です。
 <クエリー>
  (1)Q-銀行名検索→フィールド「銀行名」に【Like "*" & [調べたい銀行名の一部入力] & "*"】設定
  (2)Q-支店名検索→フィールド「支店名」に【Like "*" & [調べたい支店名の一部入力] & "*"】設定
  ・・・以下同様のクエリー複数あり
 <フォーム>
  (1)F-銀行名検索にQ-銀行名検索を設定
  (2)F-支店名検索にQ-支店名検索を設定
  ・・・以下同様のフォーム複数あり

今回作りたいのは、1つのフォーム内に検索したいフィールド分の検索ボタンを作り、検索したい項目をテキストボックス内に入力後該当ボタンをクリックすることによって入力した項目を含むデータが抽出されるというフォームです。
例えば、"東京"と入力し「支店名」ボタンをクリックすると『東京営業部』『東京中央』等"東京"を含むデータが抽出される といった具合です。

部署内にAccess作成事例集なるものがあり、それを元に下記のように作成してみました。
フォーム名を「F-銀行コード一覧」・テキストボックス名を「検索」として、「支店名」ボタンのマクロに [Forms]![F-銀行コード一覧]![検索]=[銀行コード一覧]![支店名] というアクション(フィルタの実行→Where条件式)を設定。しかし、これでは『東京』のみしか抽出されませんでした。
Like関数を利用するのかと思い Like "*"&[Forms]![F-銀行コード一覧]![検索]&"*"=[銀行コード一覧]![支店名] としてみましたが設定できませんでした。

どのようなアクションを設定したらフォームでのあいまい検索ができるのでしょうか?

Acces97にて下記のようなデータベースを使用しております。

 テーブル:銀行コード一覧(銀行コード、銀行名、支店コード、支店名、支店住所)
 クエリー:Q-銀行名検索、Q-支店名検索
 フォーム:F-銀行名検索、F-支店名検索

今は検索したいフィールド毎にクエリーとフォームが作ってあり、同じようなクエリーとフォームが複数ある状態です。
 <クエリー>
  (1)Q-銀行名検索→フィールド「銀行名」に【Like "*" & [調べたい銀行名の一部入力] & "*"】設定
  (2)Q-支店名検索→フィールド「支店名...続きを読む

Aベストアンサー

フムフム!

1、検索フォームのレコードソースに作成されたクエリを設定する。
2、入力された条件に基づいてフォームをリクエリする。

ということです。
ですから、マクロはこの際関係ありません。

検索したい項目毎にクエリーを作成・・・。

ではなくて、

クエリーの検索したい項目毎に抽出条件を設定。

です。

まあ、これは表現の問題で一応クリアされているとすれば、既に99%完成しています。
既に99%完成とは、「検索フォームのレコードソース=クエリ」ということです。

さて、ここからかなり怪しい記憶ですが、{Shift}{F9}か{Ctrl}{F9}で再検索(=Requery)します。
問題は、これをどのように自動化するかです。

1、コマンドボタンを検索フォームに配置。(ウィザードを使わずにただ配置)
2、同ボタンを右クリックして、次のコードを書く。

Private Sub コマンド_抽出_Click()
  Me.Requery
End Sub

作成したクエリを使うのはあくまでも検索フォーム。
この場合、「検索フォームのレコードソース=クエリ」という設定を行うという意味。
クエリを起動しても、ただ、クエリが開くだけです。

残された課題は、僅かに1行のコードを書くだけじゃないですか?
頑張って下さい。

フムフム!

1、検索フォームのレコードソースに作成されたクエリを設定する。
2、入力された条件に基づいてフォームをリクエリする。

ということです。
ですから、マクロはこの際関係ありません。

検索したい項目毎にクエリーを作成・・・。

ではなくて、

クエリーの検索したい項目毎に抽出条件を設定。

です。

まあ、これは表現の問題で一応クリアされているとすれば、既に99%完成しています。
既に99%完成とは、「検索フォームのレコードソース=クエリ」ということです。

...続きを読む

Qエクセル2002/テキストボックス内の文章の行間?

エクセル2002です。
テキストボックス内に書いた文章の行間を任意に変えることが可能ですか?

普通に書くとくっつきつぎで、一行あけると開きすぎなので、一行の半分くらいの行間にしたいのです。
テキストボックスの書式設定は見てみましたが、方法を見つけられませんでした。

Aベストアンサー

あまり良い方法と言えないかもしれませんが。

テキストボックス内に文字を入力します。
そしてテキストボックスの書式設定を出して、配置のタブを開きます。
文字の配置の縦位置を「均等割付」に設定します。
これでテキストボックスの縦の高さに合わせて、行間が広がります。
ちょうど良い行間にテキストボックスの高さを調節します。

Qエクセルでテキストファイルからフォームのテキストボックスにテキスト挿入するマクロ

マクロでフォームのテキストボックスに直接テキストファイルからテキストを挿入したいのですが出来ますか?
opentextでエクセルシートに入れてからフォームにコピーすることはできたのですが、それだと重くなってしまうので直接取り込みたいんですがうまくいきません。
VBやJAVAのreadlineのようなものは使えないんでしょうか。

Aベストアンサー

>VBやJAVAのreadlineのようなものは使えないんでしょうか。

LineInput がありますよ。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_030.html
http://rd.search.goo.ne.jp/click?DEST=http%3A%2F%2Fofficetanaka.net%2Fexcel%2Fvba%2Fstatement%2FLineInput.htm&no=2

Qパワポのテキストボックスの行間のデフォルト値の設定

パワポ2000を使っています。
テキストボックスを作ると必ず行間が9.99行となっているので、毎回1行に変更しています。作った時点に1行になるように、変更する方法がわかりません。
つまり、パワポのテキストボックスの行間のデフォルトを、現在の9.99行から1行に変更したらよいのですが、変更する方法がわかりません。

Aベストアンサー

行間を1行にしたテキストボックスを選択し、右クリックで「オートシェープの規定値」選択すると次からのテキストボックスは開業行になりませんか?

Q[Access97]フォーム上のボタン操作でチェックボックスにチェックが入るようにしたい

Accessでテーブルを元にしていない単独のフォームを作っています。
クエリで抽出条件をパラメータで入力させるのと同様に、日付を入力してレポートをプレビュー表示させるためのフォームです。
集計表を作成するレポートの名前が入ったチェックボックスがフォームにあり、クリックひとつですべてのチェックボックスにチェックを入れるボタンを設置しています。
(画面図:例)
(キャンセルなし集計ボタン)(キャンセルあり集計ボタン)
□報告書集計 □キャンセルあり報告書集計
□記録集計  □キャンセルあり記録集計
(キャンセルボタン) (レポート出力ボタン)
上図の左のふたつにはデフォルトでチェックが入っています。
キャンセルあり集計ボタン
・クリックすると右の2つにもチェックが入る。
キャンセルなし集計ボタン
・クリックすると右の2つのチェックが取れる。
これら2つの処理はVBAで Me!報告書キャンセルチェック.Value = True 等としていますが、「プロパティクリック時でエラーが発生しました」となり、うんともすんとも動きません。
レポート出力ボタン
・クリックするとそのときにチェックが入っている集計レポートをプレビュー表示する。ただしキャンセルあり~にチェックがある場合はそのすぐ左の集計は出力しない。
これもVBAで
If Me!報告書チェック.Value = True And Me!報告書キャンセルチェック.Value = True Then
DoCmd.OpenReport "報告書集計表(キャンセルあり)"
ElseIf Me!報告書チェック.Value = True Then
DoCmd.OpenReport "報告書集計表"
End If
等としてますが、やはりエラーが出ます。
VBが間違ってるのか、設定を変えてもそれをフォーム上に視覚的に反映させてないからか、それともソースとなるテーブルがないからでしょうか?

Accessでテーブルを元にしていない単独のフォームを作っています。
クエリで抽出条件をパラメータで入力させるのと同様に、日付を入力してレポートをプレビュー表示させるためのフォームです。
集計表を作成するレポートの名前が入ったチェックボックスがフォームにあり、クリックひとつですべてのチェックボックスにチェックを入れるボタンを設置しています。
(画面図:例)
(キャンセルなし集計ボタン)(キャンセルあり集計ボタン)
□報告書集計 □キャンセルあり報告書集計
□記録集計  □キャンセル...続きを読む

Aベストアンサー

>>やはりエラーが出ます。
 何というエラーが出るかがわからないと想像できませんよ。自分も特にコードにおかしいものは見当たりません。
Me!○○

Me.○○
とした方が候補がリストで出て来るので、コントロール名のミスなどがあればすぐわかると思います。


>>それともソースとなるテーブルがないからでしょうか?

 これは関係ないです。
 フォームの「更新の許可」プロパティは「はい」になっていますか?

Qテキストボックス内の行間の変え方

Microsoft Wordでテキストボックス内の行間を変えるにはどうしたらよいですか。
文字サイズを大きくすると、伴って行間も広くなってしまうのですが、行間だけを指定することができるでしょうか。教えて下さい。

Aベストアンサー

テキストボックス内のテキストを選択して右クリック
「段落」を選択してください。
行間の変更ができます。

Qスピンボタンとテキストボックスの連動

Excel2000.2003
[UserForm]に [SpinButton1] と[SpinButton2] 及び
[TextBox]を縦6 横10の表らしきものを作り
パソコン初心者にも使える様、また
入力ミスを防ぐ為に [SpinButton1.2]で必要な箇所[TextBox]の
配置のVisibleをFalse⇔Trueに変え表示するようにしたいのです
---------------------------------------------------------
 [TextBox1]     [TextBox2]
[SpinButton1]    [SpinButton2]
-------------------------------------------
[Text 3][Text 9][Text15][…][…][…][][][][]
[Text 4][Text10][Text16][…][…][…][][][][]
[Text 5][Text11][Text17][…][…][…][][][][]
[Text 6][Text12][Text18][…][…][…][][][][]
[Text 7][Text13][Text19][…][…][…][][][][]
[Text 8][Text14][Text20][…][…][…][][][][]
----------------------------------------------
[Text 1]は[SpinButton1]の値を表示します(初期値1)
[Text 2]は[SpinButton2]の値を表示します(初期値1)
[Text 3]は[SpinButton1][SpinButton2]が共に初期値1の為
デフォルトとして表示します。

SpinButton1を増減することにより、例えば
SpinButton1="2"の場合
SpinButton2の値を考慮しながら
[Text 3][Text 9][Text15][…][…][…][][][][]
[Text 4][Text10][Text16][…][…][…][][][][] 
VisibleがFalse⇔Trueに変わり 
例えば、SpinButton1="2"の場合

SpinButton2を増減すると 列配置の 例えば
SpinButton2="1"の場合
SpinButton1の値を考慮しながら
[Text 9][Text15][…][…][…][][][][]
VisibleがセットでFalse⇔Trueに変わるようにしたいのです。

意味解りますか?
どなたか助けてください。

Excel2000.2003
[UserForm]に [SpinButton1] と[SpinButton2] 及び
[TextBox]を縦6 横10の表らしきものを作り
パソコン初心者にも使える様、また
入力ミスを防ぐ為に [SpinButton1.2]で必要な箇所[TextBox]の
配置のVisibleをFalse⇔Trueに変え表示するようにしたいのです
---------------------------------------------------------
 [TextBox1]     [TextBox2]
[SpinButton1]    [SpinButton2]
-------------------------------------------
[Text 3][Text 9][Text15][…][…][…][][][][]
...続きを読む

Aベストアンサー

>こんなかんじに したいのです。

一応理解したつもりです。
下記は、
TextBox1 ~5
TextBox6 ~10
  :
TextBox36 ~40
と、提示された物と並びが異なりますが、横5・縦8に並んだものにしてあります。
 X = 1 、Y = 8 の設定の変更で任意のテキストボックスが表示されますので、スピンボタンのイベントに合わせて呼ばれるようにして見てはいかがでしょうか?

考え方の参考にして下さい。

Private Sub UserForm_Initialize()

Dim i, j
Dim Y, X

For i = 1 To 40
Controls("TextBox" & i).Visible = False
Next

X = 1
Y = 8

For j = 0 To Y * 5 - 1 Step 5
For i = 1 To X
Controls("TextBox" & i + j).Visible = True
Next
Next

End Sub

>こんなかんじに したいのです。

一応理解したつもりです。
下記は、
TextBox1 ~5
TextBox6 ~10
  :
TextBox36 ~40
と、提示された物と並びが異なりますが、横5・縦8に並んだものにしてあります。
 X = 1 、Y = 8 の設定の変更で任意のテキストボックスが表示されますので、スピンボタンのイベントに合わせて呼ばれるようにして見てはいかがでしょうか?

考え方の参考にして下さい。

Private Sub UserForm_Initialize()

Dim i, j
Dim Y, X

For i = 1 To 40
...続きを読む

QPPTのVBA 全てのテキストボックスの行間を最小

【PPTのVBA 全てのテキストボックスの行間を最小に】

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。
PPT2007でございます。

 手元に大量にあるPPTファイル群のテキストボックスの行間が全て広いため、
全て一括で小さくしてしまいたい次第でございます。
もしこれを手作業でやりますと、テキストボックスをアクティブにする→右クリック
→「段落」→「段落前」を0に。
となり時間がかかりますため、VBAでどうにかしたい次第でございます。

 しかしネットで検索しても出てこず、
また上記操作を自動記録しようといたしましても記入されません。
(PPT2007には自動記録が無いため、excel、wordでトライいたしましたが、無理でございました。。。)

一個のテキストボックスの操作方法さえ分かれば後は、
For each スライド
  For each テキストボックス
  :
  :
  Next
Next
みたいな感じで出来ると思うのでございますが。。

 もしお詳しい方がいらっしゃいましたら,お教えいただけないでしょうか。
どうぞよろしくお願いいたします。

【PPTのVBA 全てのテキストボックスの行間を最小に】

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。
PPT2007でございます。

 手元に大量にあるPPTファイル群のテキストボックスの行間が全て広いため、
全て一括で小さくしてしまいたい次第でございます。
もしこれを手作業でやりますと、テキストボックスをアクティブにする→右クリック
→「段落」→「段落前」を0に。
となり時間がかかりますため、VBAでどうにかしたい次第でございます。

 しかしネットで検索しても出てこず、
また...続きを読む

Aベストアンサー

MKT_さん
こんにちは。

下記のコードでできると思います。
※PPT2003での対応ですが…

Sub 行間変更()
 Dim I  As Long
 Dim J  As Long
 For I = 1 To ActivePresentation.Slides.Count
  With ActivePresentation.Slides(I)
   For J = 1 To .Shapes.Count
    If .Shapes(J).HasTextFrame = msoTrue Then
     .Shapes(J).TextFrame.TextRange.ParagraphFormat.SpaceBefore = 0
    End If
   Next J
  End With
 Next I
End Sub

QAccessのレポートのテキストボックスの大きさ変更

よろしくお願いします。
Access2000です。初級者ですが、多少モジュールがわかります。
現在の状況
フォームでメニュー画面があります。
コマンドボタンを使い、押すとIDを聞かれるようにしています。
クエリーでそうしています。
で、IDを入力すると該当するレコードのレポート画面が表示されます。その画面は顧客名と入金額が表示されるようになっています。

お聞きしたいのはここからです。
入金額のテキストボックスの大きさを変えるようにしたいのです。
IDを聞かれて入力した後に、大きさを聞かれるようにして、
例えば"1"と入力すると金額のテキストボックスが3cmで表示され、
"2"と入力すると4cmという具合に。
可能でしょうか。お助けください。
説明が足りなければ補足いたします。

Aベストアンサー

VBAで長さを取り扱う場合、twipという単位を使います。
1cm = 567twip です。

レポートの「開く時」のイベントで InputBox関数を使ってみました。


Private Sub Report_Open(Cancel As Integer)
Dim strWidth As String
Do While True
strWidth = InputBox("大きさを入力してください", "サイズ指定")
Select Case strWidth
Case "" 'キャンセルまたは未入力は変更せず開く
Exit Do
Case "1" '3cm
Me.入金額.Width = 567 * 3
Exit Do
Case "2" '4cm
Me.入金額.Width = 567 * 4
Exit Do
' ・・・      '以下同様に
Case Else 'それ以外は再入力
MsgBox "大きさが不正です", vbExclamation, "サイズ指定"
End Select
Loop
End Sub

VBAで長さを取り扱う場合、twipという単位を使います。
1cm = 567twip です。

レポートの「開く時」のイベントで InputBox関数を使ってみました。


Private Sub Report_Open(Cancel As Integer)
Dim strWidth As String
Do While True
strWidth = InputBox("大きさを入力してください", "サイズ指定")
Select Case strWidth
Case "" 'キャンセルまたは未入力は変更せず開く
Exit Do
Case "1" '3cm
...続きを読む


人気Q&Aランキング

おすすめ情報