• 締切済み

エクセルVBAの最終行頭を選択されるように実行した

データベースの最終行にデータを追加し、最終行頭のセルが選択されるようマクロを実行したいのですがわかりません。 下記の通りで実行すると、表の先頭行のセルが選択されます。 どうすれば最終行頭を選択されるようにできるでしょうか? '-------------------- ' 行を追加する Macro '-------------------- Sub 行を追加する() Dim rowsCount As Long '表の現在の行数 '行数の取得 rowsCount = Range("DB受入0770").rows.Count '最下行に行を挿入 Range("DB受入0770").Cells(rowsCount, 1).EntireRow.Insert End Sub '-------------------------- ' 受入0770の並べ替え Macro '-------------------------- Sub 受入0770の並べ替え() Dim rowsCount As Long '表の現在の行数 '行数の取得 rowsCount = Range("DB受入0770").rows.Count '受入日順に並べ替える Worksheets("受け入れ").Sort.SortFields.Clear Worksheets("受け入れ").Sort.SortFields.Add _ Key:=Range("DB受入0770").Columns(1), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With Worksheets("受け入れ").Sort .SetRange Range("DB受入0770") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub

みんなの回答

noname#223464
noname#223464
回答No.4

その部分であってます。 ・・・・ ・・・・ .SortMethod = xlPinYin .Apply End With (ここに追加コード) End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.3

あの・・・先頭行が選択されているなら、 Selection.End(xlDown).Select で、そのデータベースの最終行にカーソルが飛びますよ。 要は[ctrl]+[↓]をキー記録すると出てくるコードなんですが。

全文を見る
すると、全ての回答が全文表示されます。
noname#223464
noname#223464
回答No.2

できなかったというのはエラーになったのか、結果が変わらなかったかわからないのですが。 <エラーだった場合:End Subの前に下記2行を追加> Worksheets("受け入れ").Select Worksheets("受け入れ").Cells(rowsCount,1).Select <変わらなかった場合> rowsCountの値を確かめてみる 例えば、rowsCountの値が1だった場合には、Cells(1,1).Selectが選択されてしまっている <別の方法:End Subの前に下記2行を追加> Worksheets("受け入れ").Select Worksheets("受け入れ").Cells(Rows.Count, 1).End(xlUp).Select このくらいしか思いつきません。すいません。

yam-yam69
質問者

お礼

とんでもないです、私の説明が拙くて申し訳ありません。 エラーにはならなかったのですが、やはりダメでした・・・ ちなみに『End With』と『End Sub』の間ですか? 申し訳ありません、お恥ずかしいです(T-T)

全文を見る
すると、全ての回答が全文表示されます。
noname#223464
noname#223464
回答No.1

End Sub の前に Worksheets("受け入れ").Cells(rowsCount,1).Select

yam-yam69
質問者

お礼

回答、ありがとうございます! 一番最後のEnd Subの前に入れるのですか? 試してみたのですが・・・ できなかったのです(T-T) どうしてなんでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルの並べ替えをマクロで

    知識が無くなかなか解決しません。教えて下さい。 エクセル(2000)のマクロの記録で並べ替えを記録すると下記の様になりました。 Range("A1:M57").Select ActiveWorkbook.Worksheets("表2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("表2").Sort.SortFields.Add Key:=Range("C2:C57"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("表2").Sort.SortFields.Add Key:=Range("D2:D57"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("表2").Sort .SetRange Range("A1:M57") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A2").Select End Sub 次のように改良する方法を探しています。 (1)Range("A1:M57").Select → 表によって行数が違う為、行数とおりに範囲選択したい。 M65536とすれば良いのかもしれませんが、パソコンの処理能力が低く、なるべく負担が掛からない様にしたいのですが。列数はA列からM列の限定です。 (2)ActiveWorkbook.Worksheets("表2")  → ("表2")限定ではなく他のシート名でも並べ替えが出来る様にするにはどのようにすれば良いのでしょうか。 いろいろ試しましたがうまく出来ません。お知恵をお貸し下さい。よろしくお願い致します。

  • エクセルVBAでデータ並べ替え

    マクロ記録をとると次のようになりました。 これをA列をキーに並べるもっと簡単なコードを教えてください。 Range("A2:G501")となっていますが、これ以上でも対応できるようにしたいです。 どなたか教えていただけないでしょうか。 Sub Macro1() Range("A1").Select ActiveWorkbook.Worksheets("***").Sort.SortFields.Clear ActiveWorkbook.Worksheets("***").Sort.SortFields.Add Key:=Range("A1"), SortOn _ :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("***").Sort .SetRange Range("A2:G501") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub

  • EXCELでマクロが

    昨日から、期待する動きでなくなりました。 シートに新たに数式を加え、rank関数ではきちんと表示するのですが、マクロを動かすと、 期待した動きでなくなりました。 Sub Sheet2STD昇順並べ替え() ' ' Sheet2STD昇順並べ替え Macro ' ' Range("B6:V24").Select ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("C7:C24") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range("B6:V24") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A1").Select End Sub 図にある下向きの矢印にマクロを登録しています。

  • エクセルVBA

    よろしくお願いいたします。 エクセルのVBAですが、下記のコードを実行すると処理が遅いです。処理が早くなるコード教えてください。 よろしくお願いいたします。 Sub Macro3() Dim aa As Variant Dim i As Variant Application.ScreenUpdating = False Range("A14:i46").Select aa = ActiveSheet.Name ActiveWorkbook.Worksheets(aa).Sort.SortFields.Clear ActiveWorkbook.Worksheets(aa).Sort.SortFields.Add Key:=Range("B15:B46"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets(aa).Sort.SortFields.Add Key:=Range("C15:C46"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets(aa).Sort .SetRange Range("A14:i46") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With For i = 0 To 31 Cells(15 + i, 7).Select If Selection.Value = 0 Then Selection.EntireRow.Hidden = True End If Next i Range("A1").Select Application.ScreenUpdating = True End Sub

  • エクセルのマクロ記録を他のシートでも実行したい

    エクセル2010を使用しています。 シート1でマクロ記録を使用しデータの並び替えをし、 同じブック内にシート1をコピーしてシート2としました。 このシート2でもシート1で行ったデータの並び替えをしたいのですが シート2ではマクロは実行されませんでした。 わからないながらもVBAを見たところ下記のように 記述されおりましたが、どのような修正をすればよいかご教授いただけると助かります。 ちなみに、シート1でマクロを記録し、そのシートを同ブック内に複数コピーして それぞれのシートでマクロを実行させるということを考えています。 Sub Macro1() ' ' Macro1 Macro ' ' Range("A11:Q17").Select ActiveWorkbook.Worksheets("1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("B11:B17"), _ SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="日,月,火,水,木,金,土" _ , DataOption:=xlSortNormal ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("A11:A17"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("1").Sort .SetRange Range("A11:Q17") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub

  • エクセルVBA

    お世話になります。 マクロの記録で、下記のようにC列を基準に表内を並べ替えるように記録されました。 Range("C4").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("AQ5:AQ39" _ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A4:EJ39") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ご教授いただきたい点が2点あります。 1. end行 (今のところ39行め) が毎回変わっても その位置を認識して、対応するようにしたいのですが、 どのように書き換えるとよいのでしょうか? C4は、タイトル行で、毎回固定です。 やはり、毎回最終行の次の行 (今回のケースでいうと、40行目に)に、 endと手作業で入力する方法しかないでしょうか? それしかない場合は、その記述の仕方をお願いします。 例えば、最大500行もあればいいので、途中の空白セルは、無視して 並べ替えをしてくれる記述などで教えていただけるとありがたいのですが・・・ 2. 必ず、active なシートを選択しておいてから、マクロを実行するとして、 シート名の sheet1 も可変にしたいです。 よろしくお願いします。m(_ _)m

  • エクセルのvba(最終行を取得する並び替え)

    初めまして、エクセルのvbaについて質問をさせてください。 マクロの記録を使って、以下の通りF列→M列→J列の順に優先して、A列からAL列を昇順に並び替えるvbaを作成したのですが、10000行までとう不恰好な書き方になっています。最終行までという書き方に変えたいのですが、色々試したもののうまくいきません…!この場合、最終行を取得するにはどのような書き方にすれば良いのでしょうか…??(T-T) '並び替え ActiveWorkbook.Worksheets("当月").Sort.SortFields.Clear ActiveWorkbook.Worksheets("当月").Sort.SortFields.Add Key:=Range("F2:F10000"_ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortTextAsNumbers ActiveWorkbook.Worksheets("当月").Sort.SortFields.Add Key:=Range("M2:M10000"_ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("当月").Sort.SortFields.Add Key:=Range("J2:J10000"_ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("当月").Sort .SetRange Range("A1:AL10000") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With

  • VBA エクセルでオートフィルタをされているデータ

    エクセルでオートフィルタをされているデータを 昇順で並べ替えするコードを取得したのですが ActiveWorkbook.Worksheets("置換").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("置換").AutoFilter.Sort.SortFields.Add Key:=Range("A1:A5203"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("置換").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With なのですが どれが並べ替えのコードなのでしょうか? ActiveWorkbook.Worksheets("置換").AutoFilter.Sort.SortFields.Clear これはオートフィルタの並べ替えを解除するコードだと思いますが ActiveWorkbook.Worksheets("置換").AutoFilter.Sort.SortFields.Add Key:=Range("A1:A5203"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal これは何のコードでしょう?

  • マクロのシートでのコピーができません。

    ビスタ エクセル 2007を使用しています。B2~E12まで簡単な表を作り E列で昇り順に並べ替えしました。そして並べ替えからこの表を印刷するまでマクロで完成しました。 ところが、別のシートにコピーすると印刷はされますが、並べ替えがされずに印刷だけされます。同じ表を30枚作成し、それぞれ同じ操作と印刷のマクロを組みたいのですが・・・・どなたか助けてください。 Sub ボタン5_Click() ' ' ボタン5_Click Macro ' ' Columns("E:E").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("E1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("B2:E12") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub

  • Excel VBA UsedRange範囲ソート

    図のような中抜の一覧ができているとき、商品コードで空行を飛ばして並び替えをしたいのですが、下記だと空行まで(チョコからわたがしまで)しか対象になりません。 ---------------------------- Sub 並べ替え() With ActiveSheet.Sort .SortFields.Clear 'Key:=Range("A3")でソートする列とタイトル位置を指定 .SortFields.Add Key:=Range("A3"), SortOn:=xlSortOnValues, _ Order:=xlAscending '.「商品コード」("A3").でソート .SetRange Range("A3").CurrentRegion ' 先頭行をタイトル行と見なす .Header = xlYes .Apply End With End Sub ------------------------- 範囲をCurrentRegion ではなくUsedRangeに広げるには、どこをいじったらいいでしょうか。 求める結果としては「商品コード」の列が登り順に揃ってほしいのです。 データ処理としてはソートをかければいいだけですが、UsedRange(範囲内のセルを選択し、Ctrl+Shift+Endキーで選ばれる範囲)をみつけてソートをかける方法を知りたいのです。