Page 1 of 1

ค่าตำแหน่งสุดท้ายของแถวใน VBA

Posted: Wed Nov 02, 2016 11:24 am
by p_d
สวัสดีค่ะอาจารย์
ดิฉันมีเรื่องสงสัย คือ ดิฉันมีไฟล์ตามไฟล์แนบอยู่หลายไฟล์แต่ละครั้งก็ใช้ macro เดิมรันแต่ปรากฎว่าบางไฟล์ที่รันออกมาไม่ copy สูตรลงไปถึงแถวสุดท้าย (ตัวแปร lastrow) ทำอย่างไรถึงจะทำให้สามารถ copy สูตรถึงแถวสุดท้ายได้จริงคะ ตอนนี้ต้องมาเช็คทุกไฟล์ว่าทำครบหรือไม่ทุกครั้ง
ไฟล์ที่แนบมาตอนแรกรันไม่ถึงแถวสุดท้าย copy ถึงแถวที่ 185 ก็หยุด ไม่เข้าใจค่ะว่าเป็นเพราะอะไร
รบกวนแนะนำด้วยค่ะ
ขอบคุณค่ะ
p_d

Code: Select all

Sub VlookupToPivot()
   Application.ScreenUpdating = False
     Dim lastrow As Long
    lastrow = Cells(Rows.Count, 1).End(xlUp).Row
    Sheets(1).Select
    Range("H2").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC1,INDIRECT(""'""&R1C&""'!$H$2:$I$5000""),2,FALSE),"""")"
    Range("H2").Select
    Selection.AutoFill Destination:=Range("H2:S2"), Type:=xlFillDefault
    Range("H2:S2").Select
    Selection.AutoFill Destination:=Range("H2:S" & lastrow)
    Range("H2").Select
  Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("H1").Select
End Sub

Re: ค่าตำแหน่งสุดท้ายของแถวใน VBA

Posted: Wed Nov 02, 2016 11:54 am
by DhitiBank
ลองปรับโค้ดเป็นแบบนี้ดูครับ

Code: Select all

Sub VlookupToPivot()
    Dim lastrow As Long
    Application.ScreenUpdating = False
    Sheets(1).Select
    lastrow = Cells(Rows.Count, 1).End(xlUp).Row
    Range("h2:s" & lastrow).FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC1,INDIRECT(""'""&R1C&""'!$H$2:$I$5000""),2,FALSE),"""")"
    Range("h2:s" & lastrow).Value = Range("h2:s" & lastrow).Value
    Range("h1").Select
    Application.ScreenUpdating = True
End Sub

Re: ค่าตำแหน่งสุดท้ายของแถวใน VBA

Posted: Wed Nov 02, 2016 12:02 pm
by parakorn
โค้ดมันจับ lastrow ของ Sheet ปัจจุบันที่เปิดอยู่หรือเปล่าครับ
ผมลอง รันโค้ด เวลา เปิด Sheet "Stock Data" ข้อมูลมาครบ
แต่พอ เปิด Sheet "1511" แล้วรันโค้ดดู ข้อมูลมาไม่ครบครับ

Re: ค่าตำแหน่งสุดท้ายของแถวใน VBA

Posted: Wed Nov 02, 2016 2:32 pm
by p_d
คุณ DhitiBank

ขอบคุณมากนะคะ คิดว่าน่าจะโอเคแล้วค่ะ

p_d