alt + f11 を押して、コード ビハインドに入り、次のように記述しました。
Class style
Public Sub IterateThroughData()
Dim rowIndex As Integer
Dim colIndex As Integer
Dim rowOffset As Integer
rowOffset = 6
colIndex = 1
For rowIndex = rowOffset To 15
Dim currentDate As Date
Dim nextRowDate As Date
currentDate = Cells(rowOffset, colIndex).Value
nextRowDate = Cells(rowIndex + 1, colIndex).Value
If currentDate <> nextRowDate Then
RenderYearStyle(rowIndex,colIndex)
End If
currentDate = Cells(rowIndex, colIndex).Value
Next rowIndex
End Sub
Private Sub RenderYearStyle(rowIndex As Integer, colIndex As Integer)
With Cells(rowIndex, colIndex)
.Borders(xlEdgeBottom).Weight = xlThin
.Borders(xlInsideHorizontal).Weight = xlThin
End With
End Sub
End Class
Dim style As style
Set style = New style
style.IterateThroughData()
これは、行 6 列 1 から行 15 列 1 までセルを反復処理する必要があります。反復で現在のセルの値を取得し、それを次の行の日付と比較します。それらが同じでない場合は、そのセルの下部に境界線を追加します。
これは簡単なテストですが、問題が発生しています。実行すると、無効な外部プロシージャと表示されます。何か案は?
私はする必要があると仮定しています
- Excel ファイルのシートをターゲットにします。
- スタイルクラスのグローバルスコープ宣言を追加するための適切な場所があります。
- 私のコードのバグを修正してください。
編集:::
クラスモジュール
Class style
Public Sub IterateThroughData()
Dim rowIndex As Integer
Dim colIndex As Integer
Dim rowOffset As Integer
rowOffset = 6
colIndex = 1
For rowIndex = rowOffset To 15
Dim currentDate As Date
Dim nextRowDate As Date
currentDate = Cells(rowOffset, colIndex).Value
nextRowDate = Cells(rowIndex + 1, colIndex).Value
If currentDate <> nextRowDate Then
RenderYearStyle(rowIndex,colIndex)
End If
currentDate = Cells(rowIndex, colIndex).Value
Next rowIndex
End Sub
Private Sub RenderYearStyle(rowIndex As Integer, colIndex As Integer)
With Cells(rowIndex, colIndex)
.Borders(xlEdgeBottom).Weight = xlThin
.Borders(xlInsideHorizontal).Weight = xlThin
End With
End Sub
End Class
Private Sub Class_Initialize()
Dim MyStyles As style
Set MyStyles = New style
End Sub
ワークブックを開く
Private Sub Workbook_Open()
MyStyles.IterateThroughData()
End Sub