Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6459 / 13644 ツリー ←次へ | 前へ→

【45117】オートシェイプのセレクト みゆう 06/12/13(水) 11:39 質問[未読]
【45118】Re:オートシェイプのセレクト Statis 06/12/13(水) 11:44 発言[未読]
【45121】Re:オートシェイプのセレクト みゆう 06/12/13(水) 13:06 発言[未読]
【45129】Re:オートシェイプのセレクト Kein 06/12/13(水) 14:14 回答[未読]
【45132】Re:オートシェイプのセレクト みゆう 06/12/13(水) 15:06 お礼[未読]

【45117】オートシェイプのセレクト
質問  みゆう  - 06/12/13(水) 11:39 -

引用なし
パスワード
   お世話になります。
質問なんですが、
別シートにつくってあるオートシェイプをコピーし、
貼り付けるのですが、その貼付たオートシェイプを変数にいれたいのですが、
どう記述すればいいでしょうか?

dim stroutosyeipu as string   '--これに貼り付けたオートシェイプいれます

Sheets("情報").Select
ActiveSheet.Shapes("AutoShape 15").Select
Selection.Copy
Sheets("制作").Select
ActiveSheet.Paste

現在こう記述しています。

よろしくお願いします。

【45118】Re:オートシェイプのセレクト
発言  Statis  - 06/12/13(水) 11:44 -

引用なし
パスワード
   ▼みゆう さん:
こんにちは
>お世話になります。
>質問なんですが、
>別シートにつくってあるオートシェイプをコピーし、
>貼り付けるのですが、その貼付たオートシェイプを変数にいれたいのですが、
>どう記述すればいいでしょうか?
>
>dim stroutosyeipu as string   '--これに貼り付けたオートシェイプいれます
>
>Sheets("情報").Select
>ActiveSheet.Shapes("AutoShape 15").Select
>Selection.Copy
>Sheets("制作").Select
>ActiveSheet.Paste
>
>現在こう記述しています。
>
>よろしくお願いします。

変数に入れて何をしたいのでしょうか?
コードを見る限り必要ないような気がしますが?

【45121】Re:オートシェイプのセレクト
発言  みゆう  - 06/12/13(水) 13:06 -

引用なし
パスワード
   ▼Statis さん:
>▼みゆう さん:
>こんにちは
>>お世話になります。
>>質問なんですが、
>>別シートにつくってあるオートシェイプをコピーし、
>>貼り付けるのですが、その貼付たオートシェイプを変数にいれたいのですが、
>>どう記述すればいいでしょうか?
>>
>>dim stroutosyeipu as string   '--これに貼り付けたオートシェイプいれます
>>
>>Sheets("情報").Select
>>ActiveSheet.Shapes("AutoShape 15").Select
>>Selection.Copy
>>Sheets("制作").Select
>>ActiveSheet.Paste
>>
>>現在こう記述しています。
>>
>>よろしくお願いします。
>
>変数に入れて何をしたいのでしょうか?
>コードを見る限り必要ないような気がしますが?

Statisさん、こんにちは^^w

変数にいれて、条件によってオートシェイプに色をつけたいのです。
色をつけるのも、固定してるわけではないのですが、その記述はできてます。
よろしくお願いします。

【45129】Re:オートシェイプのセレクト
回答  Kein  - 06/12/13(水) 14:14 -

引用なし
パスワード
   貼り付けた直後の図形は、選択状態になっているはずですから、
そのまま右クリックして図形の書式設定をするところまでを、
マクロの自動記録すれば出来るはずです。
どうしても変数に入れたいなら・・

Sub Shp_Copy()
  Dim Shp As Shape
 
  Sheets("情報").Shapes("AutoShape 15").Copy
  With Sheets("制作")
   .Activate
   .Paste
   Set Shp = .Shapes(.Shapes.Count)
  End With
  Shp.Left = 100
  Shp.Top = 10
  Shp.Fill.Visible = True
  Shp.Fill.ForeColor.RGB = RGB(255, 0, 0)
  Application.CutCopyMode = False
  Set Shp = Nothing
End Sub

などすれぱ出来ますが、コードを見て分かるとおり、
貼り付けた図形を特定するのに「インデックス」を使っている
わけです。これがマクロのコードを、どの図形に対しても汎用的に
使えるようにするコツです。なのでコピーする方も現在のように
>Shapes("AutoShape 15")
などと限定してしまうことなく、Selection を使うなどして

If TypeName(Selection) <> "Shape" Then Exit Sub

と判定し、Selection.Copy でコピーした方が良いでしょうね。

【45132】Re:オートシェイプのセレクト
お礼  みゆう  - 06/12/13(水) 15:06 -

引用なし
パスワード
   Kein さんお答えありがとうございました!

参考になりました!!!
さっそく記述し直してみます^^v

▼Kein さん:
>貼り付けた直後の図形は、選択状態になっているはずですから、
>そのまま右クリックして図形の書式設定をするところまでを、
>マクロの自動記録すれば出来るはずです。
>どうしても変数に入れたいなら・・
>
>Sub Shp_Copy()
>  Dim Shp As Shape
> 
>  Sheets("情報").Shapes("AutoShape 15").Copy
>  With Sheets("制作")
>   .Activate
>   .Paste
>   Set Shp = .Shapes(.Shapes.Count)
>  End With
>  Shp.Left = 100
>  Shp.Top = 10
>  Shp.Fill.Visible = True
>  Shp.Fill.ForeColor.RGB = RGB(255, 0, 0)
>  Application.CutCopyMode = False
>  Set Shp = Nothing
>End Sub
>
>などすれぱ出来ますが、コードを見て分かるとおり、
>貼り付けた図形を特定するのに「インデックス」を使っている
>わけです。これがマクロのコードを、どの図形に対しても汎用的に
>使えるようにするコツです。なのでコピーする方も現在のように
>>Shapes("AutoShape 15")
>などと限定してしまうことなく、Selection を使うなどして
>
>If TypeName(Selection) <> "Shape" Then Exit Sub
>
>と判定し、Selection.Copy でコピーした方が良いでしょうね。

6459 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free