前回、質問しましたが、回答いただいたプログラムで、別のシートから複数のシートのテキストボックスの移動を移動させたいのですが・・・
たとえば、Sheet1・Sheet2・Sheet3にテキストボックス1が配置してあって、A位置とB位置に動くようにしてあります。
前回のプログラムでは、各シートに位置を指定するボタンが配置してありましたが、このボタンをSheet5に配置して、Sheet1・Sheet2・Sheet3の各テキストボックス1が一斉に動くようにしたいのですがよろしくお願いします。
前回のURL → http://oshiete1.goo.ne.jp/kotaeru.php3?q=85846
No.1
- 回答日時:
前回VBAを少し変えました。
2箇所のTextBoxの位置は各シートで同一としています。各TextBoxにはSheet1,2,3に対応してmyText1,myText2,myText3の名前を付けています。
標準モジュールに貼り付けます。
'四角形を動かす(例:四角形は各シートに1個)
Public Sub ShapeMove2()
Const ShpNum = 2 '四角形の個数
Dim ShpTop(2), myShpTop As Double '動かす各位置、表示位置
Dim ShpLeft(2), myShpLeft As Double '動かす各位置、表示位置
ShpTop(1) = 71.25: ShpLeft(1) = 90.75 '***縦・横位置の登録***
ShpTop(2) = 98.25: ShpLeft(2) = 276
Dim ct As Integer 'カウンタ
Dim myShpIdx As Integer '四角形の順序
Dim ws As Integer 'シート
Application.ScreenUpdating = False
'シート1を代表にして今ある位置を調べる
Worksheets("Sheet1").Activate
With ActiveSheet.Shapes("myText1")
myShpTop = .Top '今あった位置
myShpLeft = .Left '今あった位置
myShpIdx = 0
For ct = 1 To ShpNum
If myShpTop = ShpTop(ct) And myShpLeft = ShpLeft(ct) Then
myShpIdx = ct '何番目か探す
End If
Next
'次の場所はどっち?
myShpIdx = myShpIdx + 1
If myShpIdx > ShpNum Then
myShpIdx = 1
End If
End With
'各シートで動かす
For ws = 1 To 3
Worksheets("Sheet" & ws).Activate
With ActiveSheet.Shapes("myText" & ws)
'次の場所にする
.Top = ShpTop(myShpIdx)
.Left = ShpLeft(myShpIdx)
End With
Next
Worksheets("Sheet5").Activate
Application.ScreenUpdating = True
End Sub
シート5のシートモジュールに貼り付けます。
Private Sub CommandButton1_Click()
ShapeMove2
End Sub
もう寝よう・・・
この回答への補足
nishi6さん、ありがとうございます。うまくうごきました。
しかし、Aの位置にする為のボタンと、Bの位置にする為のボタンがほしいのですが、宜しくお願いします。
(ボタン名は、位置を表現する物にしてテキストボックスのあるシートを見なくても分かるようにする為)
私も試してみました・・・
現在の位置を調べて、その値を代入させて、文字表示させようとしたのですが、これでは、テキストボックスを微調整したときが、まずいのでやめました。
やはり、位置を指定するボタンが2つあったほうが良さそうなので、宜しくお願いします。
No.2
- 回答日時:
少し手を入れました。
標準モジュールに貼り付けます。
'TextBoxにはSheet1,2,3に対応して、
'myText1,myText2,myText3の名前を付けています
'四角形を動かす(例:四角形は各シートに1個) 引数に位置を示す値をセット
Public Sub ShapeMove3(Ichi As Integer)
Dim ShpTop(2) As Double '動かす各位置、表示位置
Dim ShpLeft(2) As Double '動かす各位置、表示位置
ShpTop(1) = 71.25: ShpLeft(1) = 90.75 '***縦・横位置の登録***
ShpTop(2) = 98.25: ShpLeft(2) = 276
Dim ws As Integer 'シート
Application.ScreenUpdating = False
'各シートで動かす
For ws = 1 To 3
Worksheets("Sheet" & ws).Activate
With ActiveSheet.Shapes("myText" & ws)
'次の場所にする
.Top = ShpTop(Ichi)
.Left = ShpLeft(Ichi)
End With
Next
Worksheets("Sheet5").Activate
Application.ScreenUpdating = True
End Sub
下記はシート5のシートモジュールに貼り付けます。
Private Sub CommandButton2_Click() 'A位置へ
ShapeMove3 1
End Sub
Private Sub CommandButton3_Click() 'B位置へ
ShapeMove3 2
End Sub
この回答への補足
nishi6さ~ん!完璧OKです!ありがとうございます。
それと、またまた贅沢なんですが・・・
Sheet1~Sheet3に、スピンボックスを2個配置(上下用、左右用)してテキストボックスの位置をスピンボックスをクリックする事で、微調整させたいのですが、出来ますか?
移動は、±0.1ずつ上下左右に動くようにして、その移動値をセルかコントロールボックスかに表示させるようにしたい。
この微調整は、Sheet1~3のどこのSheetでしても、全部のシートに反映するようにさせたい。
更に、リセットボタン(別に配置)を押したら最初の位置に戻る。
更に、ファイルを閉じるときは、微調整量を覚えていて、次に開いたときには、調整後の状態で開く。
と 言う内容ですが、できますか?
もし、ややこしいようでなければ宜しくお願いします。
No.3
- 回答日時:
書いてみました。
ユーザーフォームを使えば、また違ったものになるでしょう。今のままでは作りがダブっていますね。シート1~3に
spnLeft: 左右用スピンボタン、spnTop: 上下用スピンボタン
cmdInitialize:初期化用ボタンを配置(同名)
左右初期値用セル(iLftj)、左右増分用セル(dLftj)
上下初期値用セル(iTopj)、上下増分用セル(dTopj)の名前を付ける。
()は範囲名で<j>はシート番号と同じにする。
図形は1ピクセル単位で動きます。そのまま保存すれば状況は記憶されています。
下をシート1~3の各シートモジュールに貼り付ける
dLft1やdTop1の<1>はシートにあわせて<2>、<3>に変える。
Private Sub spnLeft_SpinDown() '左右方向の微調整(マイナス)
Range("dLft1") = Range("dLft1") - 0.75: move_Lft Range("dLft1")
End Sub
Private Sub spnLeft_SpinUp() '左右方向の微調整(プラス)
Range("dLft1") = Range("dLft1") + 0.75: move_Lft Range("dLft1")
End Sub
Private Sub spnTop_SpinDown() '上下方向の微調整(マイナス)
Range("dTop1") = Range("dTop1") + 0.75: move_Top Range("dTop1")
End Sub
Private Sub spnTop_SpinUp() '上下方向の微調整(プラス)
Range("dTop1") = Range("dTop1") - 0.75: move_Top Range("dTop1")
End Sub
Private Sub cmdInitialize_Click() '初期化
Range("dLft1") = 0: move_Lft Range("dLft1")
Range("dTop1") = 0: move_Top Range("dTop1")
End Sub
標準モジュールに貼り付ける
Public Sub move_Lft(dLft) '左右方向の微調整
Dim st As Integer 'シートカウンタ
For st = 1 To 3
With Worksheets("Sheet" & st)
.Range("dLft" & st) = dLft
.Shapes("myText1").Left = .Range("iLft" & st) + .Range("dLft" & st)
End With
Next
End Sub
Public Sub move_Top(dTop) '上下方向の微調整
Dim st As Integer 'シートカウンタ
For st = 1 To 3
With Worksheets("Sheet" & st)
.Range("dTop" & st) = dTop
.Shapes("myText1").Top = .Range("iTop" & st) + .Range("dTop" & st)
End With
Next
End Sub
これ以上は短くならなかった。
この回答への補足
nishi6さん動きましたよー すごいですねー! あとひとつ質問させてください。微調整のボタンを押したとき、テキストボックスが一番左に行ってしまうのですがどうしてでしょうか?
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
各シートのセル(範囲名がiLft1、iLft2やiLft3)に同じ数値が入っているでしょうか。
初期位置を表していて自分で入力しておく必要があります。(iTop1等も同じです)これ位しか思いつきませんね・・・・
OKです。ありがとうございました。うまくいきました。
ところで、nishi6さん! テキストボックスに値を入れる(3)を質問させてもらったrurucomですが、質問1)2)3)はしばらくお待ちください!はどうなりましたでしょうか?催促してすみません!そちらの方もよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
特定のシートの削除を禁止した...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルVBAでパスの¥マークに...
-
エクセルのシート名をリスト化...
-
エクセルでファイルを開いたと...
-
前の(左隣の)シートを連続参...
-
VBAでシートコピー後、シート名...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
Excelのシートを、まとめて表示...
-
別シート参照のセルをシート毎...
-
Excelで同じシートのコピーを一...
-
複数シートの特定の位置に連番...
-
エクセル 計算式も入っていない...
-
excelでシート毎の最終更新日を...
-
複数シートの色付きセルがある...
-
【Excel マクロ】 同一book内で...
-
MIDで指定するセル番号を、別の...
-
Accessのスプレッドシートエク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
エクセルVBAでパスの¥マークに...
-
Excelで金銭出納帳。繰越残高を...
-
Excelで同じシートのコピーを一...
-
Excelのシートを、まとめて表示...
-
エクセルでファイルを開いたと...
-
Accessのスプレッドシートエク...
-
前の(左隣の)シートを連続参...
-
VBAでシートコピー後、シート名...
-
EXCEL:同じセルへどんどん足し...
-
EXCELで同一フォーマットのシー...
-
シートの保護のあとセルの列、...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルで複数設定したハイパーリンク先...
-
複数シートの特定の位置に連番...
-
エクセルでファイル保存時に複...
-
特定のシートの削除を禁止した...
-
エクセルで前シートを参照して...
-
Excel、同じフォルダ内のExcel...
おすすめ情報