2016-07-01 1 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에있는 열을 통해 순환 할 수있는 시점까지 그것을 얻으려고 노력하고있어. 그리고 나는 그것이 찾고있는 이름을 찾지 못하면 problingly 오류 handling에 빌드해야합니다.

도움 주셔서 감사합니다.

답변

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