>Sheet1とSheet2にそれぞれ図形があり、・・・
まず、Sheet1とSheet2の図形の個数が問題になりますが同数としています。
図形の指定方法としては、indexとnameが考えられます。
●最初はindexで指定する方法です(上のマクロ)
Sheet1とSheet2の図形はインデックス(作った順と考えていいでしょう)で照合できるなら、このように書けます。
しかし、図を貼り付けたり、削除を繰り返し、Sheet間でインデックスが対応しない場合はこの方法は使えないでしょう。
●2つ目は図形の名前を使う方法です(下のマクロ)
下の例では、(名前ボックスを使い)
Sheet1で図形を選択して、四角形に Shikaku_S1_1、Shikaku_S1_2、Shikaku_S1_3
Sheet2で図形を選択して、四角形に Shikaku_S2_1、Shikaku_S2_2、Shikaku_S2_3
として、マクロで操作しやすい名前を付けて対応を付けやすくしています。(3個でテスト)
『Shikaku_S1_1』で『S1をS2に置き換え』を行えば『Shikaku_S2_1』が定義できます。
このようにして図形同士の対応を付けて、テキストを受け渡しています。
ご参考に。(Excel97です)
'indexで指定
Sub ShapeTextCopy1()
Dim i As Integer 'カウンタ
Dim shapeText As String '図形内のテキスト
Application.ScreenUpdating = False
For i = 1 To Worksheets("Sheet1").Shapes.Count
'シート1の図形のテキストを取り出す
With Worksheets("Sheet1")
.Activate
.Shapes(i).Select
shapeText = Selection.Characters.Text
End With
'シート2の同じインデックスの図形のテキストにセットする
With Worksheets("Sheet2")
.Activate
.Shapes(i).Select
Selection.Characters.Text = shapeText
End With
Next
Application.ScreenUpdating = True
End Sub
'nameで指定
Sub ShapeTextCopy2()
Dim shp As Shape '図形
Dim shpName1 As String '図形の名称(Sheet1)
Dim shpName2 As String '図形の名称(Sheet2)
Dim shapeText As String '図形内のテキスト
Application.ScreenUpdating = False
For Each shp In Worksheets("Sheet1").Shapes
'シート1の図形のテキストと図形名を取り出す
Worksheets("Sheet1").Activate
shp.Select
shpName1 = Selection.Name
shapeText = Selection.Characters.Text
'シート2の対応する名前の図形のテキストにセットする
With Worksheets("Sheet2")
.Activate
shpName2 = Application.Substitute(shpName1, "S1", "S2")
.Shapes(shpName2).Select
Selection.Characters.Text = shapeText
End With
Next
Application.ScreenUpdating = True
End Sub
お礼
ありがとうございました。 無事に思ったような動作をさせる事が出来ました。 また、何かありましたら、よろしくお願いします。
補足
急な仕事が入ったので、反応が遅くて申し訳ありません。 割り込み仕事が終わったら、改めてお礼させていただきます。