Excel VBA質問箱 IV

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

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


9618 / 13646 ツリー ←次へ | 前へ→

【26386】シェイプの指定 ゴリ 05/7/4(月) 12:37 質問[未読]
【26388】Re:シェイプの指定 かみちゃん 05/7/4(月) 12:56 発言[未読]
【26389】Re:シェイプの指定 ゴリ 05/7/4(月) 13:17 質問[未読]
【26391】Re:シェイプの指定 りん 05/7/4(月) 13:20 発言[未読]
【26395】Re:シェイプの指定 ゴリ 05/7/4(月) 14:22 質問[未読]
【26398】Re:シェイプの指定 りん 05/7/4(月) 14:31 回答[未読]
【26400】Re:シェイプの指定 ゴリ 05/7/4(月) 14:56 質問[未読]
【26403】Re:シェイプの指定 IROC 05/7/4(月) 15:32 回答[未読]

【26386】シェイプの指定
質問  ゴリ  - 05/7/4(月) 12:37 -

引用なし
パスワード
   シェイプを座標などから指定できないでしょうか?

他に方法などありましたらお願いします。

【26388】Re:シェイプの指定
発言  かみちゃん  - 05/7/4(月) 12:56 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>シェイプを座標などから指定できないでしょうか?

具体的にどういうことをなさりたいのでしょうか?
以下は、楕円をアクティブシートに書いたときの「マクロの記録」の結果ですが、座標になっていると思いますが・・・

Sub Macro1()
 ActiveSheet.Shapes.AddShape(msoShapeOval, 99#, 114#, 72#, 72#).Select
End Sub

AddShapeのヘルプを一度ご参照してください。

【26389】Re:シェイプの指定
質問  ゴリ  - 05/7/4(月) 13:17 -

引用なし
パスワード
   お返事ありがとうございます。

>具体的にどういうことをなさりたいのでしょうか?
多数あるシェイプから、一つを指定し、そこに文字や、数字をいれたいです。

【26391】Re:シェイプの指定
発言  りん E-MAIL  - 05/7/4(月) 13:20 -

引用なし
パスワード
   ゴリ さん、こんにちわ。

どのセル位置にあるかを知りたいのでしたら。

Sub test()
  Dim ws As Worksheet, sh As Shape
  Set ws = ActiveWorkbook.ActiveSheet
  For Each sh In ws.Shapes
   With ws
     MsgBox .Range(sh.TopLeftCell, sh.BottomRightCell).Address(False, False), _
      vbInformation, sh.Name
   End With
  Next
  Set ws = Nothing
End Sub

こんな感じです。
アクティブシートに1つでも図形がある状態で実行してみてください。

【26395】Re:シェイプの指定
質問  ゴリ  - 05/7/4(月) 14:22 -

引用なし
パスワード
   >こんな感じです。
>アクティブシートに1つでも図形がある状態で実行してみてください。

四角形とコマンドボタンをつくり、クリック時に先にコードを
コピーしたら、セルの値がでてきました。

逆に指定したセルにあるシェイプをさす場合には何について調べればよいですか?

【26398】Re:シェイプの指定
回答  りん E-MAIL  - 05/7/4(月) 14:31 -

引用なし
パスワード
   ▼ゴリ さん:
>>こんな感じです。
>>アクティブシートに1つでも図形がある状態で実行してみてください。
>
>四角形とコマンドボタンをつくり、クリック時に先にコードを
>コピーしたら、セルの値がでてきました。
>
>逆に指定したセルにあるシェイプをさす場合には何について調べればよいですか?

Application.Intersectメソッドを使って、セル範囲同士に重なりがあるかどうか判定します。

Sub test()
  Dim ws As Worksheet, sh As Shape
  Set ws = ActiveWorkbook.ActiveSheet
  For Each sh In ws.Shapes
   With ws
     If Not Application.Intersect(.Range("B2"), _
        .Range(sh.TopLeftCell, sh.BottomRightCell)) Is Nothing Then
      MsgBox sh.Name, vbInformation, "セルB2上に図形あり"
     End If
   End With
  Next
  Set ws = Nothing
End Sub

こんな感じです。

【26400】Re:シェイプの指定
質問  ゴリ  - 05/7/4(月) 14:56 -

引用なし
パスワード
   すみませんむずかしいです。
初心者ですみません。

指定したセルの上にあるシェイプに、文字などを入れたいと思っています。

【26403】Re:シェイプの指定
回答  IROC  - 05/7/4(月) 15:32 -

引用なし
パスワード
   シート上の全図形を対象にループしていき、
個々の図形がセルのどの位置にあるかを取得しつつ、
目的のセル上にある図形があったときには処理するといった流れです。

つまり図形が多ければ、若干時間がかかることになります。

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