• ベストアンサー

エクセルのマクロのセルの選択について

エクセルのマクロについて教えてください。 シート上にボタンを作ります。 そのボタンをクリックする前に適当にセルを範囲指定(アクティブ)に しておきます。 セルをアクティブにしたその状態で、ボタンをクリックすると、どこから どこまで範囲指定しているのかわかるようなマクロは作れるでしょうか? (1)たとえばB3からD10まで範囲指定しているときは、B3とD10のセルの場所  をひっぱってくるような... (2)あるいは  cell(?1,?2) ←B3とD10の ?1 と ?2 の値を求めるような... できれば(1)のようなB3とD10のセルの場所が直接わかるようなマクロが現在考えています処理にあっているので、そのほうがいいと思っているのですが.. お忙しいところ申し訳ありませんが宜しくお願い致します。

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

  • ベストアンサー
回答No.2

初めまして。 変数 = selection.address これで選択しているセル範囲が取得できます。例えば、 Sub Test Dim myCell as string myCell = Selection.Address End Sub こうするとmyCellに選択されたセル範囲が入力されて、range(mycell).copy等と使うことができます。これは、選択されたセル範囲をコピーせよという命令です。 何かご不明な点がありましたら、ご遠慮なくお知らせ下さい。 私でよろしければ、あなた様のおやりになりたいことが実現できるまで、ご一緒に考えていきたいと思います。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

Private Sub Worksheet_SelectionChange(ByVal Target As Range) '実行してみて、下記のmsgboxで納得して、その後削除してください MsgBox Selection.Row MsgBox Selection.Column MsgBox Selection.Rows.Count MsgBox Selection.Columns.Count r = Selection.Row c = Selection.Column rs = Selection.Rows.Count cs = Selection.Columns.Count '左上隅のセルはcells(r,c) '右下隅のセルはcells(r+rs,c+cs) 'RangeはRange(Cells(r,c),Cells(r+rs-1,c+cs-1))です。 End Sub

回答No.3

分解したものを作りました。 #1さんの取得の仕方と同じですが・・・ ボタンを押した時にセル以外が選択されていると、 selection.addressはエラーになってしまうので 「If (TypeName(Selection) = "Range") Then」 の行をいれてあります。(選択したものがセルならば処理します) .Item(i).Address(False, False)は、[$]を付けない番地を取得します。 [$]を付けたい場合には FalseをTrueにして下さい。 セルを分ける必要がなければ、意味のないプログラムです。 Sub cellArea() If (TypeName(Selection) = "Range") Then '選択している物がセルならば With Selection.Areas '複数範囲の取得 For i = 1 To .Count vce = Split(.Item(i).Address(False, False), ":") 'アドレスを:で分解 If (UBound(vce) = 0) Then MsgBox CStr(i) & "つ目は [" & vce(0) & "]が選択されています" Else MsgBox CStr(i) & "つ目の範囲は [" & vce(0) & "]から[" & vce(1) & "]まで選択されています" End If Next i End With End If End Sub

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

こんにちは。 こういうこと? Sub Test()  MsgBox Selection.Address(0, 0) End Sub

関連するQ&A