• ベストアンサー

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

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

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

ちょっと問題が理解しにくいです・・・・ yが、ソース中で定義されていないので、分かりにくいのですが、yを左のセルから動かしていませんか? それでしたら右のセルから動かしたら、うまくいくでしょう。 For y = 最終目的列 To 開始目的列 Step -72 のように。 あと列を文字列に変換するの必要だと思えません。 x列目で2列挿入するなら Range(Columns(x), Columns(x + 1)).Insert Shift:=xlToRight でいいと思います。

ranarana
質問者

お礼

列を文字に変換せずに範囲指定する方法を教えてくださってありがとうございます。マクロがすっきりしました。右から動かす方法もあるんですね。yは1枚目の合計欄を挿入したい列番号だったんです。質問の仕方も、マクロも回りくどくて申し訳ありませんでした。助かりました。ありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

Selection.Insert Shift:=xlShiftToRight にしてみて下さい。

ranarana
質問者

お礼

ありがとうございます。現象は変わりませんでしたが、挿入処理をする対象の列が1列ずれていたことが原因だったみたいでなんとか動きました。

関連するQ&A

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

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

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

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

  • エクセル Rank関数をマクロで

    こんにちは いつもお世話になっています。 Rank関数を作ることが多いのでマクロを作ることにしました。 例えば、C3からc23まで数字が入っています。c3-c23を選択した状態でマクロを動かしたいです。 実際は、特定列の一列の選択されたセルを対象にしたいです。 D列には別のデータが入っているのでC列とD列の間に新規に列を挿入し、新規のD3-D23にRankをいれます。つまり、選択セルの右側に新規の列を挿入したいです。 引数の数値はD3にはC3、D4にはC4…D23にはC23。参照は選択セルのC3からC23。順序は降順です。 一応、マクロ記録してみましたが Sub Macro1() ' ' Macro1 Macro ' Columns("D:D").Select Selection.Insert Shift:=xlToRight Range("D3").Select ActiveCell.FormulaR1C1 = "=RANK(RC3,R3C3:R23C3)" Selection.AutoFill Destination:=Range("D3:D23"), Type:=xlFillDefault Range("D3:D23").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では通らないのでしょうか。エラーを解決する方法を教えてください。

  • Excel97で列の挿入が出来ない

    会社でExcel97を使っています。 他の人が作った表に手を加えようとしているのですが、 作った本人が出張で不在の為、質問することにしてみました。 ある集計表で列には「月」が入っています。 9月までしかないので、10月以降の列を増やそうと 思うのですが、列を選択して、右クリック→挿入を クリックすると、以下のようなエラー文が出てきます。 クリアしてみて、と書いてありますが、 クリアはしたくないです(汗) <エラー文> データの消失を防ぐため、 空白でないセルをワークシートの外にシフトする事は出来ません。 はみ出してしまう右側または下側のセルを削除またはクリアして みてください。その後、セルA1を選択し、 ブックを保存して最後のセルをリセットしてください。 または、データを新しい位置に移動し、もう一度行って下さい。 マクロなどは使用しておらず、一見何の変哲もない表です。 ブックやシートの保護はしていないようです。 フィルタもはずしてみましたが同じ文が出ました。 ウィンドウの分割もしていません。 表示が改ページプレビューだったので、標準に戻してみましたが 無意味だったようです(汗) 何が原因なのでしょうか? 同じブック内の他のシートでは、問題なく挿入できます。 解る方がいらっしゃれば、原因と解決法を教えて下さい。

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

    エクセルの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列挿入する」だけのマクロを作成した時のことです。 実行させると1列挿入しますが、挿入後のカーソル位置は変わらず、元の列全体が反転表示されてます。ところが、複数シートを選択しマクロ実行すると、列挿入はしますが、カーソルは元の列のひとつ右側の列が反転表示されます。 手作業で1列挿入すると、1シートでも複数シートでも挿入後のカーソルは元の位置です。マクロ作成し複数シートを選択して実行するとカーソル位置が変わるのです。 なぜですか? 特に相対参照でマクロを作る場合、選択するシート数でカーソル位置が変わると困ります。 良い方法はないでしょうか?

  • EXCEL マクロ 列の削除に時間がかかる

    列はY列まで、行はおおよそ400~500行くらいのエクセルの表があります。 マクロで飛び飛びに行の削除を記録したのですが、処理に時間がかかっています。 もっとスムーズに早くする方法はありますか? ご教授おねがいします。 Range( _ "A:D,H:H,I:J,K:K,M:N,P:U,W:W,X:Y"). _ Select Selection.Delete Shift:=xlToLeft

  • EXCELマクロで左列に値のある行まで選択

    EXCELのマクロの記録を利用して簡単なマクロを作りたいのですが、 やりたいことは、表の最上部のセルにVLOOKUP関数を設定し、 フィルハンドルでWクリックするように表の最下部までコピーしたいのですが、 マクロの記録では、貼り付けする先のセルが固定されてしまい、 表の行数が変動する場合はそのまま使えません。 左列に値のあるセルを判断してその行番号までを選択できれば解決するのですが、 お詳しいかたお教えください。 ちなみにマクロの記録の構文では <フィルハンドルでクリックする場合> ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'10FY'!R2C1:R1321C2,2,0)" Selection.AutoFill Destination:=Range("H3:H27") Range("H3:H27").Select End Sub <範囲選択しコピー貼り付けする場合> ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'10FY'!R2C1:R1321C2,2,0)" Selection.Copy Range("H4:H27").Select ActiveSheet.Paste End Sub

  • エクセル2007でマクロを使った写真挿入がうまくいきません。

    エクセル2007でマクロを使った写真挿入がうまくいきません。 エクセル2003で使っていたひな形をもらったのですが2007では結合したセルから ずれてしまいます。 どうすれば位置の修正をできますか? また、結合した大きなセルの中にフォームボタンを付けいるのですが 2003では写真が挿入されるとボタンは隠れてしまっていたのですが、 2007では挿入した写真に重ねって写真が見ずらいです。 隠すことはできるのでしょうか? なにぶん初心者なのでお願いします。 Sub Pic_in() ' マクロ記録日 : 2003/7/1 kome fname = Application.GetOpenFilename ActiveSheet.Pictures.Insert(fname).Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 247.5 Selection.ShapeRange.Width = 350 End Sub

専門家に質問してみよう