Excel 事務にはデータに一列ごとに空白列を入れたいときがある
経理や労務の人でデータのチェックやるときってひたすら空白列いれてVlookup関数埋めていくってこと度々ありませんか?
私はしょっちゅうです。ショートカットキーを使って「Ctrl + +」連打するのもうざい。うざい。とにかくうざいのでマクロを組みました。
選択した範囲で一列ごとに空白列を入れる
ちなみに列(Column)って縦長に伸びる範囲(↓)ね。そんなん当たり前やろって思うかもしれないけど行(Row)と列(Column)の違いは明確にあたしは書きますよ。そんなこんなでホイっとね♪
Sub OneByOneColumnsInsert()
If Selection.Rows.Count > 1 Then Exit Sub
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Dim RangeArray As Variant, SelectRange As Range
Dim i As Integer: i = 0
ReDim RangeArray(Selection.Columns.Count)
For Each SelectRange In Selection
RangeArray(i) = SelectRange.Address(RowAbsolute:=False, ColumnAbsolute:=False)
i = i + 1
Next SelectRange
Dim RangeString As String: RangeString = Join(RangeArray, ",")
If Len(RangeString) > 255 Then
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
MsgBox "文字数の限界です。文字数:" & Len(RangeString), vbCritical
Exit Sub
End If
RangeString = Left(RangeString, Len(RangeString) - 1)
Range(RangeString).Select
Selection.EntireColumn.Insert
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
プロシージャ名がダサいのは悪しからず。まあ仕様ですよ。「ONE By ONE」といったらこれですよね
ナーナナナナーと思わず叫びたくなりますが一旦置いておいて。
説明+注意
選択した範囲に一列ずつ空白列を入れていくコードです。
選択範囲は横長ぁーに選択してね。一行限定。列数は無限・・・いや違う!!
制限あります!
このコードは「B2,C2,D2・・・・」みたいに区切って、選択するセルのアドレスをダーっと書いていって最終的に選択して列まとめて挿入しているんですけど、「B2,C2,D2・・・・」みたいなところ、これ文字数制限あり。
255字以上は無理なんで長すぎる範囲は無理よ。
分割して使ってね。
ちなみにテストデータ用に作った選択したセルのアドレスをダーっと書いていくコードはこちら
選択したセルのアドレスを一気に入力する
Sub CellsAddressGet()
Dim SelectRange As Range
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
For Each SelectRange In Selection
SelectRange = SelectRange.Address
Next SelectRange
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Cell関数使えばいいんですけどね。使い勝手ちょい悪だからマクロ書いちゃった。私列ごとの指定やるから(「A:A」みたいない)それ用のコードも後で書こー。
この記事が気に入ったらサポートをしてみませんか?