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

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

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

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

Q&A

解決済

1回答

1653閲覧

VBAで1つ飛びに列を挿入したいが、スマートなやり方があれば教えてほしい

halmichi

総合スコア12

VBA

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

0グッド

0クリップ

投稿2020/08/21 06:25

前提・実現したいこと

Microsoft360のエクセルを使っています。
VBAでヘッダの最終列を取得した後、C列から飛び飛びで列を挿入したいのですが、範囲にしたい文字列を無理やり作るやり方しか思いつきませんでした。もし、もう少しスマートな記述法があったらご教示お願い致します。

該当のソースコード

vba

1Private Sub CommandButton2_Click() 2Dim apc As Integer 3Dim dc As Integer 4Dim i As Integer 5Dim pc As Integer 6Dim rg As String 7Dim rgs As String 8Dim edc As String 9Dim edcs As String 10Dim edcs2 As String 11 12'枠組み作製 13dc = Range("A1").End(xlToRight).Column '最終入力列を取得 14 For i = 2 To dc '数字に対応したアルファベットを作ってRange()に格納する範囲を作成 15 rg = Chr(i + 65) 16 edc = Chr((i * 2 - 1) + 64) 17 rgs = rgs + rg + ":" + rg + "," 18 edcs = edcs + edc + ":" + edc + "," 19 edcs2 = edcs2 + edc + "," 20 21 Next i 22rgs = Left(rgs, Len(rgs) - 1) 23edcs = Left(edcs, Len(edcs) - 1) 24edcs2 = Left(edcs2, Len(edcs2) - 1)'余計なカンマを削除 25 26 27Range("" + rgs + "").Insert '飛び飛び列挿入 28Range("" + edcs + "").ClearFormats 29 30End Sub

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんなイメージですか?

VBA

1Private Sub CommandButton2_Click() 2 3Dim dc As Long 4 dc = Range("a1").End(xlToRight).Column 5 6Dim i As Long 7For i = dc To 3 Step -1 8 Columns(i).Insert 9Next 10 11End Sub

投稿2020/08/21 06:35

radames1000

総合スコア1923

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

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

halmichi

2020/08/21 06:43

ありがとうございます。 最終行から挿入していくのがミソだったんですね。 勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問