- ベストアンサー
条件に該当するセルをセレクト
エクセルで、Topが100でLeftが50の地点が含まれるセルをセレクトするマクロを教えて下さい。 対象セルは"A8"になりますが、単純にRange("A8").Selectというのではなく、"100"と"50"という数値を用いて表すマクロを教えて下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
高速処理が必要なら、ダミーシェープをその座標に書き込んで TopLeftCell プロパティ でセルを取得する方法があります。ただし、この手法は、シート が保護されてたりするとダメ。 あらゆる状況に対応するなら、やはり一つ一つのセルをループで回して、 その Left、Top、Width、Height あたりを使って調べるハメになりそう。 なんにせよ、目的によりますね。 Sub sample() GetRange(100, 50).Select End Sub ' Top、Left 座標(単位:ポイント)の Range を返す Private Function GetRange(ByVal T As Single, ByVal L As Single) As Range Dim SHP As Shape ' ダミーのサイズ0のシェープを書き込む Set SHP = ActiveSheet.Shapes.AddShape(msoShapeRectangle, L, T, 0, 0) With SHP ' 書き込んだシェープの TopLeftCell プロパティーで ' シェープ左上のセルを取得 Set GetRange = SHP.TopLeftCell ' シェープ削除 .Delete End With Set SHP = Nothing End Function
その他の回答 (3)
- NCU
- ベストアンサー率10% (32/318)
Sub TopLeft選択() Const 頭 As Single = 100 Const 左 As Single = 50 Dim セル As Range Set セル = Range("A1") Do Until セル.Top > 頭 Set セル = セル.Offset(1) Loop Do Until セル.Left > 左 Set セル = セル.Offset(, 1) Loop セル.Offset(-1, -1).Select End Sub
お礼
有難うございました。
- KenKen_SP
- ベストアンサー率62% (785/1258)
Top や Leftプロパティーで得られる座標をループで 調べまわることになりますが...効率が悪くて使い ものにならないような? なぜ、そのような処理が必要なのでしょうか?
- Poko-08
- ベストアンサー率0% (0/7)
Cells(100,50)でいけると思います。
補足
Cells(100,50)ですと、"AX100"が対象となってしまうのですが。
お礼
有難うございました。