Page 1 of 1

เลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Posted: Wed Mar 21, 2018 4:09 pm
by March201711
ถ้าจะเลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Code: Select all

   Sheets("PL_Dept_MTD_03").Select
    Sheets("PL_Dept_MTD_" & format$(date-1, "mm").Select


run แล้วไม่ขึ้นเลยคะ

Re: เลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Posted: Wed Mar 21, 2018 4:22 pm
by March201711
ถ้าจะ run data ของเดือน Mar-18 โดยเอา sheet PL_YTD Col.Mar-18 โดยเริ่มที่ code 8 เป็นต้นไป copy แล้วไปวาง ที่ Sheet Main column ของเดือน Mar ต้องเขียน marco อย่างรไร โดยที่เดือนต่อไปไม่ต้องเข้าไปแก้ทุกเดือน ๆ ค่ะ ให้ vba รู้ได้เองว่าเป็นเดือนไหนในวันที่ปัจจุบันค่ะ

Code: Select all

Sub Run_03()
'
' Run_03 Macro
'

'
    Sheets("PL_YTD").Select
    ActiveWindow.SmallScroll Down:=-114
    Range("G76").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Main").Select
    Range("E6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("J9").Select
End Sub
มีเอกสารแนบคะ

Re: เลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Posted: Wed Mar 21, 2018 8:09 pm
by snasui
:D โปรแกรมจะทราบได้อย่างไรว่าเรากำลังทำงานกับเดือนไหนและ Code ไหน ดูได้จากชีตไหน เซลล์ไหน ช่วยแจ้งมาด้วยครับ

Re: เลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Posted: Wed Mar 21, 2018 9:27 pm
by March201711
ตรง column o2 ค่ะ ตามfile แนบค่ะ

Re: เลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Posted: Wed Mar 21, 2018 11:59 pm
by puriwutpokin
ก่อนอื่นที่ชีทแรก ทำเดือนให้เป็นวันที่ 1/1/18 ,1/2/18 ไปทุกคอลัมน์ แล้ว ค่อย format ให้เป็นเดือน Text ตามรูปครับ
แล้วปรับเป็นโค้ดนี้

Code: Select all

Sub Run_03()
Dim n As Long
Dim i As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Sheets(1)
Set ws2 = Sheets(2)
On Error Resume Next
For n = 5 To 16
If Month(ws2.Cells(2, n)) = Month(Date) Then
For i = 6 To ws1.Range("a" & ws1.Rows.Count).End(xlUp).Row
    ws1.Cells(i, 5).Value = Application.WorksheetFunction.Index(ws2.Range("c3:p300"), _
    Application.WorksheetFunction.Match(ws1.Cells(i, 1), ws2.Range("c3:c300"), 0), _
    Application.WorksheetFunction.Match(ws1.Cells(4, 5), ws2.Range("e2:p2"), 0))
Next i
End If
Next n
End Sub

Re: เลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Posted: Thu Mar 22, 2018 7:52 am
by March201711
ทำแล้วปรับไม่ได้ run ไม่ขึ้นเลยค่ะ

Re: เลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Posted: Thu Mar 22, 2018 8:05 am
by puriwutpokin
ลองดูตามไฟล์แนบครับ

Re: เลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Posted: Thu Mar 22, 2018 9:06 am
by March201711
สอบถามหน่อยค่ะ ถ้าจะเปลี่ยนเป็นเดือนอื่น เช่น เป้น เดือน jan หรือ feb จะได้ไหมคะ พอเปลี่ยน column O2 แล้ว กด refresh ข้อมูลก็ run เป็นเดือน mar ค่ะ อยากให้ run เป็นเดือนต่อๆไป โดยดูจาก cell O2 เป็นหลักค่ะ

Re: เลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Posted: Thu Mar 22, 2018 9:36 am
by puriwutpokin
March201711 wrote: Thu Mar 22, 2018 9:06 am สอบถามหน่อยค่ะ ถ้าจะเปลี่ยนเป็นเดือนอื่น เช่น เป้น เดือน jan หรือ feb จะได้ไหมคะ พอเปลี่ยน column O2 แล้ว กด refresh ข้อมูลก็ run เป็นเดือน mar ค่ะ อยากให้ run เป็นเดือนต่อๆไป โดยดูจาก cell O2 เป็นหลักค่ะ
ปรับโค้ดตามนี้ครับ

Code: Select all

Sub Run_03()
Dim n As Long
Dim i As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Sheets(1)
Set ws2 = Sheets(2)
On Error Resume Next
With Application.WorksheetFunction
For n = 5 To 16
If Month(ws2.Cells(2, n)) = Month(ws1.Cells(2, 15)) Then
For i = 6 To ws1.Range("a" & ws1.Rows.Count).End(xlUp).Row
    ws1.Cells(i, n - 2).Value = .Index(ws2.Range("e3:p300"), _
    .Match(ws1.Cells(i, 1), ws2.Range("c3:c300"), 0), _
    .Match(ws1.Cells(4, Month(ws1.Cells(2, 15)) + 2), ws2.Range("e2:p2"), 0))
Next i
End If
Next n
End With
End Sub

Re: เลือก sheetที่เป็นเดือน 02 ต้องเขียน code vba อย่างไรคะ

Posted: Thu Mar 22, 2018 9:53 am
by March201711
ได้แล้วค่ะ ขอบคุณมากค่ะ K.Puriwutpokin :cp: