gpt4 book ai didi

excel - 为什么 .autoFill 会导致 Excel 崩溃?

转载 作者:行者123 更新时间:2023-12-04 21:49:57 24 4
gpt4 key购买 nike

我有一个电子表格,这是其中的一个片段:

enter image description here

理想情况下,当我将日期添加到 colC 时,各种列会自动将日期填充到最后一行的截止日期。这是我的代码(其中也有一些排序的东西,工作正常);我定义后的部分lastDrag问题出在哪里,我认为:

Private Sub Worksheet_Change(ByVal Target As Range)
'On Error Resume Next

Dim firstRow As Long
Dim insRow As Long
Dim lastRow As Long

If Not Intersect(Target, Range("A:AC")) Is Nothing Then

With ActiveWorkbook.ActiveSheet

lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

.Sort.SortFields.Clear

.Sort.SortFields.Add(Range("AC1:AC" & lastRow), _
xlSortOnCellColor, xlDescending, , xlSortNormal).SortOnValue.Color = RGB(191, 191, 191)

' ^^ sorts the "gray" (closed) exchanges at the bottom)

.Sort.SortFields.Add Key:=.Range("AC1:AC" & lastRow), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

' ^^ sorts closed files by file close date

.Sort.SortFields.Add Key:=.Range("C1:C" & lastRow), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

' ^^ sorts open files by RQ close date
' THIS IS WHERE CONDITIONS SHOULD BE
' IF no id has been entered, sort by...
' IF id has been entered, sort by...

.Sort.SortFields.Add(Range("K1:K" & lastRow), _
SortOn:=xlSortOnCellColor, Order:=xlDescending, DataOption:=xlSortNormal).SortOnValue.Color = xlNone

' ^^ makes sure that the non-colored rows are sorted??

With .Sort
.SetRange Range("A1:AC" & lastRow)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

lastDrag = .Cells(.Rows.Count, "C").End(xlUp).Row

Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D" & lastDrag), Type:=xlFillDefault
' ^^ this seems to work but it loops forever...


End With

End If

End Sub

目前,Excel 似乎一遍又一遍地自动填充,直到崩溃。为什么?

有没有办法让它一次性自动填充 D、E、H、J 等列(即一堆不相邻的列)?我有一些像 Range("D2,E2,H2..." & lastDrag)... 这样的东西

最佳答案

Private Sub Worksheet_Change(ByVal Target As Range)


每次工作表更改时都会触发此工作表事件......无论是由用户触发......还是由您自己的代码触发。您需要设置 EnableEventsFalse以防止再次进入,并返回 True完成后 - 无论是否引发错误:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrHandler
Application.EnableEvents = False

'...code...

CleanExit:
Application.EnableEvents = True
Exit Sub
ErrHandler:
Stop 'debug me
Resume CleanExit
End Sub

当你从另一个调用一个过程时,新的过程被压入调用栈;当该过程退出时,它会从调用堆栈中弹出/删除。通常这不是问题,但是如果事情变得递归并且失控,最终调用堆栈将无法深入,并且 VBA 运行时会爆炸......在这种情况下,它会关闭主机应用程序 (Excel) .

关于excel - 为什么 .autoFill 会导致 Excel 崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56534750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com