いつもお世話になっております。
現在マクロを作成しておりまして、追加機能が多くなり
自分の知識だけではどうにもならず、内容が連動しているため
一度に2点の質問をさせて頂きます。
どなたかご伝授よろしくお願いいたします。
1.並び替えについて
セルを結合している場合は並び替えができないようなExcel仕様になっていますので、
これを一括で解除して並び替えが終了したら、元の結合セル状態に一括で戻す
方法があるのでしょうか。
2.セルの範囲指定について
データの入力されているセルまで自動で範囲指定の方法があるのでしょうか。
セルA2:E10まで入力されていつ場合(E列が入力項目の最後の列と仮定)
No.4ベストアンサー
- 回答日時:
No2です。
セルの結合/解除、結合セルの判定については
下記URLが参考になります。
http://www.moug.net/tech/exvba/0050106.html
http://www.moug.net/tech/exvba/0050105.html
No.2
- 回答日時:
「2.セルの範囲指定について」は、No1の方が述べているので、「1.並び替えについて」のみ回答します。
添付図1のような状態として、考えられるのは
①A列をキーにしてA,B列をソート
②B列をキーにしてA,B列をソート
上記で②については、あり得ないので①のケースとして回答します。
問題点1.セル結合を解除すると、結合セルの最上位行以外は、空白になります。
つまり添付図2のようになります。
つまり、黄色の部分が空白になるので、ここに上の行と同じ内容を設定してあげないとソートがでできません。
この問題を解決する必要があります。
また、逆に言えば、セル結合するとき、黄色のセルは、空白にしてから、セル結合しないと、期待した結果になりません。
上記の問題が解決したとしても、セル結合した範囲の行が、異なるなら、前回の結合解除したセル位置の
ソート後にセル結合する位置は変わってきます。そのことを念頭に置く必要があります。
No.1
- 回答日時:
セル A2 から使用されているセルの終端までの範囲を参照するには
Dim s As Worksheet
Set s = Thisworkbook.Worksheets("Sheet1")
Dim r1 As Range, r2 As Range
Set r1 = s.Cells(2, 1)
Set r2 = s.Range(r1, s.UsedRange.Cells.SpecialCells(xlCellTypeLastCell))
r2 には A2 ~ 最終列の最終行までのセル参照が入っています。
結合を解除したり元の結合状態に戻したりする処理はお勧めできません。
ワークシート オブジェクト、表のセル範囲、並び替えに使用する列番号、昇順降順などのパラメータを保持し、並び替えや元に戻す処理をしてくれるクラス モジュールを自作するのならそれも良いでしょう。
並び替えも元に戻すという事は、もともとの行番号も記憶しておかなければなりませんね。
本の並び順の中で、どのセルとどのセルが結合されていたかという情報も記憶しておかなければなりませんね。
であれば一時的に別シートに複製した表を使うのはどうでしょうか?
これなら元に戻す必要はありません。
また、セルの値だけ取得できれば良いのであれば二次元配列に読み込んで、配列上でソートを掛けてみるのもいいかもしれません。
一部が結合されたままでも、セルの値を読み取るだけであれば特に問題なくできたかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Visual Basic(VBA) ExcelVBAの複数指定範囲の構文 2 2022/05/26 22:39
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) 条件付き書式 ある範囲で色がついているセルと同行の別のセルに色を付けたい 4 2022/04/20 07:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelでSUBTOTAL関数を設定した...
-
エクセル ボタンを押すとセルの...
-
EXCELで、結合されたセルに連続...
-
エクセルで片方のセルに入力し...
-
Excel 離れたセルへの連続デー...
-
セルを結合した場合の関数(COU...
-
エクセルでたくさんのセルを小...
-
セルの値を取得してSQL文に組み...
-
VBAで “:” を含むセルの特定
-
エクセルでチェックボックスを...
-
Excelでnullになるような式のセ...
-
VBAで結合したセルがクリアでき...
-
VBAで困っています。
-
エクセル 結合セル内に空白なら...
-
Excel2007 セルの削除について
-
EXCEL セル結合したセルを参照...
-
エクセルで作業した日の日付を残す
-
Excelの表に自動でナンバリング...
-
vba 結合されたセルの列番号を...
-
EXCELマクロについて教えてくだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelでSUBTOTAL関数を設定した...
-
エクセル ボタンを押すとセルの...
-
EXCELで、結合されたセルに連続...
-
セルを結合した場合の関数(COU...
-
エクセルで片方のセルに入力し...
-
Excel 離れたセルへの連続デー...
-
VBAで結合したセルがクリアでき...
-
セルの値を取得してSQL文に組み...
-
Excelの表に自動でナンバリング...
-
エクセルでセルをクリックして“...
-
Excelのカウントアップボタンに...
-
エクセル 結合セル内に空白なら...
-
Excel セルを結合したものを抽...
-
VBAで困っています。
-
Excel2007 セルの削除について
-
【EXCEL】条件に合致するセルの...
-
エクセルでたくさんのセルを小...
-
エクセルで作業した日の日付を残す
-
Excelでnullになるような式のセ...
-
EXCEL VLOOKUP的コメント自動表示
おすすめ情報