我編寫了這個小程序作爲更大項目的一部分,並希望通過在運行之前重新激活最後一個活動單元來使其更加用戶友好代碼。但是,它給了我運行時錯誤1004:對象'_Global'的方法'範圍'失敗。對象'_Global'的方法'範圍'失敗 - 重新激活以前的ActiveCell
我設法重新激活之前的ActiveWorksheet,但是如何獲得它可以重新激活實際的單元格?我看了這裏的討論:Run-time error '1004' : Method 'Range' of object'_Global' failed
這導致我認爲問題是在我參考OldActiveCell
的方式,但我仍然無法找到解決方案。
有沒有人知道這個問題的答案?下面的代碼:
Sub SortData()
'Sorts Data on Input Sheet; first after project ID and then position type
Dim DataRange As Range
Dim OldActiveSheet As Object
Dim OldActiveCell As Object
'Define variable for currently active cell to reactivate it afterwards
Set OldActiveSheet = ActiveSheet
Set OldActiveCell = ActiveCell
Sheets("Input").Activate
Range("DataRange").Activate
ActiveSheet.Sort.SortFields.Clear
'First filter criterium
ActiveSheet.Sort.SortFields.Add Key:=Range("ProjectList") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'Second filter criterium
ActiveSheet.Sort.SortFields.Add Key:=Range("PositionType") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
'Loop through and sort
With ActiveSheet.Sort
.SetRange Range("DataRange")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Reactivate previous active cell
Range("OldActiveSheet.OldActiveCell").Activate
End Sub
您可能也想閱讀本文? http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select –