• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Withステートメントの列指定について)

Withステートメントで複数のシート/列を選択する方法はあるか?

SI299792の回答

  • SI299792
  • ベストアンサー率48% (715/1480)
回答No.1

複数シートの選択はできますが、同時削除はできません。手作業でやってもエラーになります。だから、Withではなく.Columnsの所でエラーになります。 Columns の飛び飛びの列も指定できないよです。やってみたらエラーになったし、調べても、そのような記述は見つかりませんでした。 以下の2つの方法がいいと思います。 ' Sub Macro1() '   Dim Sheet As Variant '   For Each Sheet In Array("りんご", "みかん")     Worksheets(Sheet).Range("A:A,C:C").Delete Shift:=xlToLeft   Next Sheet End Sub ' Sub Macro2() '   Worksheets("りんご").Range("A:A,C:C").Delete Shift:=xlToLeft   Worksheets("みかん").Range("A:A,C:C").Delete Shift:=xlToLeft End Sub

osashi
質問者

お礼

For Eachの方法でもできるのですね!('▽')今まで実はFor Eachあまり使ったことなかったので、これを機に使い方をよく勉強したいと思います、ご回答いただいてありがとうございました!

関連するQ&A

  • 複数のシートにまたがる列の削除について

    こんばんは、複数のシートを選択して特定の列を削除するVBAについて質問させてください。Sheet1とSheet2のA~C列を削除したく、以下のVBAを入力しましたが、削除されるのはSheet1のA~C列のみでSheet2に同様の処理が行われません。 手作業でやると複数のシートを選択のうえ列の削除ができるので、VBAでできないということはないと思うのですが、どのように記述すればよいのでしょうか・・・?!どなたかご教授よろしくお願いいたします! Sheets(Array("Sheet1","Sheet2")).Select Range("A:C").Delete Shift:=xlToLeft

  • VBAによる列削除について教えて下さい

    VBA初心者です。いろいろと調べて見ましたが、「C列からアクティブセルの前列までを削除」する方法が分かりません。下の記述は「C列からX列」としていますが、X→「アクティブセルの前列」と読み替えるにはどうすればよろしいでしょうか。よろしくご指導下さい。 Sub 列削除() Columns("C:X").Select Selection.Delete Shift:=xlToLeft End Sub

  • ExcelVBA 選択された列のセルを指定する

    簡単かなと思ったら意外と出来ず、調べても出てこなくて思わぬ苦戦を強いられてしまい、 質問させて頂きます。 列をまるごと選択している状態で、その選択している列のセルを指定するには どうしたらいいでしょうか? とりあえず目的としてはシート1のA列を選択した状態で、 列の先頭(A1)の値をシート2に移す事としております。 以下、エラーになってしまったコードです 列選択でOffsetを使用した為のエラー? Worksheets("sheet2").Cells(1,1).Value = Worksheets("sheet1").Columns(1).Offset(0, 0).Value 選択してない状態でSelectionを使用した為のエラー? Worksheets("sheet2").Cells(1,1).Value = Worksheets("sheet1").Columns(1).Selection(1).Value 上手く動いたコード Application.Goto Worksheets("sheet1").Columns(1) Worksheets("sheet2").Cells(1,1).Value = Selection(1).Value Application.Goto でシート1のA列を指定してからSelectionで一つ目のセルを指定すれば出来ました しかし、大量のデータを扱う時にいちいち範囲選択していたら処理が遅くなると思われますし、 コード自体もスッキリしないのでいまいち納得がいきません。 1行で「Worksheets("sheet1").Columns(1).●●●」と続くメソッドの様な、スッキリできる方法は 無いのでしょうか? どなたかご教授お願いいたします。 当方Excel2003を使用しております。 宜しくお願い致します。

  • エクセルVBA 別シート間の列のコピー&ペースト

    列のコピー&ペーストができません。 i, j は変数で、Integerで定義しており、省略はしていますが、期待通りの値がi, j には代入されています。 Sheet1のi列からj列をコピーし、Sheet2のC列(これは固定)に貼り付けたいのですが、うまくいきません。 私の書いたコードは下記の通り。 下記は改行されていますが、実際のVBAでは1行で書かれています。 Worksheets("Sheet1").Range(Columns(i), Columns(j)).Copy Worksheets("Sheet2").Range(Columns("C")) 貼り付け先(Destination)の記述がいけないのでしょうか? 行き詰っておりますので、どなたかお助けください!

  • Excel VBA With ~ End With

    Excel VBA With ~ End Withを使わずに記述するには Sheet1シートのセルA1,A2,B1,B2にA,B,75,25の値を入力して、 Sub test1()  With ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart.Chart   .ChartType = xlBarStacked100   .SetSourceData Source:=Sheets("Sheet1").Range("A1:B2"), PlotBy:=xlRows  End With End Sub を実行すると横棒グラフが1個表示されますが、 これを、With ~ End Withを使わずに記述すると Sub test2()  ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart.Chart.ChartType = xlBarStacked100  ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B2"), PlotBy:=xlRows End Sub というようになると思いますが、 実行すると縦棒が2個表示されてしまって同じ結果になりません。 なぜなのでしょうか。 test1を、With ~ End Withを使わずに記述するには、 どのように記述すればよいのでしょうか。 よろしくお願いします。(Windows10,Excel2016)

  • エクセルのブックを開く度にシートの列幅を指定したいのですが・・・

    稚拙な質問お許しください。 エクセルでブックを開いたときに、すでにシートの列幅が任意の幅になっているよう、VBAで「ThisWorkbook」というところに、 Private Sub Workbook_Open() Sheet1.Columns("a:a").Select Selection.ColumnWidth = 7 Sheet1.Columns("b:b").Select Selection.ColumnWidth = 8 Sheet1.Columns("c:c").Select Selection.ColumnWidth = 10 Sheet1.Columns("e:e").Select end sub といった感じで記述したのですが、「F8」キーで処理の過程をみながら追っていくとどうしても、Eの列を過ぎるとEの列だけでなくそれ以降の列も選択してしまい(シート上に表があるのですが、その表の1番最後の列までです。)、任意の幅に指定できないのですが、原因がよくわかりません。どなたか、お力添えください。

  • excelのマクロが上手く動作しません

    excel2013で、シートのレイアウトを整えるマクロを以下のように作成しました。 しかし、いざ他のシートで試すと、そのシートと同時に特定のシートにもなぜかマクロが実行されてしまいます。(恐らく作ったときに使っていたシート) どうしたら今見ているシートだけにマクロを実行することができるでしょうか? ActiveWindow.Zoom = 85 ActiveWindow.Zoom = 70 Columns("A:A").ColumnWidth = 10.13 Columns("A:A").ColumnWidth = 10.63 Columns("B:B").ColumnWidth = 6.63 Columns("D:D").ColumnWidth = 20 Columns("D:D").ColumnWidth = 23.75 Columns("D:D").ColumnWidth = 24.63 Columns("E:E").ColumnWidth = 10.38 Range("E1").Select ActiveCell.FormulaR1C1 = "インボイス金額" ActiveCell.Characters(7, 2).PhoneticCharacters = "キンガク" Columns("F:F").Select Selection.Delete Shift:=xlToLeft Columns("G:G").Select Selection.Delete Shift:=xlToLeft Range("H9").Select Columns("G:G").ColumnWidth = 11.38 Columns("I:K").Select Selection.Delete Shift:=xlToLeft Range("J9").Select Columns("I:I").ColumnWidth = 15 Columns("J:J").ColumnWidth = 9.75 Columns("K:K").ColumnWidth = 9.5 Range("L2").Select Columns("L:L").ColumnWidth = 5.5 Columns("O:O").Select Selection.Delete Shift:=xlToLeft Selection.ColumnWidth = 13.88 Columns("P:P").Select Selection.Delete Shift:=xlToLeft Selection.ColumnWidth = 12.13 Selection.ColumnWidth = 13.25 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 9 ActiveWindow.ScrollColumn = 10 ActiveWindow.ScrollColumn = 11 ActiveWindow.ScrollColumn = 12 Columns("Q:Q").Select Selection.ColumnWidth = 5.5 Columns("S:S").Select Selection.ColumnWidth = 6.75 Columns("T:T").ColumnWidth = 9.75 Columns("Q:T").Select Range("T1").Activate Selection.Style = "Comma [0]" Columns("U:U").Select Columns("V:V").ColumnWidth = 5.5 Columns("V:V").ColumnWidth = 6 Columns("W:Z").Select Selection.Delete Shift:=xlToLeft Columns("X:Z").Select Selection.Delete Shift:=xlToLeft Range("X10").Select Columns("X:X").ColumnWidth = 12.25 Columns("X:X").ColumnWidth = 11.13 Columns("Y:Y").ColumnWidth = 6.75 Columns("Z:Z").ColumnWidth = 11.63 Columns("AA:AA").ColumnWidth = 6.75 Columns("AB:AB").Select Selection.Delete Shift:=xlToLeft Range("AB2").Select Columns("AB:AB").ColumnWidth = 11 Columns("AD:AO").Select Selection.Delete Shift:=xlToLeft Range("AF14").Select Columns("AD:AD").ColumnWidth = 11 Columns("AE:AE").Select Selection.Delete Shift:=xlToLeft Range("AG7").Select Columns("AE:AE").ColumnWidth = 20.38 Columns("AF:AJ").Select Selection.Delete Shift:=xlToLeft ActiveWindow.ScrollColumn = 21 ActiveWindow.ScrollColumn = 1 Rows("2:2").Select ActiveWindow.FreezePanes = True Range("A2").Select ActiveWorkbook.Worksheets("11").Sort.SortFields.Clear ActiveWorkbook.Worksheets("11").Sort.SortFields.Add Key:=Range("D2:D137"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("11").Sort.SortFields.Add Key:=Range("A2:A137"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("11").Sort .SetRange Range("A1:AE137") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .Apply End With End Sub よろしくお願い致します。

  • エクセルVBAでエラーがでます。

    エクセルで以下のようなVBAをつくりましたが Columns("B:C").Select でエラーがでます。 初歩的なことですが教えてください。 Sub Macro3() ' ' Macro3 Macro Worksheets(1).Copy before:=Worksheets(1) Worksheets(1).Activate Columns("B:C").Select Selection.Delete Shift:=xlToLeft Columns("C:L").Select Selection.Delete Shift:=xlToLeft Columns("H:H").Select Columns("L:AA").Select Selection.Delete Shift:=xlToLeft End Sub

  • 下記エクセル列の並び替えマクロで、Callの際に変数が引き継がれません

    下記エクセル列の並び替えマクロで、Callの際に変数が引き継がれません。 何か方法はありませんでしょうか。 Sub 各学校() Dim i As Integer Worksheets("Sheet1").Activate For 元列 = 1 To 16 If Cells(1, i) = "学校" Then 新1列 = 元列 ElseIf Cells(1, i) = "住所" Then 新2列 = 元列 ElseIf Cells(1, i) = "電話" Then 新3列 = 元列 (略) End If Next Call 列の並び替え End Sub Sub 列の並び替え() Worksheets("Sheet2").Activate Cells.Clear Worksheets("Sheet1").Columns(新1列).Cut Worksheets("Sheet2").Columns("A").Insert Worksheets("Sheet1").Columns(新2列).Cut Worksheets("Sheet2").Columns("B").Insert Worksheets("Sheet1").Columns(新3列).Cut Worksheets("Sheet2").Columns("C").Insert (略) End Sub

  • 列全体をコピーして別の列に貼り付けたい

    列全体をコピーして別の列に貼り付けたいのですが、 「そのコマンドは複数の選択範囲に対して実行できません。」 とエラーになってしまいます。 コードは以下のとおりです。 Worksheets("aaa").Columns(1).Select Selection.Copy Worksheets("aaa").Columns(3).Select ActiveSheet.Paste よろしくお願いします。