Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用复制粘贴更改单元格时Excel排序问题_Vba_Excel - Fatal编程技术网

Vba 使用复制粘贴更改单元格时Excel排序问题

Vba 使用复制粘贴更改单元格时Excel排序问题,vba,excel,Vba,Excel,我不明白为什么会这样 我在仪表板上创建了一个“十大理由”。在后台,当通过更改某些单元格中的日期来更改仪表板的日期参数时,我希望sub对原因的完整列表进行排序,并返回前10名 我制作了潜艇(相当懒洋洋地使用录音机),它工作得非常好。然后我设置了一个sub来检查被更改的日期单元格,并打电话给我的分拣机,尽管复制和粘贴工作正常。。。那种不是 我想知道这是否是一个时间问题?也许在调用sub时,公式和单元格尚未更新 这是我的快速而肮脏的10大替补 Sub Stage1ReasonUpdate() She

我不明白为什么会这样

我在仪表板上创建了一个“十大理由”。在后台,当通过更改某些单元格中的日期来更改仪表板的日期参数时,我希望sub对原因的完整列表进行排序,并返回前10名

我制作了潜艇(相当懒洋洋地使用录音机),它工作得非常好。然后我设置了一个sub来检查被更改的日期单元格,并打电话给我的分拣机,尽管复制和粘贴工作正常。。。那种不是

我想知道这是否是一个时间问题?也许在调用sub时,公式和单元格尚未更新

这是我的快速而肮脏的10大替补

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而不是从工作表更改调用sub时它会工作


提前感谢您提供的任何帮助

FYI,
Target
已经是一个范围,所以您可以只做
Application.Intersect(keycell,Target)
。我只是从MSDN复制了代码,它起了作用,所以我没有考虑细化。更紧迫的问题是找出为什么该代码以一种方式工作而不是以另一种方式工作。但我确实做了你建议的改变没有答案,有人吗?bueller?仅供参考,
Target
已经是一个范围,所以你可以只做
Application.Intersect(KeyCells,Target)
。我只是从MSDN复制了代码,它起了作用,所以我没有考虑细化。更紧迫的问题是找出为什么该代码以一种方式工作而不是以另一种方式工作。但我确实做了你建议的改变没有答案,有人吗?布勒?