마이크로소프트 엑셀 - VBA

마이크로소프트 엑셀 - VBA

저는 VBA를 처음 접했고 For Loop.

하지만 이것을 실행하는 동안 코드에서 오류가 발생합니다.

객체 변수 또는 블록 변수가 설정되지 않음

어떻게 하면 그것을 없앨 수 있나요?

Sub find()
    Sheets("sheet2").Activate
    For x = 1 To 5
        Cells(x, 1).Select
        var1 = Selection.Copy
        Sheets("sheet1").Activate
        Dim search As Range
        Set search = range("a1:f9").find(var1).Activate
    Next
End Sub

답변1

이 수정된 VBA 코드를 사용하면 두 시트 간의 이름을 일치시키고 반환하는 데 도움이 됩니다.

RUN 매크로 전:

여기에 이미지 설명을 입력하세요

   Sub QuickSearch()

    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim rng1 As Range

    Set ws1 = Sheets(1)
    Set ws2 = Sheets(2)
    Set rng1 = ws2.Range(ws2.[a2], ws2.Cells(Rows.Count, "A").End(xlUp))

    With rng1.Offset(0, 1)
        .FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],Sheet10!C[-1]:C,1,FALSE),"""")"
        .Value = .Value
    End With

End Sub
  • 표준 모듈로 시트에 이 코드를 입력할 수 있습니다.

매크로 실행 후:

여기에 이미지 설명을 입력하세요

주의

ws2.Range(ws2.[a2], ws2.Cells(Rows.Count, "A").End(xlUp))
  • 이 코드 라인에서는 [a2](셀 참조) 및 "A"(열 이름)을 편집할 수 있습니다.

답변2

Selection.Copy이다물체, 그래서 명령은

var1 = Selection.Copy

오류가 발생합니다. 그래야 합니다.

Set var1 = Selection.Copy

하지만 그건 네가 원한 게 아니야 - 네가 원했던 거야변수에서 선택 항목의 내용(텍스트)var1.

그래서 사용

var1 = Selection.Text

대신에.

관련 정보