มีปัญหากับการใช้งาน on error goto ใน VBA ครับ
Posted: Wed Mar 29, 2017 4:56 pm
ผมมีปัญหากับการใช้ on error goto ร่วมกับ การใช้ For ..... Next ครับ
คือผมต้องการเขียนโค้ดให้หาคำที่กำหนดขึ้นใน sheet1 ไปหาใน sheet2 เพื่อเอา value มากรอกใน sheet1
ตัวอย่าง
ผมมีคำอยู่ใน sheet1 ที่ตำแหน่ง A1:A8
ผมต้องการใช้คำที่ตำแหน่ง A1 ไปค้นหาใน Sheet2 ที่ collumn A หากพบให้ นำค่าใน collumn B ไปกรอกใน sheet1 ที่ตำแหน่ง B1 หากไม่พบให้ข้ามไป หาที่ A2 ต่อ ใช้ค้นหาต่อไปเรื่อยๆจนถึง A8
ผมได้ทดลองเขียนโค้ดขึ้นมา พบว่าเมื่อเจอ error ครั้งที่ 2 VBA จะไม่ run ต่อ แล้วจะขึ้นว่า Run-time error '91': object variable or with block variable not set
โดยไฟล์ตัวอย่างจะขึ้น Debug ในการ loop รอบที่3 (i = 3)
และ Debug ขึ้นที่บรรทัต Selection.Find(What:=val).Select ครับ
พยายามสับบรรทัตหลายทีแล้วก็ยังติดปัญหาเดิมครับ รบกวนพี่ๆ ช่วยทีครับ
ไฟล์ตัวอย่างครับ
คือผมต้องการเขียนโค้ดให้หาคำที่กำหนดขึ้นใน sheet1 ไปหาใน sheet2 เพื่อเอา value มากรอกใน sheet1
ตัวอย่าง
ผมมีคำอยู่ใน sheet1 ที่ตำแหน่ง A1:A8
ผมต้องการใช้คำที่ตำแหน่ง A1 ไปค้นหาใน Sheet2 ที่ collumn A หากพบให้ นำค่าใน collumn B ไปกรอกใน sheet1 ที่ตำแหน่ง B1 หากไม่พบให้ข้ามไป หาที่ A2 ต่อ ใช้ค้นหาต่อไปเรื่อยๆจนถึง A8
ผมได้ทดลองเขียนโค้ดขึ้นมา พบว่าเมื่อเจอ error ครั้งที่ 2 VBA จะไม่ run ต่อ แล้วจะขึ้นว่า Run-time error '91': object variable or with block variable not set
โดยไฟล์ตัวอย่างจะขึ้น Debug ในการ loop รอบที่3 (i = 3)
และ Debug ขึ้นที่บรรทัต Selection.Find(What:=val).Select ครับ
พยายามสับบรรทัตหลายทีแล้วก็ยังติดปัญหาเดิมครับ รบกวนพี่ๆ ช่วยทีครับ
Code: Select all
Public Sub find_value()
Dim end_row As Long
Sheets("Sheet1").Select
Range("a1").Select
end_row = ActiveCell.End(xlDown).Row
Dim val As String
Dim i As Long
For i = 1 To end_row
val = Range("a" & i).Value
Sheets("Sheet2").Select
Columns("a:a").Select
On Error GoTo skipfind:
Selection.Find(What:=val).Select
On Error GoTo 0
ActiveCell.Offset(0, 1).Copy
Sheets("Sheet1").Select
Range("B" & i).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
skipfind: Sheets("Sheet1").Select
Next
End Sub