2017-09-25 50 views
0

我知道inbeded做的,直到工作正常,但是當我設置activecell.address然後嘗試返回到它,我不被帶到原來的位置。Activecell.Adress沒有返回到orignal字段

Sub Refresh() 
Dim PN 
Dim Supervisor 
Dim Location 

Worksheets("sheet1").Activate 
Range("A2").Activate 

Do Until IsEmpty(ActiveCell.Value) 

PN = ActiveCell.Value 
Location = ActiveCell.Address 

Worksheets("sheet4").Activate 
Range("C2").Activate 
Do Until IsEmpty(ActiveCell.Value) 
If PN = ActiveCell.Value Then 
ActiveCell.Offset(0, 18).Select 
Supervisor = ActiveCell.Value 
ActiveCell.Offset(0, -18).Select 
End If 
ActiveCell.Offset(1, 0).Select 
Loop 

Range(Location).Activate 
ActiveCell.Offset(0, 5).Select 
ActiveCell.Value = Supervisor 
ActiveCell.Offset(0, -5).Select 

Range(Location).Activate 
ActiveCell.Offset(1, 0).Select 
Loop 

End Sub 
+0

請注意,它並不是一個完成的循環,但它會覆蓋信息太多時間,並且當我返回活動單元時,它將返回到工作表上的任何位置。 –

+0

很難跟隨你在做什麼。你應該學會如何縮進你的代碼。我懷疑你的問題是'Range(Location).Activate'沒有指定工作表。 – SJR

+1

你可以做所有這些選擇和激活。 – SJR

回答

0

看看這個工程

Sub Refresh() 

Dim PN 
Dim Supervisor 
Dim Location 
Dim r As Range 
Dim r1 As Range 

Set r = Worksheets("sheet1").Range("A2") 

Do Until IsEmpty(r) 
    PN = r.Value 
    Location = r.Address 
    Set r1 = Worksheets("sheet4").Range("C2") 
    Do Until IsEmpty(r1) 
     If PN = r1.Value Then 
      Supervisor = r1.Offset(0, 18).Value 
     End If 
     Set r1 = r1.Offset(1, 0) 
    Loop 
    r.Offset(0, 5).Value = Supervisor 
    Set r = r.Offset(1, 0) 
Loop 

End Sub 
0

,而不是在你的代碼中使用 「範圍(位置)。選擇」 使用 「範圍(位置).Activate」。剩餘代碼將按照您的邏輯工作