-PR-
解決済み

テキストボックスの移動

  • すぐに回答を!
  • 質問No.85846
  • 閲覧数220
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 59% (116/195)

図形のテキストボックスをエクセル上に配置しているのですが、これをVBAを使って、配置されている位置を変える方法を探しています。

仕組みとしては、

1)ボタンを押す毎に、予め決めてい置いた位置、2個所~3個所へ移動していく方法
2)ボタン名に場所を示す何らかの名前が付いていて(例えば位置A、B・・・等)そのボタン(位置A)を押す事で予め決めておいたA位置へ、位置Bボタンを押すとB位置へ移動する方法

2点の仕組みで作りたいのですが、どなたか詳しい方、宜しくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

補足です。
ShapeMoveは動かす図形に「myText1」という名前を付けてマクロを書きました。

また、「3個の例です。まず、3個の図形ともシートに正確に配置します」を補足しますと、
1つの図形を指定する3箇所に配置する場合、それぞれの位置に正確に図形を配置するという意味です。画面に3個配置し、その位置を目に見えるよう数値化するのが目的です。
お礼コメント
rurucom

お礼率 59% (116/195)

完璧です!!!!!こりゃすごい! 感動です! ありがとうございました。
投稿日時 - 2001-06-06 23:06:07
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

3個の例です。まず、3個の図形ともシートに正確に配置します。
myZukeiPotを標準モジュールに貼り付けボタンを貼り付けたシートから実行します。各図形の縦横位置がA1、B1、C1・・・に出力されます。(名前、縦位置、横位置)
この中の動かしたい図形の情報を記録しておきます。

'位置を調べる
Public Sub myZukeiPot()
Dim shp As Shape '四角形
Dim cot As Integer 'カウンタ
For Each shp In ActiveSheet.Shapes
cot = cot + 1
Range("A" & cot) = shp.Name '名前
Range("B" & cot) = shp.Top '上端位置
Range("C" & cot) = shp.Left '左端位置
Next
End Sub

移動を連続させるボタンとA、B、C位置に動くボタンを配置します。計4個。順にCommandButton1,2,3,4です。
下記のマクロを標準モジュールに貼り付け、「***縦・横位置の登録***」の箇所を上記で記録しておいた数値にします。順序は決めて下さい。

'四角形を動かす(例:四角形は3個)
Public Sub ShapeMove(Optional ShiteiNo)
Const ShpNum = 3 '四角形の個数
Dim ShpName As String '四角形の名前
Dim ShpTop(3), myShpTop As Double '動かす各位置、表示位置
Dim ShpLeft(3), myShpLeft As Double '動かす各位置、表示位置
ShpTop(1) = 71.25: ShpLeft(1) = 165.75 '***縦・横位置の登録***
ShpTop(2) = 98.25: ShpLeft(2) = 201
ShpTop(3) = 125.25: ShpLeft(3) = 276
Dim ct As Integer 'カウンタ
Dim myShpIdx As Integer '四角形の順序

With ActiveSheet
If IsMissing(ShiteiNo) Then 'ぐるぐる回る
myShpTop = .Shapes("myText1").Top '今あった位置
myShpLeft = .Shapes("myText1").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
Else '位置指定
myShpIdx = ShiteiNo
End If
.Shapes("myText1").Top = ShpTop(myShpIdx)
.Shapes("myText1").Left = ShpLeft(myShpIdx)
End With
End Sub

ボタンを配したシートモジュールに下記マクロを貼り付けます
Private Sub CommandButton1_Click() 'ぐるぐる回る
ShapeMove
End Sub

Private Sub CommandButton2_Click() 'Aの位置(Aに対応して「1」)
ShapeMove 1
End Sub

Private Sub CommandButton3_Click() 'Bの位置(Bに対応して「2」)
ShapeMove 2
End Sub
'
Private Sub CommandButton4_Click() 'Cの位置(Cに対応して「3」)
ShapeMove 3
End Sub

長くなりました。

このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ