使用复制粘贴

时间:2017-01-27 11:26:52

标签: excel vba excel-vba

我无法理解为什么会这样!

我创造了一个前十名'仪表板上的原因。在后台通过更改某些单元格中的日期来更改仪表板的日期参数时,我希望子程序对完整的原因列表进行排序并返回前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时有效,但是当从工作表调用时没有调用。

提前感谢您提供任何帮助

0 个答案:

没有答案