• ベストアンサー

VBAマクロで結合セルを含む列に列挿入する方法?

お世話になっています。 下記のエクセルVBAマクロで、 列挿入処理をしているのですが、 列に結合セル(行方向)がある場合にだけ、 列選択がうまくできず、 目的と異なる処理をしてしまいます。 ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select Selection.Insert Shift:=xlToRight 新しいマクロの記録で やってみたのですが、 上記マクロが生成されただけでした。 手作業では 列の上のアルファベットを選択して、 列挿入できるので、 何かいい方法があるのは? と思います。 どなたかよろしくお願いします。

  • zico
  • お礼率60% (48/80)

質問者が選んだベストアンサー

  • ベストアンサー
  • akinori_s
  • ベストアンサー率60% (21/35)
回答No.2

列を追加するなら Worksheets(シート名).Columns(列INDEX).Insert Shift:=xlRight 行を追加するなら Worksheets(シート名).Rows(行INDEX).Insert Shift:=xlDown でできると思います。

zico
質問者

お礼

ありがとうございます。 一発でうまく行きました。 今後ともよろしくお願いします。

その他の回答 (1)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

セル結合をしなくてはいけないのですか? 解決策ではなく、あくまで回避策ですが・・・ セルを結合しないで、 メニューバーで「書式」→「セル」→「配置」 「横位置」=選択範囲内で中央 「セルを結合する」=チェックOFF にしておくと、擬似的にセルを連結しているように見せることができます。

zico
質問者

お礼

ありがとうございます。 はい、セル結合解除してから マクロを行うことはやってみました。 ただ、繰り返し作業が非常に多くて、 効率的でなくなってしまうのです。。。。

関連するQ&A

  • VBA 右端列の削除

    このたび初めて質問させていただきます。 周囲にVBAを扱うひとがいないため、初歩的(たぶん?)な質問をさせてください。 以下のようなマクロを記録したのですが、一部を編集したいと考えております。 Columns("F:H").Select Selection.Insert Shift:=xlToRight Columns("A:B").Select Selection.Cut Range("F1").Select ActiveSheet.Paste Columns("J:J").Select→J列固定ではなく右端の列と設定したい。 Selection.Cut Range("H1").Select ActiveSheet.Paste Columns("A:B").Select Selection.Delete Shift:=xlToLeft Columns("J:J").SelectをJ列固定ではなく右端の列を1列設定し切り取りがしたいのです。Range("A2").End(xlToRight).Select ActiveCell.Offset(-1,0).End(xlDown).Select と書き換えてみたのですが、うまく作動しませんでした。 どなたか教えていただけませんでしょうか?

  • EXCELマクロの列挿入で余分に列が挿入されてしまいます。

    EXCELで5セルづつ結合された表があり、決まった列数ごとに2列挿入して合計欄を作りたいのですが、手 動で2列選択してツールバーより挿入とすると2列のみ挿入されますが、マクロで2列選択して挿入se lection.insertをするとなぜか連結セル分5列選択し挿入されてしまうのですが、2列のみ挿入するには どうしたらいいのでしょうか。 For i = 72 To t Step 72 Sheets("描画表").Select 'Column(列)変換 y2 = IIf(y > 26, Chr(y \ 26 + &H40), "") & Chr(y Mod 26 + &H41) y3 = IIf((y + 1) > 26, Chr((y + 1) \ 26 + &H40), "") & Chr((y + 1) Mod 26 + &H41) Columns("" & y2 & ":" & y3 & "").Select Selection.Insert Shift:=xlToRight ローカルウィンドウでマクロのステップをチェックするとy2、y3ともちゃんと列番号が入っているように思うのですがよろしくおねがいします

  • マクロで切り取りしたものを貼り付ける方法

    エクセルのマクロを利用しております。 自動で作業を覚えるマクロボタンで切り取りし貼り付けたのですが マクロを実行するとデータが元の場所にも残ってしまいました。 結果としてコピーペーストとして出力されました。 私が行いたいことは、切り取りし貼り付けが行いたいのです。 (元の場所にデータは残らない) 以上よろしくお願いします。 以下は私が使用しているマクロになります。 Workbooks("2.xls").Sheets("Sheet1").Select Columns("Q:Y").Select Application.CutCopyMode = False Selection.Copy Columns("N:N").Select Selection.Insert Shift:=xlToRight Sheets("Sheet2").Select Columns("C:D").Select Application.CutCopyMode = False Selection.Copy Columns("N:N").Select Selection.Insert Shift:=xlToRight

  • セル結合と列挿入

    マクロの記録を使い書いて見ましたが、1行置きに3行挿入し 、A2:A5 , B2:B5 ,C2:C5 ,D2,D5 言う感じでセル結合を5000行まで行い、最後にD、E列、列の挿入したいのですが、どのように書けば宜しいでしょうか? すでに、データが入っています。 Sub Macro1() Rows("3:5").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Rows("7:9").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("A2:A5").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("B2:B5").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("C2:C5").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("A6:A9").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("B6:B9").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("C6:C9").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Columns("D:E").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.ColumnWidth = 18.88 Range("A2:A5").Select End Sub

  • Excel vba テーブルに列を挿入できない

    Excel vba で、次のコードでテーブルに列を挿入しています。 これはExcel2013で作った一連のvbaコードの一部です。 Range("テーブル名" & "[[#Headers],[地区]]").Select Selection.EntireColumn.Insert 「地区」フィールドの前に列を挿入するものです。 Excel2010、2013では問題なくできますが、Excel2016のPCでは   Selection.EntireColumn.Insertでエラーになります。エラーメッセージは、 「この操作を実行するとワークシート上のテーブル内でセルが移動されてしまうため、この操作は実行されません。」というもので、列を挿入するのだから、当然セルは移動されますが、それがダメだと。 エラーになった同じテーブルで手動での列挿入はできます。また、そのマクロ記録を取れば、上のコードと同じ記録ができます。 OSはWindows10です。 このvbaはExcel2016では通らないのでしょうか。エラーを解決する方法を教えてください。

  • エクセルで画像の挿入マクロについて

    エクセルのB列にJANコードが入力してあり、 (1)セル内容コピー  (2)C列にそのJANコード.emfのファイル名画像を挿入 (3)次の行に移る この作業をマクロ記録してみたところ内容が下記の様になりました。 Sub JAN() ' ' JAN Macro ' ' Keyboard Shortcut: Ctrl+Shift+Q ' Selection.Copy ActiveCell.Offset(0, 1).Range("A1").Select ActiveSheet.Pictures.Insert( _ "C:\Users\user\Documents\JAN_バーコード\1234567890123.emf").Select ActiveCell.Offset(1, -1).Range("A1").Select End Sub 挿入する画像のファイル名が最初のものに固定されてしまっているのですが、 これを次のセル内容に自動で変える為にはどうすればよいでしょうか。

  • 列の挿入マクロ (エクセル)

    例えば1行目から3行目のA1,A2,A3のセルが統合されていたとします。マクロボタンを作成してボタンを押すとa1の前(先頭の列)に1行挿入するように したいのですが、うまくできません。3行挿入されてしまいます。おそらくA1~A3のセルが統合されている為 。この現象が直る方法を教えて頂けないでしょうか?下記はそのソースです。 Rows("1:1").Select Range("B1").Activate Selection.Insert Shift:=xlDown

  • エクセルマクロで行挿入

    「マクロの記録」でマクロを作っていて限界を見たので質問します。 A列に5桁コード、B列から付随するデータを使い、 この5桁コードの頭文字が「1」から「2」に変わる所に一行挿入させたいです。 挿入の指定場所に検索を入れ込むのかなぁとやってみたところ、エラーになりました。 ↓これがそれ。 Columns("A:A").Select range(Selection.find(What:="2????", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Activate) As range Selection.EntireRow.Insert てんで見当違いかもしれませんが参考に貼り付けてみました。 どうすれば良いか教えてください。 (WinNT・Excel2000)

  • VBAで行を挿入する

    VBAを始めた初心者です。 Exel2002使用です。 VBAでA列の4行目から10行目に行の挿入をできるようにしようと下記のように書きましたが、Rows("i:i").Selectの部分でデバックがかかってしまいます。間違っている理由がわからないのですがよろしくお願いします。 また、DO While Loopステートメントを使ってA列が空白になるまで(例えばA4セル以下の)行を挿入とする場合の方法も教えていただけましたら幸いです。 Sub 4行目から10行目まで() Dim i As Integer For i = 4 To 10 Cells(i, 1).Value = i Rows("i:i").Select Selection.Insert Shift:=xlDown Next i End Sub Sub 4行目から空白になるまで() Dim i As Integer Range("A4").serect Do While activecell.value = "" Cells(i, 1).Value = i Rows("i:i").Select Selection.Insert Shift:=xlDown activecell.offset(1,0).select Loop End Sub

  • VBAマクロエラー【オーバーフローしました。】

    以下のVBAマクロで突然エラーが出るようになってしまいました。 原因がわからず困っています。 どなたかご教授ください。 該当部分 :S = Range("B2").End(xlDown).Row エラーMrg:実行時エラー'6': オーバーフローしました ----------マクロ文---------- Sub 部担コード読み替え() Dim R_Count As Integer Dim P_Sheet As String Dim S As Integer 'データ取込用のファイルを開く Workbooks(D_Book).Activate Sheets("Data1").Select Columns("C:C").Select Selection.Insert Shift:=xlToRight Range("B2").Select S = Range("B2").End(xlDown).Row Range("C2:C" & S).Formula = "=SUBSTITUTE(SUBSTITUTE(RC[-1],""%"",""1""),""*"",""2"")" Range("C1").Value = "部担コード" Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Columns("B:B").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Range("A1").Select Sheets("Data2").Select Columns("C:C").Select Selection.Insert Shift:=xlToRight Range("B2").Select S = Range("B2").End(xlDown).Row Range("C2:C" & S).Formula = "=SUBSTITUTE(SUBSTITUTE(RC[-1],""%"",""1""),""*"",""2"")" Range("C1").Value = "部担コード" Columns("G:G").Select Selection.Insert Shift:=xlToRight Range("G2:G" & S).Formula = "=SUBSTITUTE(SUBSTITUTE(RC[-1],""%"",""1""),""*"",""2"")" Range("G1").Value = "キー" Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Columns("B:B").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Columns("E:E").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Range("A1").Select End Sub

専門家に質問してみよう