• ベストアンサー

Excelのセル選択範囲の指定について

Excelのセル選択範囲の指定について d = Range("A65536").End(xlUp).Row Range("A1:K" & d).Select これでやると A1からk列のデータの最後の(データの入っている行)までを選択しますが このk列というところを n = ActiveSheet.Range("A1").End(xlToRight).Columnを使いKでなくデータのある列nを使った表現に変えたい。どうすればいいか。

  • taktta
  • お礼率72% (1031/1430)

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

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

#1で正解は出ていますが Range("A1:K" & d).SelectはA1が固定などのときわかりやすいが拘るな。Range(Cells(・・)、Cells(・・))あるよということ。 ーー dのやり方と統一するなら#1の場合はA1からEND+→だが 最右列セルからEND+← r = Range("iv2").End(xlToLeft).Column もあるよ。 ーー それにデータのありようで、使うべきかどうか変わるが でこぼこしているようなときは c = Range("a2").CurrentRegion.Columns.Count も使える場合があるよ。 UsedRangeなどもあり、WEBで違いを調べて。

taktta
質問者

お礼

皆さんのおかげで解決しました。簡潔でていねいなご回答どうもありがとうございました。

その他の回答 (3)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

下記で良いのでは? d = Range("A65536").End(xlUp).Row n = ActiveSheet.Range("A1").End(xlToRight).Column Range("A1",Cells(d,n)).Select

taktta
質問者

お礼

皆さんのおかげで解決しました。簡潔でていねいなご回答どうもありがとうございました。

  • falst
  • ベストアンサー率33% (16/48)
回答No.2

Cellsを使ってはどうでしょうか? d = Range("A65536").End(xlUp).Row n = ActiveSheet.Range("A1").End(xlToRight).Column Range(Cells(1, 1), Cells(d, n)).Select

taktta
質問者

お礼

皆さんのおかげで解決しました。簡潔でていねいなご回答どうもありがとうございました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

Range(Cells(1, 1), Cells(d, n)).Select や Range("A1", Cells(d, n)).Select でどうでしょう

taktta
質問者

お礼

皆さんのおかげで解決しました。簡潔でていねいなご回答どうもありがとうございました。

関連するQ&A

  • セルを選択するマクロ(エクセル)

    Sub test() x = ActiveCell.Row y = ActiveCell.End(xlToLeft).Column z = ActiveCell.End(xlToRight).Column Range(Cells(x, y), Cells(x, z)).Select End Sub アクティブセルが含まれている行のみで、データが入力されている連続したセルを選択状態にするマクロとして、上記を考えました。 上記を違った形でもっと簡潔に表すことは可能でしょうか?

  • エクセルVBA:範囲選択について

    初歩的な質問ですが、よろしくお願いします。 Excel2000です。 グラフを描くための範囲選択をしたいのですが、うまくいきません。 状況は、 ・列A、列Bにデータが入っている。(データの数はAB同じで2行以上) ・開始点は一定。(ここでは、行10と仮定します) ・終了点が変化する。(但し、終了点は常に一番下のデータ) これだけです。 一番下のデータを参照するので、 Range("A10 : Range("B10").End(xlDown)").Select Range("A10 : Range("B65536").End(xlUp)").Select Range("A10 : Cells(ActiveSheet.Rows.Count, 2).End(xlUp)").Select と書きましたが、全てダメでした。 直接書くのがダメなら変数を使おうと思い、 Dim StopCell as Range Set StopCell = Range("B65536").End(xlUp) Range("A10 : StopCell").Select と書きましたが、ダメでした。 このとき、変数StopCellには「セル」ではなく、「セルの値」が代入されているようです。 Valueと書いていないのに値が代入されていること、オブジェクト変数なのに数値が代入されていることが納得できません。 どこをどのように間違えているのでしょうか。 また、目的のマクロはどのようになるのでしょうか。 大村あつし著「かんたんプログラミングExcel2000VBA基礎編」および「同 コントロール・関数編」で勉強していますが解決しません。 ご教授ください。

  • VBA、セルの選択範囲について

    下記のような表を用意し、   A   B  C  D  E 1    1月 2月 3月 合計 2 Aさん 1  2  3  6 3 Bさん 1  2  3  6 4 Cさん 1  2  3  6 5 合 計 3  6  9  18 セルの範囲選択を指定し別シートの任意のセルへコピーをVBAで行いたいのですが、 Aさん、Bさん、Cさんという範囲を選択する為に、合計という文字は含みたくないので、 Range("A2").Select Range(Selection, Selection.End(xlDown).Offset(-1)).Select と記載し、これは出来ました。 同様に、 1月、2月、3月という範囲も同様にxlToRightを使用し選択出来ました。 Range("B1").Select Range(Selection.End(xlToRight).Offset(, -1), Selection).Select しかし、B2:D4の範囲の指定の仕方がわかりませんでした。 データのレコード数は一定ではないのでB2:D4というように範囲を指定する事は出来ません。 そのときに応じてDさん、Eさんと増えたり、4月、5月と増えたりするので。 何か方法があればご指導お願いします。

  • エクセルVBAでグラフの範囲を設定する方法

    お世話になっています。 グラフ自体は、作成済みのものを使用して、データの範囲だけを 変更させる方法を考えています。 A列に、データが入っている範囲を選択して、選択したセル範囲を グラフのデータ範囲としたいと思います。 現在、作成したプログラムは以下のものです。 当たり前なんでしょうが、以下のものではエラーになります。 Loopコマンドで、アクティブになったセルをグラフのデータ範囲に 設定する方法を教えてください。 よろしくお願いします。 Sub グラフ作成() ' Dim 範囲 As String Range("A1").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Activate Loop ActiveCell.Offset(-1, 0).Activate Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlUp)).Select   範囲 = ActiveCell ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SetSourceData Source:=Range(範囲) End Sub

  • EXCELマクロ、範囲選択はできたものの・・・

    こんにちは。 Wendy02さんはじめ、みなさんのお力をお借りして、 できあがりまじかのグラフですが、恥を承知で教えて ください。 教えてもらったマクロ Sub getMyRange3() Dim r As Range  With ActiveSheet.Range("A1").CurrentRegion    Set r = Cells(65536, .Cells(.Cells.Count).Column).End(xlUp)   Range("A1", r).Select  End With  Set r = Nothing End Sub ****************** ・データ範囲には0が存在する場合がある。 ・末尾データの0は範囲には入れない のことを考慮すると、期待の範囲がとれません。 オートフィルタでの処理も考えましたが、必要な 0までもフィルタされます。 ****************** masa_peeさんの作られたデータサンプルをお借りすると データ的には、    A  B  1 あ 13  2 い  0  3 う 60  4 え 52  5 お  0  6 か  0 というデータのなかで欲しい範囲は、A1からB4です

  • エクセルVBAで行のコピー貼り付けについて

    初心者、勉強中でエクセル2007です。 A1行からK40行までの表があります。 これを下にコピーをしながら増やしていってるのですが、マクロでしようと思い下記のとおり 考えました。 selecion.row.Offset(39, -1).Select ここでオブジェクトが必要ですと出ます。 それからその下の?とを色々ぐぐってみますがどうしてもわかりません。 それと2007ですので65536行ではないのですが、MaxRow = Cells(Rows.Count, 1).End(xlUp).Row だと動かないみたいですので下記としています。 よろしくご教授お願いします。 Sub Gcopy() MaxRow = Range("B65536").End(xlUp).Offset(-39, -1).Select データの入ってる最終行を取得 Selecion.row.Offset(39, -1).Select 選択された行から上に39行移動し選択 ?                    下へ39行まで選択   MaxRow = Range("B65536").End(xlUp).Offset(1, -1) 最終行を取得 ActiveSheet.Paste 貼り付け End Sub

  • セル範囲指定方法

    VBAにて下記作成中ですが、行き詰ってしまいました。 どなたか、ご教授願います。 Sub 転記ボックス1_Click() Sheets("S").Select Range("N13").Select If ActiveCell.Value <> "" Then Selection.Copy Sheets("H").Select Range("K65536").End(xlUp).Offset(0, 1).Select --->シートH、K列最終行の右隣からL列最終行の範囲を指定 上記指定範囲内全てに、シートS・N13の値を貼付 ElseIf ActiveCell.Value = "" Then Sheets("H").Select Range("K65536").End(xlUp).Offset(0, 1).Select --->シートH、K列最終行の右隣からL列最終行の範囲を指定 上記指定範囲内全てに、”シートS・N13”と入力 End If End Sub --->部分の書き方がわかりません。 よろしくお願いします。

  • エクセル VBA 範囲指定方法

    エクセルVBA初心者です。 以下の範囲指定について教えてください。 一つの表のK列の一番下のセル(不定)を選択→Range("K65536").End(xlUp).Select その選択されたセルからA3(固定)まで範囲を選択したいのですが、不定セル:固定セル の範囲指定方法が分かりません。 よろしくお願いいたします。

  • エクセルVBA セル範囲の選択とループ処理

    VBA歴がまだ浅い学習者です。アドバイスをお願いいたします。 4つのシート、D、X、Y、Summaryがあります。 シートの概要: D:データが大量にあるシート X、Y:個別にデータを張り付けるシート Summary:X、Yを元にシート関数で、結果を出すシート シートDの概要: ABCDEFGHIJKLM 空空空空空空空空空空空空空 ←1行目は空白 空空11111111111 ←データの最初の行は、A列B列のみ空白、 1111111111111 1111111111111 1つ目のデータ群(A2:M14) ※行数は適当、列は固定(A:M) 1111111111111 空空22222222222 2222222222222 2つ目のデータ群 (A15:M23) ※行数は適当、列は固定(A:M) 2222222222222 2222222222222 空空33333333333 3333333333333       ・             ・             ・             ・       空空nnnnnnnnnnn ←データの数は可変する(ただし偶数個) nnnnnnnnnnnnn nnnnnnnnnnnnn nnnnnnnnnnnnn nnnnnnnnnnnnn ◇注意点 データの列数は同一ですが、行数は、同じではありません。 1つ目と2つ目、3つ目と4つ目・・・のデータ群が、比較したいペアのデータです。 やりたい操作:(下記にサンプルコードあり) ・1つ目のデータ群を選択してコピー ・それをシートXのA1より貼り付け ・2つ目のデータ群を選択してコピー ・それをシートYのA1より貼り付け ・(ここで比較結果が、シートSummaryのB2:J2に返される) ・シートSummaryのB2:J2に返された結果をコピーして、同シート、B4より貼り付ける(以後その下に張り付ける) ・3つ目のデータ群を選択してコピー ・それをシートXのA1より貼り付け ・4つ目のデータ群を選択してコピー ・それをシートYのA1より貼り付け ・(ここで比較結果が、シートSummaryのB2:J2に返される) ・シートSummaryのB2:J2に返された結果をコピーして、同シート、B5より貼り付ける(以後その下に張り付ける) ・以下データがなくなるまでループ わからない点: ・データ群のセル範囲を手書きではなく自動(おそらくend(xldown)を使用)で選択させる記述  ※データの見出し行にあるAB列の空白をうまく使って書けるのではと考えています。 ・ループ処理の記述 どうかご教授お願いいたします。 補足が足りない場合は、お伝えください。 サンプルコード Sub テスト() Sheets("D").Select Range("A2:M14").Select  ’??? Selection.Copy Sheets("X").Select ActiveSheet.Paste Sheets("D").Select Range("A15:M23").Select '??? Application.CutCopyMode = False Selection.Copy Sheets("Y").Select ActiveSheet.Paste Sheets("summary").Select Range("B2:J2").Select Application.CutCopyMode = False Selection.Copy Range("B4").Select '??? ActiveSheet.Paste End Sub

  • Excel2003 VBAで印刷 セル指定

    よろしくお願いします。 ボタン5をクリックしてある範囲を印刷したいのですが、私が知っているものはセル指定でActiveSheet.PageSetup.PrintArea = Range("A90:K130") であれが印刷可能なのですが最後の行までにしたいのですがどうしてもうまくいきません。 ActiveSheet.PageSetup.PrintArea = Range(Cells(90, 1), Cells(r, 11)) それと同時に11列全部(文字は小さくてもいいのですが)一枚に印刷したのですが よろしくお願いします。 Private Sub CommandButton5_Click() res = MsgBox("決済記録を印刷します", vbYesNo + vbQuestion) If res = vbYes Then r = Range("A65536").End(xlUp).Row + 1 'Range(Cells(90,1),Cells(r,11)) '印刷したい範囲 ActiveSheet.PageSetup.PrintArea = Range("A90:K130") ActiveSheet.PrintOut preview:=True End If End Sub

専門家に質問してみよう