Excel vba でテーブルに列を挿入できないエラーの解決方法は?

このQ&Aのポイント
  • Excel vba のコードでテーブルに列を挿入するとエラーが発生していませんか?Excel2016のPCでSelection.EntireColumn.Insertを実行するとエラーメッセージが表示され、「この操作を実行するとワークシート上のテーブル内でセルが移動されてしまうため、この操作は実行されません。」というものです。手動での列挿入はできるのに、なぜマクロでできないのでしょうか?
  • Excel vba でテーブルに列を挿入するとエラーが起きる問題について、Excel2016のPCでの解決方法を教えてください。エラーメッセージは「この操作を実行するとワークシート上のテーブル内でセルが移動されてしまうため、この操作は実行されません。」となっています。手動での列挿入はできるのに、なぜマクロでできないのでしょうか?
  • Excel vba のコードでテーブルに列を挿入しようとすると、Excel2016のPCでエラーが発生しますか?エラーメッセージは「この操作を実行するとワークシート上のテーブル内でセルが移動されてしまうため、この操作は実行されません。」となっています。手動での列挿入はできるのに、なぜマクロでできないのでしょうか?解決方法を教えてください。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
回答No.1

こんにちは。 > 「地区」フィールドの前に列を挿入するものです。 という説明の意図を掴み兼ねていますが、  「地区」フィールドの直前に新規のフィールドを挿入する ということでしたら、 ' ' //   With ActiveSheet.ListObjects("テーブル名").ListColumns     .Add .Item("地区").Index     ' ↓どちらか↑     .Add(.Item("地区").Index).Name = "NewField"   End With ' ' // みたいにしてみては如何でしょうか。 テーブルの扱いとしては、個人的に、 テーブル全体をひとつのシートのように扱うのが普通かな、 と思ったりして、つまり、 テーブルの外側のセル=列を挿入する意図というのが、 私には想像し難いというか、 フィールドではなくて列を挿入できるという機能があること が意外というか不思議な印象だったりもします。 (あくまでも私見です。)   Range("テーブル名" & "[[#Headers],[地区]]").Select を実行した後、  右クリック→コンテクストメニュー表示  ↓  [挿入]  ↓  [テーブルの列(左)] という手順を記録マクロにすると、   Selection.ListObject.ListColumns.Add Position:=4 のようなコードが得られました。後は、 引数に指定する数値インデックスを取得するようにすればいいのかなと。 実はxl2016では確認していません。 ご提示のエラーメッセージと同種のものへ対処した経験だけで お応えしていますので、こちらの見当違いでしたら スルーしてやってくださいませ。

okormazd
質問者

お礼

回答ありがとうございます。テーブル内でフィールドを挿入するのではなくて、シートの列を挿入するコードです。このテーブルにいろいろな操作をしていますが、それらの操作前にはこの列挿入のコードは通るのです。 エラーメッセージは、最大列番号付近の列ににすでに何らかのデータがあるので列挿入ができないのではと思い、これらをクリアするコードを書いた後に、質問のコードを実行するようにしても通らなかったのです。回答いただいたテーブル内でフィールドを挿入するコードは回避策としてすでに実行しています。 なぜエラーメッセージが出るのかわからなかったので質問してみました。 ご回答ありがとうございました。

関連するQ&A

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

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

  • VBA : エクセルの列を5列追加したいのですが・・・。

    VBAで、エクセルの列を5列追加したいのですが、うまくいく場合といかない場合があります。うまくいかない場合、エラーのダイアログボックスに 「オブジェクトシートからはみ出します。その操作ができません。」と・・・。 できる場合とできない場合の原因は特定できません。下のコードで列を追加していますが、やはりここでエラーが生じてしまいます。よろしければ助言を頂けたらと思います。 Range("A:E").Select Selection.Insert

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

    「マクロの記録」でマクロを作っていて限界を見たので質問します。 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)

  • Excel VBA 結合セルがある時に1列だけ選択

    A1からD1までの4つのセルが結合されている時に C列をクリックするとC列だけを選択できます。 これをVBAで記述するには どのように記述すればよいでしょうか。 マクロの記録では Columns("C:C").Select というコードが生成されるのですが マクロ記録時にC列だけが選択されていたのに 実行するとAからDの4列が選択されます。 読み込んだファイルを処理するので 結合セルの存在やセルは不定です。 よろしくお願いします。(Windows7,Excel2010)

  • 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ともちゃんと列番号が入っているように思うのですがよろしくおねがいします

  • ExcelVBA 挿入タブのアイコンを挿入する方法

    Excelの「挿入」タブの「図」グループの「アイコン」の中の アイコンをシートに挿入して 色を変更するVBAはどのように記述すればよいでしょうか。 (Windows10,Excel2016) 例えば、 「ビジネス」の所にある「クリップ」のアイコンを挿入する場合、(上図) マクロの記録で記録すると、 ActiveSheet.Pictures.Insert("https://hubblecontent.osi.office.net/ContentSVC/Content/svg/Paperclip.svg").Select というコードが生成されます。 このコードを実行するとクリップのアイコンがシートに挿入されますが 色を変更するにはどのようにすればよいでしょうか。 下記のコードではエラーになります。(下図) どこを直せばよいでしょうか。 Sub sample()  ActiveSheet.Pictures.Insert("https://hubblecontent.osi.office.net/ContentSVC/Content/svg/Paperclip.svg").Select  Selection.ShapeRange.Fill.ForeColor.RGB = RGB(50, 0, 200) End Sub

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

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

  • Accessからエクセルの列に挿入

    いつもお世話になっております。 AccessのVBAから開いているエクセル(代理店別進捗)の1行目の右側に2列を挿入をしたいのですが、下記のエラーが出てしまいました。 *プログラムはとりあえず1列追加してみようと思って作ってます。 【エラー内容】 予期せぬエラーが発生しました。 エラーナンバー:424 エラー内容:オブジェクトが必要です。 '代理店別進捗の操作 Dim intColumn As Long ’1行目の左の列番号取得 intColumn = xlWB.Worksheets("代理店別進捗").Cells(Columns.Count).End(xlToLeft).select '取得した列番号に列挿入 xlWB.Worksheets("代理店別進捗").Columns(intColumn).insert

  • EXCEL VBAを用いての並び替えからの挿入表示

    EXCEL VBAを用いての並び替えからの挿入表示についての質問です。 A列に文字と数字の組み合わせデータが入っています。 カテゴリーが4つ「AC○」「BC○」「CC○」「DC○」(○は数字です)があります。 A列は「AC○」「BC○」「CC○」「DC○」の順番で並んでいます。 (ただし3つのカテゴリしかないデータの場合もあり。) そこにC1セルにデータ「AC10」、E1セルにデータ「AC12」、G1セルにデータ「BC10」、I1セルにデータ「DC10」が入ってマクロ実行した場合、添付の『マクロ実行後』のように挿入させたいです。 つまり4つのカテゴリのいずれかを判断し、A列の各カテゴリの一番最後の行に挿入させたいです。 該当したカテゴリがなければ、「AC○」「BC○」「CC○」「DC○」のカテゴリの順で最初の部分に入れる。 このような処理をするにはVBA記述はどのようにすればよいでしょうか? 私のVBAの知識レベルはマクロ記録をしてそれを元に少し修正や機能追加できたりするくらいの初心者です。 よろしくお願いいたします。

  • データセット上のテーブルに列の挿入が出来ない。

    VB2005で作成されたアプリの改修を行っております。 データセット上に定義されているテーブル(テーブルアダプタ定義有り)に 列を挿入する事になり、当該テーブルに列を挿入した所、「列を挿入出来ま せんでした」のエラーメッセージが表示され、挿入が出来ません。 データアダプタのSQLに列を挿入しても、同じメッセージが表示され、 挿入出来ません。 データアダプタが定義されていないテーブルには、何のエラーも無く列を 挿入出来ます。 何か足りない手順等が有るのでしょうか?

専門家に質問してみよう