お知らせ
こちらの記事は、電子書籍「難しく考えないExcel VBA基礎学習編」として出版されました。記事は途中までが試し読みの対象となります。
howahowablogのVBA記事が電子書籍にて販売となりました。
目標
「VBScriptを利用したVBAプロシージャの呼び出し(Part.1)」で作成したシート内の選択した範囲の値をクリアする処理をクラスに準備して利用する。
編集前のdataClearプロシージャの確認
シート内の選択した範囲の値をクリアする処理はdataClearプロシージャ内で記載していました。このクリアする処理についてdataClearプロシージャから一部をクラス内に移動します。dataClearプロシージャでは、そのクラスのインスタンスを作成することでその処理を呼び出す方法をとっていきます。
編集前のdataClearプロシージャの確認
編集するdataClearプロシージャの元記事はこちらになります。
編集前のdataClearプロシージャ
Sub dataClear()
Dim sheetName(7) As String
sheetName(1) = "現金"
sheetName(2) = "カード売上"
sheetName(3) = "銀行預金"
sheetName(4) = "日別統合"
sheetName(5) = "シート統合"
sheetName(6) = "勤務休憩シート"
sheetName(7) = "ドリンクバック集計"
Dim tableRow As Integer
Dim tableColumns As Integer
Dim i As Integer
For i = 1 To 7
Sheets(sheetName(i)).Select
If i <= 5 Then
Range("A5").Select
If ActiveCell.Value <> "" Then
ActiveCell.CurrentRegion.Select
tableRow = Selection.Rows.Count
tableColumns = Selection.Columns.Count
ActiveCell.Offset(2, 0).Resize(tableRow - 2, tableColumns).Select
Selection.ClearContents
End If
Else
Range("A2").Select
If ActiveCell.Value <> "" Then
ActiveCell.CurrentRegion.Select
tableRow = Selection.Rows.Count
tableColumns = Selection.Columns.Count
ActiveCell.Offset(1, 0).Resize(tableRow - 1, tableColumns).Select
Selection.ClearContents
End If
End If
Next i
End Sub
クラスの作成
新しいクラスを準備してdataClearプロシージャ内の処理の一部を移動します。
クラスの作成
クラスを準備します。今回はオブジェクト名を「Class1」のまま利用します。
Class1のファイルに次のように記述します。このクラスのインスタンスをdataClearプロシージャ内で生成して利用します。Class1クラスにclearMethodプロシージャを作成してdataClearプロシージャ内で利用していたクリア作業の処理を取り込みます。
Class1内のプログラム
Option Explicit
Private this_tableRow As Integer
Private this_tableColumns As Integer
Private this_rowNum As Integer
Private this_cellAddress As String
Private Sub Class_Initialize()
this_rowNum = 2
this_cellAddress = "A5"
tableRow = tableRow
End Sub
Sub clearMethod()
Range(this_cellAddress).Select
If ActiveCell.value <> "" Then
ActiveCell.CurrentRegion.Select
this_tableRow = Selection.Rows.Count
this_tableColumns = Selection.Columns.Count
ActiveCell.Offset(this_rowNum, 0).Resize(this_tableRow - this_rowNum, this_tableColumns).Select
Selection.ClearContents
End If
End Sub
Public Property Get tableRow() As String
tableRow = this_tableRow
End Property
Public Property Let tableRow(ByVal value As String)
this_tableRow = value
End Property
Public Property Get tableColumns() As String
tableColumns = this_tableColumns
End Property
Public Property Let tableColumns(ByVal value As String)
this_tableColumns = value
End Property
Public Property Get rowNum() As String
rowNum = this_rowNum
End Property
Public Property Let rowNum(ByVal value As String)
this_rowNum = value
End Property
Public Property Get cellAddress() As String
cellAddress = this_cellAddress
End Property
Public Property Let cellAddress(ByVal value As String)
this_cellAddress = value
End Property
編集後のdataClearプロシージャ
dataClearプロシージャでは今回作成したクラス「Class1」のインスタンスを生成して利用します。
編集後のdataClearプロシージャ
Sub dataClear()
Dim sheetName(7) As String
sheetName(1) = "現金"
sheetName(2) = "カード売上"
sheetName(3) = "銀行預金"
sheetName(4) = "日別統合"
sheetName(5) = "シート統合"
sheetName(6) = "勤務休憩シート"
sheetName(7) = "ドリンクバック集計"
Dim tableRow As Integer
Dim tableColumns As Integer
Dim i As Integer
Dim clearClass As Class1
Set clearClass = New Class1
For i = 1 To 7
Sheets(sheetName(i)).Select
If i <= 5 Then
clearClass.clearMethod
Else
clearClass.cellAddress = "A2"
clearClass.rowNum = 1
clearClass.clearMethod
End If
Next i
Set clearClass = Nothing
End Sub
ここまでで準備は終了です。あとは稼働をとるだけになります。
dataClearプロシージャの利用
dataClearプロシージャの利用
dataClearプロシージャ内をクリックして実行ボタンをクリックします。
1.dataClearプロシージャを記述しているモジュールを選択します。
2.dataClearプロシージャ内をクリックします。
3.実行ボタンをクリックします。
実行結果
指定したファイルの選択範囲がクリアされます。
今回は以上となりす。
howahowablogのVBA記事が電子書籍にて販売となりました。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。
クラス内のプログラムについて詳細な説明は次の記事を参考にしてください。