2016-07-01 29 views
0

情況是我有一個列表(excel)。需要查看該列表並在列中輸入每個名稱。然後搜索該名稱是另一個文件(csv)。一旦發現它,我必須在同一行中更改與找到的名稱相同的值,但在列中右側的幾個單元格中。搜索excel/csv sheet1以獲取從sheet2獲取的字符串,然後更改同一行中的值

Sub Macro1() 
' 
' Macro1 Macro 
' 
' Keyboard Shortcut: Ctrl+q 
' 
Dim myRange As Range 

ActiveCell.Select 
Selection.Copy 
Set myRange = Selection 
Sheets("identities").Select 
ActiveWorkbook.ActiveSheet.Unprotect 
Cells.Find(What:=myRange, After:=ActiveCell, LookIn:= _ 
    xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ 
    xlNext, MatchCase:=False, SearchFormat:=False).Activate 
ActiveCell.Offset(0, 13).Range("A1").Select 
Application.CutCopyMode = False 
ActiveCell.FormulaR1C1 = "TRUE" 
ActiveCell.Offset(1, -13).Range("A1").Select 
End Sub 

上面的代碼可以幫助自動化一些過程。我試圖讓它達到這樣的程度,它可以在Sheet1上循環切換,而無需在每個單元格上來回切換和手動運行它。如果它沒有找到它正在搜索的名字,我應該在錯誤handeling中進行構建。

感謝您的幫助!

回答

0

您將需要調整您獲得原始值的範圍以反映您的範圍。目前我只用Range("A1:A10"),但你需要停止使用select。它會將代碼剝離並使其更具可讀性。

試試這個,並修改適合您的範圍。

Dim rng As Range 
Dim r As Range 

    For Each r In Sheets("identities").Range("A1:A10") 
     ActiveWorkbook.ActiveSheet.Unprotect 
     Set rng = Cells.Find(What:=r, After:=ActiveCell, LookIn:= _ 
      xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ 
      xlNext, MatchCase:=False, SearchFormat:=False) 
      rng = Sheets("identities").Offset(, 13) 
    Next r 

閱讀此stackoverflow線程上不使用選擇。 How to avoid using Select in Excel VBA macros

相關問題