私はこの小さな手順をより大きなプロジェクトの一部として作成し、コードを実行する前に最後のアクティブなセルを再アクティブ化することで、より使いやすくしたいと考えました。ただし、実行時エラー 1004: オブジェクト '_Global' のメソッド 'range' が失敗しました。
以前の ActiveWorksheet を再アクティブ化することができましたが、実際のセルを再アクティブ化するにはどうすればよいですか? 私はここで議論を見ました:実行時エラー '1004': オブジェクト '_Global' のメソッド 'Range' が失敗しました
問題は を参照する方法にあると思いましたが、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