No.1ベストアンサー
- 回答日時:
参考程度ということで・・(^^;
Sub TEST()
Dim myCell As Range
Dim myShape As Shape
Set myCell = Range("F5")
For Each myShape In ActiveSheet.Shapes
If myCell.Address = myShape.TopLeftCell.Address Then
MsgBox myShape.Name
Exit For
End If
Next myShape
End Sub
ありがとうございます。
オブジェクトのTopLeftCell.Addressを総なめして調べているのですね。
やはり、こうするしかないのでしょうか・・・。
No.4
- 回答日時:
こんばんは。
Wendy02です。私の書いた、ActiveSheet.CheckBoxes は、Excel 97 以降の隠しプロパティです。
Shapes は、ワークシート上のすべてのオブジェクトの上位コレクションとなりました。
フォーム・ツールは、チェックボックスなど個々のオブジェクトが、それぞれのコレクションとなります。(例:CheckBoxes) だから、そこから探し出す手法は、今のところ有効ですが、今後については、保証されたコードではないことだけは書いておきます。
本来は、onlyromさんがおっしゃるように、「Shapes でぐるぐる回す」のが正しいスタイルだと私も思います。隠しプロパティの扱いは、昔のコードとの互換性のために残っている方法だと思います。
ここ数年の新しい本には、隠しプロパティやメソッドは書かれていないはずです。私も、出来るけれど書かないように、ある程度は気をつけてはいます。
ただ、そんなことはどうでもないことかもしれませんが、コードとしては、上位のShapes コレクションでまわす場合は、それがフォームのCheckBox であるのか、いずれかの方法でチェックをする必要性はあるように思います。そうすると、結構、大げさになったり、汚くなったりするので、今回はやめました。
その場合、On Error Resume Next で、直接、FormControlType で一気に取る方法もありますが、ここでは、ちょっと格好が悪いので、あえて書くと、このような構造になるのではないかと思います。しかし、プライベートなら、どう書いてもかまいません。また、.name で取るというのは、本末転倒で、それは、うまくありません。
For Each myShape In ActiveSheet.Shapes
If myShape.Type = msoFormControl Then
If myShape.FormControlType = xlCheckBox Then
If myCell.Address = myShape.TopLeftCell.Address Then
MsgBox myShape.Name
Exit For
End If
End If
End If
Next myShape
No.2
- 回答日時:
こんにちは。
確かに、TopLeftCell で取れば良いようなんですが、前回お書きしたように、以外に、セルの位置を取りにくいので、以下のように範囲からオブジェクトをとるようにするのがふつうです。もしも、コントロールツールの場合は、OleObjects を使います。
''標準モジュール
'フォーム側
Sub FindObjects()
Dim myRng As Range
Dim cb As Variant
Set myRng = Range("E10")
For Each cb In ActiveSheet.CheckBoxes
If Not Intersect(Range(cb.TopLeftCell, cb.BottomRightCell), myRng) Is Nothing Then
MsgBox cb.Name
Exit For
End If
Next
Set myRng = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Excel(エクセル) 【エクセル】文中に別シートのセルの内容を自動入力したい 6 2022/11/17 11:30
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) Excel VBA オブジェクトマクロ 使用指定について お詳しい方教えてください。 共通エクセルフ 2 2023/03/14 17:26
- Excel(エクセル) ハイパーリンク で『指定されたファイルを開くことが出来ません』 3 2023/04/25 18:02
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excel VBAでセル内の画像を選択したい
Excel(エクセル)
-
Excel(VBA)
Excel(エクセル)
-
VBAで特定のセルに画像があれば削除、なければ貼り付けを行いたい
Excel(エクセル)
-
-
4
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
5
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
6
VBA Shapesの座標からセル位置取得について教えてください
Visual Basic(VBA)
-
7
エクセルVBA 図形の選択法は?
Visual Basic(VBA)
-
8
Excelで、図形内の文字をセルに抽出したいです
Excel(エクセル)
-
9
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
10
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
11
VBA Shapes コピーと名前
Excel(エクセル)
-
12
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
エクセルVBAで画像を貼り付ける座標設定方法は?
PowerPoint(パワーポイント)
-
15
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
16
【エクセルのマクロ】クリップボードのbitmapをフォームに表示させたい
Visual Basic(VBA)
-
17
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
18
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
19
【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい
Visual Basic(VBA)
-
20
VBA:結合されたセルに対する「Target」について
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
エクセルのデータをwebフォーム...
-
【エクセル】複数のTextBoxに共...
-
現在アクティブになっているオ...
-
PowerpointVBAで指定のShapeオ...
-
文字列で小数点以下の0を削除し...
-
Excel2007 でのチェックボック...
-
エクセルVBAでセル番地を指定し...
-
日本語の文字化けを直す方法
-
エクセルで、日付を入力すると...
-
メルカリのメルカードで買い物...
-
「ご処理進めて頂きますようお...
-
Excelシート上のマクロを登録し...
-
DoEventsがやはり分からない
-
エクセルの×ボタンを消したい
-
セックスレスの既婚女性は自慰...
-
50代の男性の方に
-
switch の範囲指定
-
エクセルVBAで、MsgBox やInput...
-
特定のキーを押すまでループさ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスVBAのMe!と[ ]
-
VBA エンターキーでイベントに...
-
エクセルVBAでセル番地を指定し...
-
日本語の文字化けを直す方法
-
Excel VBAでマウスの左クリック...
-
【エクセルのマクロ】クリップ...
-
現在アクティブになっているオ...
-
Accessのフォーム上にエクセル...
-
PowerpointVBAで指定のShapeオ...
-
文字列で小数点以下の0を削除し...
-
Excel2007 でのチェックボック...
-
エクセルのデータをwebフォーム...
-
【エクセル】複数のTextBoxに共...
-
コードでオブジェクトを最前面に
-
Imageコントロールにグラフを表...
-
ExcelのシートをAccessで表示し...
-
ユーザーフォームのインポート...
-
カッコ付けのオブジェクト名を...
-
Access からオブジェクトとして...
-
構造体の静的な初期化
おすすめ情報