2024年11月1日【ID:0】
メンバー限定
【ExcelVBA】空白を上に詰める
以下のような表で、空白行を除外して上に詰める場合、並べ替え機能を活用すると、書式の設定位置や要素の順番に関しても変わってしまいます。

今回は、書式の設定位置や要素の順番を変えずに、そのままの状態で上詰めする機能をVBAで開発する方法について解説していきます。
※こちらで開発したファイルは、記事に最後にて配布しています。
開発
初めに、[開発]タブの中の[マクロ]を選択します。

[マクロ]を選択すると表示される以下の画面に、開発する機能の名前を入力し、[作成]を選択します。
こちらで「上詰め」と入力しています。

[作成]を選択すると表示される以下のエディタ画面の「Sub 上詰め()」から「End Sub」の間にコードを記述していきます。
「Option Explicit」は、エディタの設定次第では表示されません。

では、以下のコードを記述します。
Sub 上詰め()
Dim inData As Variant, outData As Variant
inData = Range("B3:B11").Value
ReDim outData(1 To UBound(inData), 1 To 1)
Dim d As Variant, i As Long: i = 1
For Each d In inData
If d <> "" Then
outData(i, 1) = d
i = i + 1
End If
Next d
Range("B3:B11").Value = outData
End Sub
解説
このコードについて、簡単に解説していきます。
続きはIT予備メンバー限定です。
メンバー限定コンテンツになります。

IT予備メンバーページと連携することで内容を確認することができます。
メンバーとは
すでにメンバーの方は、
ログインして連携してから、こちらを更新すると閲覧できます。
※連携しても確認ができない場合は、少し時間を置いてご確認ください。
ログイン(新しいタブ)
※[ログイン]→[設定]→[IT予備-連携]で連携できます