
いつもお世話になっております。
この度、初心者知識でお恥ずかしながら下記のマクロを構築したのですが、
データが入っていない場合は
★Range(Selection, Selection.End(xlDown)).SelectEnd(xlDown)
の処理をせずその上の
■Range(Selection, Selection.End(xlToRight)).Select
の処理で止め選択範囲をコピーしたく
その際はどの様な構文になるのかご教示いただきたく質問させていただきました。
Sub 指定範囲選択()
Sheets("Sheet3").Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select 'A1~右端を選択(※Qセルまで)
Selection.AutoFill Destination:=Range("A1:Q200"), Type:=xlFillDefault 'A1~Q200セルまでオートフィル
Range("A1:Q200").Select
'C1セルを0以外でフィルター
ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
Field:=3, _
Criteria1:="<>0"
Range("B2").Select
■Range(Selection, Selection.End(xlToRight)).Select
★Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
End Sub
またこの構築にするともっと短くできるなどございましたら重ねてよろしくお願い申し上げます。
No.1ベストアンサー
- 回答日時:
こんにちは
説明が全く無いので、何をしたいのかさっぱりわかりませんけれど・・
>データが入っていない場合は、★の処理をせずその上の
>■の処理で止め選択範囲をコピーしたく
そのままを記述すれば良いだけでは?
「データが入っていない」というのがどのセルのことなのか不明ですけれど、★の1行を条件で実行するようにして、
If Range("B2") <> "" Then ★
とすれば良いだけのような・・・?
(意味が違う場合は、条件式の部分を修正すれば宜しいでしょう)
>もっと短くできるなどございましたら
なさりたいことが、さっぱりわかりませんけれど、こんなことかも。
Range("A1:Q1").AutoFill Range("A1:Q200")
Range("A1:Q200").AutoFilter Field:=3, Criteria1:="<>0"
Range(Range("B2"), Range("B2").End(xlToRight)).Select
If Range("B2") <> "" Then Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
fujillin様、いつもお世話になっております。
回答ありがとうございます。
If Range("B2") <> "" Then Range(Selection, Selection.End(xlDown)).Select
こちらで理想の処理が実現できました。
この様な形で組み込めるのですね。
勉強になりました。
ありがとうございます。
No.2
- 回答日時:
こんにちは
想像の範疇で回答するのは、過去の経験から意味が無いかも知れませんが
(違う意図でしたら読み飛ばしてください)
説明のままだと選択する意味を感じませんし、後のコピーもなんで
AutoFilterするのとなります
なので想像で
>の処理をせず
>★Range(Selection, Selection.End(xlDown)).SelectEnd(xlDown)
のような選択をしたいと言う事では無いかと・・
つまり、AutoFilter結果をコピーしたいのかな・・と思いました
AutoFilter結果をコピーする為の範囲指定は下記を参考にしてください
http://officetanaka.net/excel/vba/tips/tips155c. …
もし、分かり難ければ 「VBA AutoFilter結果をコピーする」などで検索して確認してみましょう
なんとなくしか分からなくても 同じような処理をしたい場合に
検索キーワードだけ覚えておけば、何とかなると思いますし
色々添削するうちに覚えてしまうと思います(良き時代です)
AutoFillしてAutoFilterで結果が変わると言う事はC1は少なくとも数式が入っていると思われますが、
>データが入っていない と "<>0" は意味が違いますのでこれも注意した方が良いと思いました
>もっと短くできるなど
基本的に記録マクロなどで記録される
Select や Selection は つなげ、省く事が出来ます
言葉にすると理解できるかと・・
りんごを選択しました。選択したものをください この命令は
りんごをくださいと同じ
Sheets("Sheet3").Select
Range(Range("A1"), Range("A1").End(xlToRight)).Select 'A1~右端を選択(※Qセルまで)
が
Sheets("Sheet3").Select はこの場合、省かない方が良いと思います
(Sheets("Sheet3").Selectが記録されている場合、他のシートから記録されたモノなので省くとエラーになる)
もし、省く場合は 全てのRangeの前にSheets("Sheet3").を書く必要があり、Selectも書いてはダメです
(Sheet3シートに配置したボタンなどで必ずSheets("Sheet3")で実行する場合は可)
大分脱線してしまいました、この辺りは失敗しながら覚えてください
Qchan1962様、回答ありがとうございます。
「データが入っていない と "<>0" は意味が違います」
分かりやすいご説明ありがとうございます。
勉強になります。
別シートの作業で関数が入っているセルに0が表示されている場合もあるのですが、こちらの処理を分岐させたい場合には<> "0" Thenの表記で分岐させることができましたのでこちらも重ねて活用させていただきます。
また提示いただきましたサイトも参考に勉強していこうと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) excelVBAについて。 4 2022/11/21 16:15
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
- Visual Basic(VBA) excelVBAについて。 1 2022/11/30 06:16
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Visual Basic(VBA) いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう 6 2022/12/17 15:01
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の色のついたセルを削除
-
VBAマクロ実行時エラーの修正に...
-
複数指定セルの可視セルのみを...
-
C# DataGridViewで複数選択した...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
Excelで空白セル直前のセルデー...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
VBAでユーザーフォームにセル値...
-
CellEnterイベント仕様について
-
円弧の描画方法
-
DataGridViewでグリッド内に線...
-
Excel 範囲指定スクショについ...
-
VB2005 DataGridView で選択...
-
DataGridViewのフォーカス遷移...
-
【Excel VBA】マクロで書き込ん...
-
エクセル、マクロで番号を読込...
-
Excel VBA でFunctionプロシジ...
-
[Excel VBA] このコードでは行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
エクセルVBA 配列からセルに「...
-
VBA:日付を配列に入れ別セルに...
-
エクセル、マクロで番号を読込...
-
【Excel VBA】一番右端セルまで...
-
【VBA】写真の貼り付けコードが...
-
【ExcelVBA】値を変更しながら...
-
【VBA】【ユーザーフォーム_Lis...
-
DataGridViewのフォーカス遷移...
-
EXCEL VBA 文中の書式ごと複写...
-
データグリッドビューの結合セ...
-
複数指定セルの可視セルのみを...
-
QRコード作成マクロについて
-
C# DataGridViewで複数選択した...
-
Excel 範囲指定スクショについ...
-
エクセル VBA ボタンをクリック...
-
DataGridViewでグリッド内に線...
おすすめ情報