- ベストアンサー
vbaでセル取得について
お世話になります。 初歩的な事なのですが、 変数を使ったセルの取得で、 range("a1:b2")を取得する場合に 数字の部分が変数だったらどういう記述になるでしょうか。 ”のつける位置が良く分からず、どうつけても赤字でエラー になります。またcellsの場合も行数や列数が変数の場合の 記述の仕方をお教え頂きたく宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
質問の主旨とはずれますが、 下記の方が良く使うと思います (1)データ範囲指定に基づいた Sub test01() Set rng = Application.InputBox("範囲=", Type:=8) MsgBox rng.Rows.Count End Sub ーーーー Sub test02() Hani = Worksheets("Sheet1").RefEdit1.Text On Error GoTo error Set myrange = Application.Range(Hani) myrange.Select myArea = myrange.Rows.Count MsgBox myArea Exit Sub error: MsgBox "選択されていません" End Sub のようにプログラム上では、行列を問題にしない捉え方もあります。 RefEditコントロールは 表示 ツールバー コントロールツールバー その他のコントロール(ハンマーとスパナのアイコン) RefEditCTRL ーーー >range("a1:b2")を取得する場合に こういうのより (2)現存のデータに基づいた Currentregionや Sub test03() d = Range("A65536").End(xlUp).Row For i = 1 To d 'Cells(i, "B") = i Range("B" & i) = i Next i End Sub のようなのが有用です。 出来るだけ具体的番地の行列番号の数値記号指定は出さないやり方です。
その他の回答 (2)
- hotosys
- ベストアンサー率67% (97/143)
色々の指定方法があります。 Sub sample() Dim row1 As Long Dim row2 As Long row1 = 1 row2 = 2 'Range(セル範囲) Range("A" & row1 & ":B" & row2).Select 'Range(セル,セル)の場合 Range(Range("A" & row1), Range("B" & row2)).Select Range(Cells(row1, "A"), Cells(row2, "B")).Select Range(Cells(row1, 1), Cells(row2, 2)).Select End Sub Sub sample2() Dim rowNum As Long Dim colNum As Integer Dim rowStr As String Dim colStr As String '行列を数値で rowNum = 2 colNum = 3 Cells(rowNum, colNum).Select '行を数値、列を文字列で rowNum = 2 colStr = "C" Cells(rowNum, colStr).Select '行列を文字列で rowStr = "2" colStr = "C" Cells(rowStr, colStr).Select End Sub
お礼
ありがとうございました。 大変参考になりました。
- okormazd
- ベストアンサー率50% (1224/2412)
Sub test() r = 5 c = 3 Cells(r, c).Select Range("A" & c & ":B" & c).Select End Sub
お礼
ありがとうございました。
お礼
いつもありがとうございます。 大変勉強になります。