Excel VBA質問箱 IV

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

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


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

【36340】セル上に存在するコンボボックス名を取得したい ともた 06/3/29(水) 11:36 質問[未読]
【36341】Re:セル上に存在するコンボボックス名を取... Blue 06/3/29(水) 12:00 発言[未読]
【36344】Re:セル上に存在するコンボボックス名を取... ともた 06/3/29(水) 14:09 お礼[未読]

【36340】セル上に存在するコンボボックス名を取得...
質問  ともた  - 06/3/29(水) 11:36 -

引用なし
パスワード
   こんにちわ。

とあるセル上に貼付したコンボボックスの名前を取得したいのです。
Sheets("Sheet1").Range("P28:AE29").Objects.Name
↑こんな感じで取得できればいいのですが、あいにくこれでは取得できませんでした (涙)

 痛快なアドバイスもしくは、検索キーワードなどご教示いただきたく
思います。

【36341】Re:セル上に存在するコンボボックス名を...
発言  Blue  - 06/3/29(水) 12:00 -

引用なし
パスワード
   コンボボックスがコントロール ツールボックスから作成されたものであれば、
For Eachで全てのコントロールの位置を調べて取得できそうです。

Dim obj As OLEObject

For Each obj In Worksheets("Sheet1").OLEObjects
  ' コンボボックスか
  If TypeName(obj.Object) = "ComboBox" Then
    ' コンボボックスの位置がP28:AE29内であるか
    If Not Application.Intersect(Range("P28:AE29"), obj.TopLeftCell) Is Nothing And _
      Not Application.Intersect(Range("P28:AE29"), obj.BottomRightCell) Is Nothing Then
      MsgBox obj.Name
    End If
  End If
Next

【36344】Re:セル上に存在するコンボボックス名を...
お礼  ともた  - 06/3/29(水) 14:09 -

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

>    If Not Application.Intersect(Range("P28:AE29"), obj.TopLeftCell) Is Nothing And _
>      Not Application.Intersect(Range("P28:AE29"), obj.BottomRightCell) Is Nothing Then
>      MsgBox obj.Name
>    End If
いただきましたコードで実行したところ、
Intersectメソッドが失敗しました。
と出てしまったのですが、
     If Range("P28") = obj.TopLeftCell And Range("AE29") = obj.BottomRightCell Then
としたところ、うまく、コンボボックス名が取得できました☆
「セル上のオブジェクトの位置」と考えればよかったのですね!!

ナイス☆アドバイスありがとうございましたm(_ _)m

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