2017-09-25 5 views
0

私はinbeded doがうまく動作するまで知っていますが、activecell.addressを設定してから元の位置に戻ることはしません。Activecell.Adressが信号フィールドに戻っていない

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

これは代わりにあなたのコードの使用 "の範囲(場所).select" に "範囲(場所).Activate" を使用しての

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

を動作するかどうかを参照してください。残っているコードはあなたのロジックごとに動作します

関連する問題