Excel VBA質問箱 IV

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

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


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

【23268】図形をアクティブセルの中心に貼り付けたい okb 05/3/17(木) 21:34 質問[未読]
【23272】Re:図形をアクティブセルの中心に貼り付け... ichinose 05/3/18(金) 0:09 発言[未読]
【23277】Re:図形をアクティブセルの中心に貼り付け... okb 05/3/18(金) 9:14 質問[未読]
【23368】Re:図形をアクティブセルの中心に貼り付け... kobasan 05/3/19(土) 19:43 回答[未読]
【23284】Re:図形をアクティブセルの中心に貼り付け... okb 05/3/18(金) 11:09 お礼[未読]
【23364】Re:図形をアクティブセルの中心に貼り付... okb 05/3/19(土) 18:08 質問[未読]
【23365】Re:図形をアクティブセルの中心に貼り付... ichinose 05/3/19(土) 18:32 発言[未読]
【23372】Re:図形をアクティブセルの中心に貼り付... okb 05/3/19(土) 21:41 お礼[未読]

【23268】図形をアクティブセルの中心に貼り付けた...
質問  okb  - 05/3/17(木) 21:34 -

引用なし
パスワード
   次のマクロで、図形の貼り付けはできるのですが、貼り付けされるシートにより
アクティブセルの右列になったり、セルの左側、右側だったりと一定しません。
Sub 記号()
  Dim sheetname As String
  sheetname = ActiveSheet.Name
  Sheets("sheet1").Select
  ActiveSheet.Shapes("Oval 86").Select
  Selection.Copy
  Sheets(sheetname).Select
  ActiveCell.Select
  ActiveSheet.Paste
  ActiveCell.Select
End Sub
アクティブセルの中央に貼り付ける方法は、ないでしょうか?

【23272】Re:図形をアクティブセルの中心に貼り付...
発言  ichinose  - 05/3/18(金) 0:09 -

引用なし
パスワード
   ▼okb さん:
こんばんは。

>次のマクロで、図形の貼り付けはできるのですが、貼り付けされるシートにより
>アクティブセルの右列になったり、セルの左側、右側だったりと一定しません。
>アクティブセルの中央に貼り付ける方法は、ないでしょうか?
新規ブックの標準モジュールに以下のコードをコピーして下さい。

'===============================================================
Sub main()
  Dim ovl As Shape
  Set ovl = sample_oval(Worksheets("sheet1"))
'  sheet1にサンプルの円を作成
  ovl.Placement = xlMove
  ovl.Copy
  With ActiveSheet
   .Paste
   Set novl = .Shapes(.Shapes.Count)
   End With
  With ActiveCell
    novl.Left = .Left + .Width / 2 - ovl.Width / 2
    novl.Top = .Top + .Height / 2 - ovl.Height / 2
    End With
End Sub
'=====================================================================
Function sample_oval(sht As Worksheet) As Shape
  Set sample_oval = sht.Shapes.AddShape(msoShapeOval, 179.25, 160.5, 81#, 81#)
End Function

Sheet1以外のシートをアクティブにしてセルE15あたりを選択した状態で実行してみて下さい。

【23277】Re:図形をアクティブセルの中心に貼り付...
質問  okb  - 05/3/18(金) 9:14 -

引用なし
パスワード
   ichinose さん 早々のレスありがとうございました。
確かに、うまくできました。

わたしの質問がまずかったのですが、本当にしたいのは、アクティブセルを○で
囲みたいのですが、図形を貼り付けると、値が裏に隠れますが、値も消えないように重ね合わせはできないですよね。
そこで、FreeFormで円に近い線を貼り付けたいと思うのですが、レスいただいた
マクロを修正できる知識が、私にはありません。
ActiveSheet.Shapes("Freeform 87").Selectをアクティブセルの中心に貼り付け
るには、どうすればいいでしょうか?

【23284】Re:図形をアクティブセルの中心に貼り付...
お礼  okb  - 05/3/18(金) 11:09 -

引用なし
パスワード
   見よう見まねで作りました。
Sub 丸印()
  Dim ovl As Shape
  Dim sheetname As String
  sheetname = ActiveSheet.Name
  Sheets(sheetname).Select
  Set ovl = Sheets("sheet1").Shapes("Freeform 87")
  ovl.Placement = xlMove
  ovl.Copy
  With ActiveSheet
   .Paste
   Set novl = .Shapes(.Shapes.Count)
  End With
  With ActiveCell
    novl.Left = .Left + .Width / 2 - ovl.Width / 2
    novl.Top = .Top + .Height / 2 - ovl.Height / 2
  End With
  ActiveCell.Select
End Sub
これで思うように動作してくれます。
ありがとうございました。

【23364】Re:図形をアクティブセルの中心に貼り付...
質問  okb  - 05/3/19(土) 18:08 -

引用なし
パスワード
   下記マクロでアクティブセルの中心に貼り付けできますが、セルが結合されている時は結合セルの中心、されていない時はアクティブセルの中心にできないでしょうか?
よろしく、お願いします。
>Sub 丸印()
>  Dim ovl As Shape
>  Dim sheetname As String
>  sheetname = ActiveSheet.Name
>  Sheets(sheetname).Select
>  Set ovl = Sheets("sheet1").Shapes("Freeform 87")
>  ovl.Placement = xlMove
>  ovl.Copy
>  With ActiveSheet
>   .Paste
>   Set novl = .Shapes(.Shapes.Count)
>  End With
>  With ActiveCell
>    novl.Left = .Left + .Width / 2 - ovl.Width / 2
>    novl.Top = .Top + .Height / 2 - ovl.Height / 2
>  End With
>  ActiveCell.Select
>End Sub

【23365】Re:図形をアクティブセルの中心に貼り付...
発言  ichinose  - 05/3/19(土) 18:32 -

引用なし
パスワード
   ▼okb さん:
こんばんは。

>下記マクロでアクティブセルの中心に貼り付けできますが、セルが結合されている時は結合セルの中心、されていない時はアクティブセルの中心にできないでしょうか?
>よろしく、お願いします。
>>Sub 丸印()
>>  Dim ovl As Shape
>>  Dim sheetname As String
>>  sheetname = ActiveSheet.Name
>>  Sheets(sheetname).Select
>>  Set ovl = Sheets("sheet1").Shapes("Freeform 87")
>>  ovl.Placement = xlMove
>>  ovl.Copy
   With ActiveSheet
>>   .Paste
>>   Set novl = .Shapes(.Shapes.Count)
>>  End With
   With ActiveCell.MergeArea
' たぶん、これでOKかと思います。
>>    novl.Left = .Left + .Width / 2 - ovl.Width / 2
>>    novl.Top = .Top + .Height / 2 - ovl.Height / 2
>>  End With
>>  ActiveCell.Select
>>End Sub

【23368】Re:図形をアクティブセルの中心に貼り付...
回答  kobasan  - 05/3/19(土) 19:43 -

引用なし
パスワード
   ▼okb さん,ichinose さん 今晩は

>わたしの質問がまずかったのですが、本当にしたいのは、アクティブセルを○で
>囲みたいのですが、図形を貼り付けると、値が裏に隠れますが、値も消えないように重ね合わせはできないですよね。
>そこで、FreeFormで円に近い線を貼り付けたいと思うのですが、

FreeFormを使わなくても、楕円Shapes("Oval 数字")のままでもできます。

  >With ActiveSheet
  > .Paste
  > Set novl = .Shapes(.Shapes.Count)
  >End With
  '
  '【23272】のコードに下を追加してみて下さい。
  Selection.ShapeRange.Fill.Transparency = 1#  '図形を透明化

【23372】Re:図形をアクティブセルの中心に貼り付...
お礼  okb  - 05/3/19(土) 21:41 -

引用なし
パスワード
   ichinose さん、たびたびすみません。
さすがですね。
うまく、動作しました。
ありがとうございました。感謝します。

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