質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

14089閲覧

VBAで任意の列を指定し別のシートにコピーしたい。

KM46

総合スコア17

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/06/18 12:27

編集2019/06/18 15:06

前提・実現したいこと

シートの1行目で特定の文字列が含まれる列を検索し、
該当する列を複数選択して新しい別のシートにコピーしたいです。

考えているソースコード

vba

1任意の変数1 = Range("1:1").Find("特定の文字列1") 2任意の変数2 = Range("1:1").Find("特定の文字列2") 3任意の変数3 = Range("1:1").Find("特定の文字列3") 4 5Sheets.Add.Name = "新しいシート名" 6 7Range(" & _ 8 任意の変数1 & ":" & 任意の変数1, _ 9 任意の変数2 & ":" & 任意の変数2, _ 10 任意の変数3 & ":" & 任意の変数3 _ 11 & ").Select 12 13Selection.Copy 14Sheets("新しいシート名").Select 15ActiveSheet.Paste

上記のようにコードを書いてみたところ、
コンパイルエラー:構文エラーとなってしまいました...。

かなり無理のある書き方だとは思っているのですが、
どのように改善すればやりたいことが実現できるかわかりません...。
差支えなければご教授頂けると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/06/18 14:30

質問サイトなので「質問」以外はないと思います。 タイトルの最初の「質問:」は不要かと思います。
KM46

2019/06/18 15:06

修正しました。
guest

回答2

0

ベストアンサー

まず、コードを書く時に下記について意識して書くと、読みやすく、バグの発生しにくい、安定したコードを書くことかできます。

  • 変数宣言をする。そのとき型は省略しない。

  • Range, Cells などの前のシート参照を省略しない。

  • Select はしない。しなくてもたいていのことはできるし、しない方が高速かつ安全です。

あとは、複数のセル範囲を参照する場合は、Unionメソッドを使った方ががいいです。

複数のセルを併せて参照する(Unionメソッド):Excel VBA|即効テクニック|Excel VBAを学ぶならmoug

ということで、自分が書くならというコード例を参考までに・・・

vba

1Public Sub 複数列コピー() 2 Dim1 As Range,2 As Range,3 As Range 3 Dim コピー範囲 As Range 4 With ActiveSheet 5 Set1 = .Range("1:1").Find("年").Resize(Rows.Count) 6 Set2 = .Range("1:1").Find("製品").Resize(Rows.Count) 7 Set3 = .Range("1:1").Find("売り上げ").Resize(Rows.Count) 8 Set コピー範囲 = Union(1,2,3) 9 End With 10 11 Dim ws As Worksheet 12 Set ws = ActiveWorkbook.Sheets.Add(After:=ActiveSheet) 13 ws.Name = "新しいシート名" 14 コピー範囲.Copy ws.Range("A1") 15 16End Sub

Findで見つからなかった場合の処理とかは省略してますので、必用に応じて追加する必要アリ。

投稿2019/06/19 02:00

hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KM46

2019/06/21 08:20

ありがとうございます!
guest

0

とりあえず一行ずつやりましょう。

投稿2019/06/18 23:44

torisan

総合スコア678

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問