• ベストアンサー

VBAでセルアドレスに変数を使いたい

VBAでセルアドレスを変数を使って指定したいのですが、どの参考書にも載っていない。RangeやCellsでは特定の番地や相対番地しか指定できないですが。何か方法ありますか。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

sub sample1()  dim i as long  for i = 1 to 10   range("A" & i) = i  next i end sub sub sample2()  dim j as long  for j = 1 to 10   cells(1, j) = j  next j end sub sub sample3()  dim k as long  for k = 1 to 10   range("A1").offset(k, k) = k  next k end sub といったような事でしょうか?

shikeshike
質問者

お礼

大変ありがとうございました。

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

次のような書き方になりますね。 例えばiを行の変数、nを列の変数とした場合にA列で行を変えるのでしたら Range("A"&i) または Cells(i,1) 行も列も変わるのでしたら Cells(i,n)

shikeshike
質問者

お礼

大変ありがとうございました。

関連するQ&A

  • ExcelVBAでセルの番地を変数として扱いたいですが

    ExcelVBAでセルの番地を変数として扱いたいですが 例えばaという変数に『Range(Cells(2, 5), Cells(2, 8))』を入れたとします。 このセル番地は複数を指定していると思うのですが、 このセル番地すべてを一個下にずらす、つまりCells(1,0)をプラスしたいんですが、 どうしたら良いのでしょうか? a + Cells(1,0)ではダメでした。

  • Excel VBA Cells 絶対参照 書き方

    Excel VBAにてお尋ねいたします。 Excel VBAにてCellsを使用してセル範囲を指定させていただく際に、絶対参照($A$1:$E$10など)を使用する場合はどのように記述すればよろしいでしょうか? Cellsを使用するのは、セル範囲が毎回異なるため、範囲指定に変数を使用しているためです。 相対参照でしたら、Range(Cells(1,1),Cells(Rows<行番号の変数>,Cols<列番号の変数>))といった記述かと思いますが、絶対参照の場合はどのように記述すればよろしいでしょうか?

  • エクセルVBAで複数範囲の変数使用指定方法につい

    エクセルVBAの初心者です。複数の範囲を変数を使用して指定したいのですが、色々と調べてみましたがよくわかりません。 一つの範囲に対しては、下記の方法で正常に動きました。 i1=1 j1=3 i2=4 j2=8 Range(Cells(j1, i1), Cells(j2, i2)).Name = "範囲_全体" 異なる範囲に対して変数を使用せずに名前をつける場合は下記の方法で動くことがわかっています。 Range("A3:A8, C3:C8").Name = "範囲_分離" 但し、例えば Cellsを使用して Range(Cells(3, 1), Cells(8, 1)) と Range(Cells(3, 3), Cells(8, 3)) を まとめて「範囲_分離」と名前を付けたいのですが、よくわかりません。 どなたかご教授方、お願いいたします。

  • VBA 変数について

    VBA初心者でございます。 VBAでgrpという変数を設定し、それをキーにしてオートフィルタをしたいです。 以下のコードではエラーがでてしまうのは、なぜでしょうか? どうぞ宜しくお願いいたします。 Sub 絞り込み2() Dim grp Set grp = Worksheets("リスト").Cells(3, 2) Worksheets("マスタ0701").AutoFilterMode = False With Worksheets("マスタ0701").Range(Cells(3, "B"), Cells(Rows.Count, "CK").End(xlUp)) .AutoFilter Field:=13, Criteria1:=grp '.CurrentRegion.Select Range(Cells(3, "B"), Cells(Rows.Count, "CK").End(xlUp)).SpecialCells(xlVisible).Copy Worksheets("検索結果").Range("A1") '.AutoFilter End With End Sub

  • VBA 変数を使うべき?

    VBA 変数を使うべき? VBAを独学で勉強中のものです。 エクセルVBAでデータが入っている行数分処理を行いたい場合などに ------------------------------------------------ lastRow = cells(rows.count,1).end(xlup).row for i = 1 to lastRow ・・・ next i ------------------------------------------------ などと最終行を変数に代入して使う場合と ------------------------------------------------ for i = 1 to cells(rows.count,1).end(xlup).row ・・・ next i ------------------------------------------------ などと直接for文の中で指定する場合とでは結果は同じと思うのですが 結果以外の部分で見た場合どちらで行うほうがいいのでしょうか?

  • Excelのセルアドレスの指定方法

    VB2008でExcelの操作をしている初心者です。ファイルを開き、シートを指定しセルのデータを読み込むまではなんとかたどり着きましたが、セルへのデータ書き込みが出来なく困っています。下記のようにセルアドレスをA1方式で指定すれば書き込みできますがR1C1方式でセルアドレスを指定する方法が判りません。よろしくお願い致します。 exCel.Range("A1").Value = "Hello World"

  • エクセルのvbaが変数を使用すると上手く動作しない

    ものすごく初歩的な質問で恐縮ですが、教えて下さい。 やりたいことは、 「a」を変数として設定して、Cells(1, 1)を「a」に格納して、 セル番地A1に山という文字を入力しようとしています。 <test>の方は上手く動作してセル番地A1に山という文字列を入力できるのですが、 <test2>の方は、セル番地A1に入力してくれません。 おそらく変数の使い方がおかしいのだと思います。 a = Cells(1, 1)ではなく、test2のように、変数を使ってコードを記載したいのですが良い方法はありませんでしょうか? *************************************************************** Sub test () a = Cells(1, 1) Cells(1, 1) = "山" End Sub **************************************************************** Sub test2 () a = Cells(1, 1) a = "山" End Sub

  • <excel:VBA>変数を使って簡略化したい

    google検索してなんとか自力で作ったVBAを下記に貼りました。 きちんと動作はするのですが、せっかくなので変数を使って簡素化し、 データが多くても動作が速くなるようにしたいのです。 いろいろ試しましたが、変数の使い方の知識が乏しく、うまくいきませんでした。 変数としたいのは■マークの2箇所になると思います。 詳しい方、力を貸していただけないでしょうか。 どうぞよろしくお願いいたします。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Sub オートフィルタ貼付作業() With Sheets("データ").Range("A3") Application.ScreenUpdating = False Range("AA3:EK3").AutoFilter .AutoFilter Field:=1, Criteria1:="1" ’■Fieldが1ずつ増えていく Range("AA3").Copy Range("Z3") ’■AA3が1列ずつ右へずれていく .CurrentRegion.Copy Sheets("貼付").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) Range("A3").AutoFilter Range("AA3:EK3").AutoFilter .AutoFilter Field:=2, Criteria1:="1" Range("AB3").Copy Range("Z3") .CurrentRegion.Copy Sheets("貼付").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) Range("A3").AutoFilter ~~~~~~~~~~~~ 115列分のデータがあり 下記まで同じようにつづきます ~~~~~~~~~~~~ Range("AA3:EK3").AutoFilter .AutoFilter Field:=115, Criteria1:="1" Range("ek3").Copy Range("Z3") .CurrentRegion.Copy Sheets("貼付").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) Range("A3").AutoFilter End With Application.ScreenUpdating = True Sheets("貼付").Activate Cells.Columns.AutoFit End Sub ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

  • Excel VBAのInpuboxの文字列

    Inputboxにセル番地A1を入れ戻り値を変数に格納してその変数をRange またはCellsに組み込む場合、どう記述すればいいでしょうか。

  • エクセルのVBAで悩んでいます。

    いつもありがとうございます。 エクセルのVBAで悩んでいます。 セルの範囲指定をVBAで行いたいのです。 ただし、引数に数値変数を使用する為、Cellsプロパティを使います。 すると、離れている範囲の範囲指定が出来ないのです。 例えば、Rangeプロパティだと、 Range("A5:E5,A9:E32").Select こうなるところを、 A9:E32 を変数に置き換えたくて、 Range("A5:E5", Cells(g, 1), Cells(h, 5)).Select と、するとエラーが出ます。 VBAの前文は次の通りです。 Private Sub CommandButton1_Click() a = Me.TextBox1.Value b = Me.TextBox2.Value Set c = Range("a:a").Find(what:=a, LookIn:=xlValues, lookat:=xlWhole) Set d = Range("a:a").Find(what:=b, LookIn:=xlValues, lookat:=xlWhole) 'MsgBox c + d e = c.Address 'MsgBox e f = d.Address 'MsgBox f g = Range(e).Row MsgBox g h = Range(f).Row MsgBox h Range(Cells(g, 1), Cells(h, 5)).Select End sub よろしくお願い致します。

専門家に質問してみよう