• ベストアンサー

条件に該当するセルをセレクト

エクセルで、Topが100でLeftが50の地点が含まれるセルをセレクトするマクロを教えて下さい。 対象セルは"A8"になりますが、単純にRange("A8").Selectというのではなく、"100"と"50"という数値を用いて表すマクロを教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

高速処理が必要なら、ダミーシェープをその座標に書き込んで 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

sear17
質問者

お礼

有難うございました。

その他の回答 (3)

  • NCU
  • ベストアンサー率10% (32/318)
回答No.4

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

sear17
質問者

お礼

有難うございました。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

Top や Leftプロパティーで得られる座標をループで 調べまわることになりますが...効率が悪くて使い ものにならないような? なぜ、そのような処理が必要なのでしょうか?

  • Poko-08
  • ベストアンサー率0% (0/7)
回答No.1

Cells(100,50)でいけると思います。

sear17
質問者

補足

Cells(100,50)ですと、"AX100"が対象となってしまうのですが。

関連するQ&A