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

โปรแกรมจะทราบได้อย่างไรว่าเรากำลังทำงานกับเดือนไหนและ 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
