
저는 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
대신에.