我无法理解为什么会这样!
我创造了一个前十名'仪表板上的原因。在后台通过更改某些单元格中的日期来更改仪表板的日期参数时,我希望子程序对完整的原因列表进行排序并返回前10位。
我制作了子(非常懒惰地使用录音机),它完美无缺。然后我设置了一个子来检查更改的日期单元格并调用我的分拣机,虽然复制和粘贴正在工作......排序不是......
我想知道这是否是时间问题?也许当子被称为子公式时,细胞还没有更新?
所以这是我快速又脏的top10 sub
Sub Stage1ReasonUpdate()
Sheets("Lists").Activate
ActiveWorkbook.Worksheets("Lists").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Lists").Sort.SortFields.Add Key:=Range("R4:R52"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Lists").Sort
.SetRange Range("Q4:S52")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Lists").Select
Range("Q4:Q13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Stage1").Select
Range("U16").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Stage1").Select
Range("A1").Select
End Sub
,这是工作表上检查更改的子
Private Sub Worksheet1_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("r3:w3")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' Display a message when one of the designated cells has been
' changed.
' Place your code here.
'MsgBox "Cell " & Target.Address & " has changed."
Call Stage1ReasonUpdate
End If
End Sub
我只是打了一个空白,我想理解为什么它直接调用sub时有效,但是当从工作表调用时没有调用。
提前感谢您提供任何帮助