• ベストアンサー

[ExcelVBA]ドラッグした範囲の一番下の行番号を取得したい

現在、ExcelVBAを職場で活用しようと学習中です。 いま、ドラッグした範囲に格子状に罫線を引き、ドラッグした範囲の 一番下の行の上側だけ2重線にしたいのです。 格子状に罫線を引くところまでは良いのですが、最後の行を仕切る2重線を 引く位置が問題です。 ドラッグする範囲は列数も行数も毎回変わるので二重線を引く行を どのように指定すべきなのか困っています。 Selectionのプロパティにはそれらしいものが見当たりませんでした。 selectionの最終行の行番号をどのように取得したらよいでしょうか。 どなたか御存知の方がおられましたら、アドバイスお願いします。 環境は、Excel2000 & WinMe です。 宜しくお願いします。

  • JB14
  • お礼率92% (36/39)

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

Selection.Row + Selection.Rows.Count - 1 かな。もっと簡単な書き方があるかも。 ただ、選択範囲の最終行の上側だけ2重線にしたいのであれば、行番号を取得しなくても、 With Selection  .Rows(.Rows.Count).Borders(xlEdgeTop).LineStyle = xlDouble End With でできるかと思います。

JB14
質問者

お礼

なるほど。これはスマートなやり方ですね。 サンプル付きで大変参考になります。 おかげさまで解決しました。 ありがとうございました。

その他の回答 (1)

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

とりあえず、  Selection.Rows + Selection.Rows.cout - 1 で選択範囲の最終行番号を取得できます

JB14
質問者

お礼

素早い回答感謝いたします。 RowsにCountプロパティがあったとは…。 見落としていました。助かりました。 ありがとうございました。

関連するQ&A

  • ExcelVBA 行削除

    ExcelVBA 行削除 行削除マクロを組んでみようと、以下のソースを書きましたが エラーが出てしまいます。理由分かりますか?? ==ソース========================= Sub DeleteRows() Dim Va1 As Integer, Va2 As Integer, Va3 As Integer Worksheets("Sheet1").Activate Va1 = Selection.Row Va2 = Application.InputBox(Prompt:="何行消しますか??", Type:=1) Va3 = (Va1 + Va2) - 1 Rows("Va1:Va3").Delete End Sub ============================== やりたい事は、選択されているセルの行から数行(行数は数値指定)下までを選択して、 それを削除したいだけです。

  • ExcelVBAで相対参照をしたい

    ExcelVBAで、任意の範囲を選択して各行ごとにある処理を行いたいと考えています。 Sheet_Name = ActiveSheet.Name range_address = Selection.Address range_address = Replace(range_address, "$", "") range_address = Left(range_address, InStr(range_address, ":") - 1) work_columns = Selection.Columns.Count '列数 Work_Rows = Selection.Rows.Count '行数 Range(range_address).Select Range(activecell_address, ActiveCell.Offset(0, work_columns)).Select 行の選択が出来れば、あとは、ソートするだけです。 と、選択範囲の左上のアドレスと、選択範囲の行数、列数の取得は出来たのですが、1行ごとの選択がうまく出来ません。(相対参照の仕方がわかっていないだけだと思いますが) やりたいことは、選択範囲を上から順に行ごとにソートしたいのですが、どなたか?詳しい方がいらっしゃいましたら教えて頂けないでしょうか?

  • 複数セル選択範囲を下の変動する最終行まで伸ばしたい

    Win7とExcel2007でマクロ作成の初心者です。 Sub 選択範囲を広げる() Sheets("計算").Select Range("CU6").Select Selection.Resize(, Selection.Columns.Count + 27).Select ここで選んだセルの選択部分を、下の行に向かって選択範囲を広げたいです。 ただ、下方の行数は、常に変動するため、どうやって変動の選択範囲を広げたいか わかりません。よろしくお願いします。 表のCU6以下は、文字列と空白が交互にあります。 End Sub

  • エクセルでのセル範囲取得

    セルの選択された範囲をVBAで取得する時、選択開始行は「ActiveCell.Row」で取得出来ますが、 選択終了行を取得するプロパティは無いのでしょうか? 「Selection.Cells.Count」を使用して、選択範囲の行数が返って来るのは分かっています。 問題なのはセルの選択順序です。 セルの範囲選択を上から下方向の場合は問題無いのですが、下から上に選択した場合、 選択開始行より下なのか、上なのかが判断出来ません。 そこで、選択範囲の行数ではなく、選択範囲終了の「行位置」が取得できる方法が無いかと色々調べてみましたが、見つけられませんでした。 どなたか御存知でしたら教えて下さい。

  • Excel:選択している行・列を見やすくする方法

    Excelで、行数・列数の多い表を扱っているとき、選択している行・列がどこなのか、見間違うことがあります。 行数・列数が書いてある部分が立体的になり、太字になることは知っていますが、それでも、見られる範囲を広げる為にズームを50%などとしていると、分かりにくいです。 秀丸エディタなどでは、カーソルのある行の背景色を変えたりして見やすくする機能がありますが、Excelで同じように、選択している行・列の背景色を変えるなどして、見やすくする方法はないでしょうか? Windows2000, Excel2000を使用しています。

  • Excelセル範囲内の値のみ1行づつ開ける

    下記コードでは1行づつ挿入により下段(罫線枠)までずれてしまいます。 範囲内(E8:G15)での値のみ1行づつ開け表-2のように罫線をずらさずにするにはどのようにすれば良いでしょうか。 どなたか解る方よろしくお願いします。 Sub Test() Dim i As Long If TypeName(Selection) <> "Range" Then Exit Sub With Selection For i = .Rows.Count To 2 Step -1 Intersect(.Cells(i, 1).EntireRow, .Columns).Insert xlDown Next End With End Su

  • エクセルで列と行数を入力すると罫線が自動的に引かれるようにしたいです。

    エクセルで列と行数を入力すると罫線が自動的に引かれるようにしたいです。 エクセルの質問なのですが、下の画像のように、行数と列数を入力すると、 自動的に3×3セルを1マスとした罫線(格子)が引かれるようにしたいです。 関数ではなく、VBAではないだろうかとは思ったのですが、 自力ではどうしてもわからなかったため質問させていただきました。 どのようにすれば可能でしょうか。どうかよろしくお願いします! ちなみにエクセルのバージョンは2007です。

  • 【Excel】罫線の作成

    Excel2003を使用しています。 罫線を引く際、線を引きたいセルを選択して、罫線メニューから「外枠」や「格子」等のボタンを押せば、簡単に引くことができますが、同じようなボタンを独自に作ることはできませんか? 希望としては… 3行4列のセルに(例えばA1:D3とした場合) A1:D1→上罫線 A3:D3→上罫線+下二重罫線 複数のシートに渡って、この罫線を引くのですが、選択するセルが違うので、作業グループではできません。罫線メニューのボタンをクリックするのと同じような操作で、罫線が引けると嬉しいのですが。。。 よろしくお願いします。

  • Wordの表で行の高さがドラッグ移動できない

    Windows2000でWord2000を使用しています。 Wordの罫線機能を使用して表を作成し、行の高さの移動をしようとする場合、ポインタを線に合わせると ↑ = ↓ のようなマークは出ますが、クリックしても ……………………………………… が出ず、ドラッグ移動できません。 表のプロパティから、数値を変えることで高さは変えられますが、いちいち設定するのは面倒で不便です。 列幅の方は、問題なくドラッグ移動できます。 他のマシン(WindowsXPのWord2002)では行の高さもドラッグ移動できます。 ちなみに、編集は印刷レイアウトでしています。 表の中身で無駄な改行などはしていません。 これは不具合なのでしょうか。それともそういう仕様でしょうか? 確か、以前にはできていたと思うのですが・・・ 不具合でしたら、何か解決方法はあるでしょうか。

  • VBA(excel)でグラフのデータ範囲の取得

    excel2010の VBA利用者です。 グラフが書いてあって(種類は3D等高線グラフ)、 その元になるデータ範囲は 例えば ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$D$10") のようにすれば、シート1のRange("A1:D10")の範囲が設定できます。  では、  これの 逆に 設定でなくて、取得が出来ませんでしょうか?  つまり 上記の場合でしたら、範囲"A1:D10"を取得して、変数に代入したいのです。 もし、範囲としての取得が難しいならば、最低限 グラフの現在のデータ範囲の矩形範囲の縦横の、行数、列数の 取得だけでもなんとかしたいのですが、 何か方法はないでしょうか? 縦横数百セルの大き目の範囲を相手にしたいので、 Formulaプロパティで系列ごとに取得していく方法では煩雑になるので 何とかもっと 簡便な方法が無いものかと思っております 御教授のほど、よろしくお願いいたします。

専門家に質問してみよう