VBAについて質問です。Selection.Addressを用い$E$6:$E$7という値を取得しました。この値から範囲指定されている値を整数型で求めたいのですがどのように処理したらよいでしょうか?基本的な質問だと思いますが教えていただきたくよろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/12/19 17:54:06
  • 終了:2008/12/24 06:06:57

ベストアンサー

id:fuentebella No.2

fuentebella回答回数269ベストアンサー獲得回数302008/12/19 21:01:29

ポイント200pt

>二つの(x,y)(x,y)を得たいと思っています。

は、この場合 (5,6)-(5,7)という意味ですか?

Selectionからだと

Sub find_coord()

Dim x1 As Integer, y1 As Integer
Dim x2 As Integer, y2 As Integer

With Selection
  x1 = .Column
  y1 = .Row
  x2 = .Column + .Columns.Count - 1
  y2 = .Row + .Rows.Count - 1
End With

MsgBox ("(" & x1 & "," & y1 & ")-(" & x2 & "," & y2 & ")")

End Sub

それとも 「$E$6:$E$7」の文字列をもとに(x,y)(x,y)を求めるという意味ですか??

はずしていたらすみません

http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page7.htm#...

その他の回答(1件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912008/12/19 18:56:28

ポイント200pt

希望されていることを満たしているかどうかわかりませんが、

下記が参考になるでしょうか。

Sub showData()
    Dim r As Range
    For Each r In Range(Selection.Address)
        MsgBox CInt(r.Value)
    Next
End Sub

不明な点は補足しますので、コメントを有効にお願いします。

http://officetanaka.net/excel/vba/tips/tips50.htm

id:harunoharuno

不体裁な質問に答えていただきありがとうございました。

$E$6:$E$7を元に

二つの(x,y)(x,y)を得たいと思っています。

追加で教えていただけると助かります。

2008/12/19 19:06:34
id:fuentebella No.2

fuentebella回答回数269ベストアンサー獲得回数302008/12/19 21:01:29ここでベストアンサー

ポイント200pt

>二つの(x,y)(x,y)を得たいと思っています。

は、この場合 (5,6)-(5,7)という意味ですか?

Selectionからだと

Sub find_coord()

Dim x1 As Integer, y1 As Integer
Dim x2 As Integer, y2 As Integer

With Selection
  x1 = .Column
  y1 = .Row
  x2 = .Column + .Columns.Count - 1
  y2 = .Row + .Rows.Count - 1
End With

MsgBox ("(" & x1 & "," & y1 & ")-(" & x2 & "," & y2 & ")")

End Sub

それとも 「$E$6:$E$7」の文字列をもとに(x,y)(x,y)を求めるという意味ですか??

はずしていたらすみません

http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page7.htm#...

  • id:Mook
    行と列を座標として出力したいということでしょうか。
    であれば、出力を下記にしてみてどうでしょうか。
        MsgBox "( " & r.Column & ", " & r.Row & " )"
  • id:harunoharuno
    再度回答していただきありがとうございます。
    教えていただいたコードは
    『セルの範囲の最初から最後まで、XとYを出力する』
    という内容のように読み取れました。
    このループにはじめて入ったときと、
    ループ終了時の(X,Y)を変数に格納すれば
    期待する結果を得ることができそうです。

    いつも、アドバイスありがとうございます。
  • id:Mook
    うーん、どうも質問の意図を理解しきれなかったようですが、
    fuentebella さんの回答のようなことをお望みだったでしょうか。

    Selection は必ず連続領域で、一列(もしくは矩形)の中で選択する
    という前提は成り立つでしょうか。
    であれば、fuentebella さんの回答でよい気がします。


    Ctl キーを押しながら複数回選択するような場合、試してみるとわかると
    思いますが、そのようなケースに対応しようとすると、アドレスが複雑な
    形で返されるため工夫が必要です。
    例えば、下記のような選択のしかたです。
    □□□□□□□□
    □■■■□□□□
    □□□□□□□□
    □□□■■■□□
    □□□□□□□□
    □□■■■□□□
    □□□□□□□□

    そこまで複雑なケースは考慮しなくてよいというのであれば、取り越し苦労ですが。
  • id:harunoharuno
    >>fuentebella さん

    まさに欲しかった情報です。
    おかげさまでやりたいことができました。

    >>Mook さん
    質問からさらに発生する懸念にまで触れていただき有難うございます。
    今回は、ctrlを使った細かい選択はしないので大丈夫です。



この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません