スプレッドシートのセクション内の行の範囲に新しい行を追加する次のコードを記述しました。これらのセクションのいくつかがあるので、sBudgetLineは範囲(セクション名)の開始値として渡され、セクションのヘッダー(日付、説明、および価格)を見逃すために余分に1が加えられます。VBAでの新しい行グリッチの追加
すべて正常に動作しますが、行が追加されるときに、ハードコードされた書式設定が機能せず、適切な場所にある新しい行だけでなくページの下に余分な行が追加されます。
Sub AddNewAllocToSpendLine(sBudgetLine As String, Optional sSheetName As String = c_Alloc2SpendSheetName)
Dim c As Range
Dim N As Long
Dim lastRow As Long
Dim formula As Range
Dim rng As Range
With Worksheets(sSheetName)
Set c = .Columns(1).Find(sBudgetLine, LookIn:=xlValues)
If Not (c Is Nothing) Then
lastRow = .Cells(c.Row, 2).End(xlDown).Row
Worksheets(sSheetName).Activate
Worksheets(sSheetName).Range("B" & lastRow + 1, "E" & lastRow + 1).Activate
Selection.EntireRow.Insert Shift:=xlDown
Selection.Range("B" & ActiveCell.Row, "E" & ActiveCell.Row).Interior.Color = RGB(255, 255, 255)
With Selection.Range("B" & ActiveCell.Row, "D" & ActiveCell.Row).Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 1
End With
Selection.Cells(1, 4).formula = "=IF(" & "D" & ActiveCell.Row & "="""","""",IF(" & "D" & ActiveCell.Row & ">14999.99,""Minimum 3 formal competitive tenders - inform PSU"",IF(" & "D" & ActiveCell.Row & ">2499.99,""Minimum 3 written quotes based on written specification"",IF(" & "D" & ActiveCell.Row & ">999.99,""Minimum 3 written quotes"",IF(" & "D" & ActiveCell.Row & ">499.99,""Minimum 3 oral quotes"",IF(" & "D" & ActiveCell.Row & ">249.99,""One written or verbal quote"",""One written or verbal quote""))))))"
End If
End With
End Sub
私はすべての種類を試してみましたし、いただきました間違って理解することはできません、これはVBAグリッチだろうか?この場合、追加された行に書式設定を提供するより良い方法はありますか?
これは素晴らしいです、ありがとうございます。私はC#から来ているVBAの新機能ですので、文法を理解するための地雷跡です! – user3565164