ポイント
- セルの先頭および末尾のスペース削除は、Trim 関数を使う。
- クラスは、シートへの反映は行わない。トリム済みの 2 次元 Variant 配列を返すのみとした。
- シートへの反映は、呼び出し元で行う。
エクセル例
- 新規 Microsoft Excel ワークシート.xlsx
- Sheet1
No | 氏 | 名 |
---|---|---|
1 | 山田 | 太郎 |
2 | 山田 | 花子 |
VBA コード
''' <summary> ''' 指定したブックのシートの範囲セルの先頭および末尾のスペースを削除するクラスです。 ''' </summary> Option Explicit ' 対象範囲 Range.Value の 2 次元配列 Private mvntValues As Variant ''' <summary> ''' 初期化処理を実行します。 ''' </summary> ''' <param name="strBook">対象ブック名</param> ''' <param name="strSheet">対象シート名</param> ''' <param name="strRange">対象範囲名</param> Public Sub Init( _ ByVal strBook As String, _ ByVal strSheet As String, _ ByVal strRange As String) ' 変数をセット mvntValues = Workbooks(strBook).Sheets(strSheet).range(strRange) End Sub ''' <summary> ''' 指定範囲セルの先頭および末尾のスペースを削除します。 ''' </summary> ''' <returns>トリム済み値を格納した 2 次元配列</returns> Public Function TrimmedValues() As Variant ' Range.Value 配列のコピーを用意し、元の配列はそのままの形で残す。 Dim vntCopied As Variant: vntCopied = mvntValues Dim i As Long Dim j As Long For i = LBound(mvntValues, 1) To UBound(mvntValues, 1) For j = LBound(mvntValues, 2) To UBound(mvntValues, 2) ' セルの先頭および末尾のスペースを削除 vntCopied(i, j) = Trim(mvntValues(i, j)) Next j Next i TrimmedValues = vntCopied End Function
続いて、クラスを使うサンプルコードです。
- トリム対象エクセルは、VBA のエクセルファイルと同じフォルダに置いてあるとする。
- 今回の例ではトリム対象エクセルファイルに VBA を記述している。つまりコードで自分自身のファイル名を指定している。
ThisWorkbook.Path
で自分のファイルがあるフォルダのパスを取得Application.PathSeparator
でフォルダの区切りである ¥ を取得
Option Explicit Public Sub TrimAllCells() ' トリム対象定義 Dim book As String: book = "新規 Micrsoft Excel ワークシート.xlsx" Dim sheet As String: sheet = "Sheet1" Dim range As String: range = "A1:C3" ' 操作可能にするためにエクセルファイルを開く。 Call Workbooks.Open(ThisWorkbook.Path & Application.PathSeparator & book) ' トリマー生成 Dim trimmer As CellTrimmer: Set trimmer = New CellTrimmer Call trimmer.Init(book, sheet, range) ' トリム実行 Workbooks(book).Sheets(sheet).range(range) = trimmer.TrimmedValues End Sub
おわりに
次のページが参考になりました!ありがとう存じます。
以上です。