2015-07-09 1 views
0

Я ищу код в VBA, чтобы посмотреть строки (называемые «Setup») на листе2 и скопировать строку в «Setup» в sheet1 в ячейке A1.Excel VBA-Найти строку в sheet2 и скопировать ее в sheet1

У меня есть не рабочий код из записанного макроса:

Sub FindString() 

Cells.Find(What:="Setup", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ 
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ 
    False, SearchFormat:=False).Activate 

Range("I8").Select 
Selection.Copy 
Sheets("Tabelle1").Select 
ActiveSheet.Paste 
End Sub 

Если я изменить это String, он показывает мне ошибку 91 ...

ответ

0

Попробуйте

Sub FindString() 
Sheets("Sheet2").Activate 
Cells.Find(What:="Setup", LookIn:=xlFormulas, LookAt _ 
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ 
    False, SearchFormat:=False).Activate 

ActiveCell.Select 
Selection.Copy 
Sheets("Sheet1").Select 
Range("A1").Select 
ActiveSheet.Paste 
End Sub 

' -------------------------------------------------- ------------------------------------

' Specify the string to find in sheet1 B1 cell 
Sub FindString2() 
Sheets("Sheet2").Activate 
Cells.Find(What:=Sheets("Sheet1").Range("B1").Value, LookIn:=xlFormulas, LookAt _ 
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ 
    False, SearchFormat:=False).Activate 

ActiveCell.Select 
Selection.Copy 
Sheets("Sheet1").Select 
Range("A1").Select 
ActiveSheet.Paste 
End Sub 
+0

спасибо, что первая часть эффективна, но если есть несколько строк с тем же именем, и я хочу второй, если можно взять эту секунду? – ManInTheMiddle

0

Как и ответы @ Punith, за исключением того, что вам не нужно менять листы.

Option Explicit 
Sub find_string() 
    Const strLookup As String = "Setup" 
    Dim wb As Workbook, find_ws As Worksheet, to_ws As Worksheet, rngFound As Range 

    Set wb = ThisWorkbook 
    Set find_ws = wb.Sheets("find") 
    Set to_ws = wb.Sheets("to") 

    Set rngFound = find_ws.Cells.Find(What:=strLookup, LookIn:=xlValues, LookAt:=xlWhole).Offset(1, 0) 
    to_ws.Range("A1").Value = rngFound.Value 
End Sub