
いつもお世話になっております。
この度、初心者知識でお恥ずかしながら下記のマクロを構築したのですが、
データが入っていない場合は
★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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
【ご教示ください】VBAの記述方法がわかりません。
Visual Basic(VBA)
-
Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、
Visual Basic(VBA)
-
重複したデータ(空白は除く)のVBA表記について
Visual Basic(VBA)
-
4
Excel VBA 大量のレコードからある列の重複数をカウントする方法?拡張編
Visual Basic(VBA)
-
5
VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「"」付にならないよ
Visual Basic(VBA)
-
6
マクロのコードを、少しでも削って短くしたい
Excel(エクセル)
-
7
以前シートを集めて1シートへ繋げる下記コードをご教授いただき作成しました。 今回すでに集めてある「ま
Visual Basic(VBA)
-
8
シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要
Visual Basic(VBA)
-
9
ExcelのVBAでシフト表を作っていますが、バグが出て困っています
Visual Basic(VBA)
-
10
マクロを簡潔にしたい
Excel(エクセル)
-
11
エクセルのデータの抽出について
Excel(エクセル)
-
12
VBAでのフルパスの取得
Visual Basic(VBA)
-
13
Excel VBAでAA(BBB) → BBB.AA に置換したい
Visual Basic(VBA)
-
14
VBAの計算について
Visual Basic(VBA)
-
15
なぜこんな初歩的なVBAのIf文でエラーか発生して使えないのか、全く理解出来ません。誰か助けてくださ
Visual Basic(VBA)
-
16
Excel VBA で End Subのところで「型が一致しません」のエラーとなります。
Visual Basic(VBA)
-
17
【VBA】印刷マクロのループ処理が反映されません
Visual Basic(VBA)
-
18
シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor
Visual Basic(VBA)
-
19
【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。
Visual Basic(VBA)
-
20
パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
このカテゴリの人気Q&Aランキング
-
4
ユーザーフォームのラベルに時...
-
5
【Excel VBA】条件に合った行の...
-
6
ユーザーフォームのラベルに日...
-
7
Excel VBA ユーザーフォーム1...
-
8
Excel VBA 複数選択したリスト...
-
9
別のシートから値を取得するとき
-
10
数式が消える
-
11
VBA 重複チェック後に値をワー...
-
12
VBA シートのボタン名を変更し...
-
13
paintに貼り付けてある画像の大...
-
14
Excel マクロ VBA プロシー...
-
15
エクセルのエラーメッセージ「4...
-
16
メッセージボックスのOKボタ...
-
17
VBA シート上にドロップダウン...
-
18
Application.ScreenUpdating = ...
-
19
ユーザーフォーム「frm_基本❶」...
-
20
実行時エラー 438になった時の...
おすすめ情報
公式facebook
公式twitter