Page 1 of 1

สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel

Posted: Tue Apr 28, 2015 3:18 pm
by thammarat0
สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel ซึ่งต่องบันทึเป็นรายเดือน 12 เดือน คือ 12 table และอิงตำแหน่งตาม combobox
ที่ทำไว้ ซึ่งสสามารถบันทึกตามตำแหน่ง combobox ชื่อโครงการได้ แต่เมื่อเปลี่ยน tabel ไปเดือนถัดไปตาม combobox ที่กำหนดไว้ ตำแหน่งที่บันทึกตาม combobox ชื่อโครงการ ไม่เปลี่ยนตาม ผมติดปัญหาอยู่ตรงนี้อะครับ อาจายร์ ช่ายผมหน่อยนะครับผมต้องส่งงานสิ้นเดือนนี้แล้วอะครับ ช่วยหน่อยนะครับ
นี่โค้ดที่ผมเขียนไว้ครับ

Code: Select all

Private Sub Cboproject_Change()
Dim Rw As Range
If Me.Cboproject.ListIndex < 0 Then Exit Sub
 With MyRange.Cells(1).Offset(Cboproject.ListIndex)
    txtแผน.Value = .Offset(, 0).Value
    txtผล.Value = .Offset(, 1).Value
    txtเบิกจ่าย.Value = .Offset(, 2).Value
    End With
For Each Rw In Range(Cboproject.RowSource)
        If Cboproject.Value = Rw Then
            txtProducer.Value = Rw.Next.Next.Next.Next
         
         End If
         Next Rw
End Sub

Private Sub cboSheets_Change()
  Worksheets(cboSheets.Value).Activate
  cboTables.Clear
  Dim lo As ListObject
  For Each lo In ActiveSheet.ListObjects
    cboTables.AddItem lo.Name
  On Error Resume Next
  Next
  If ActiveCell.ListObject.Name = "" Then
    cboTables.ListIndex = 0
  Else
    cboTables.Value = ActiveCell.ListObject.Name
  End If
End Sub

Private Sub cboTables_Change()
  On Error Resume Next 'When Clear()
  Dim Rw As Range
  Dim lo As ListObject
  Set lo = ActiveSheet.ListObjects(cboTables.Value)
  lo.Range.Activate
  
End Sub

Private Sub CmdºÑ¹·Ö¡_Click()
Dim lo As ListObject
Set lo = ActiveSheet.ListObjects(cboTables.Value)

 If Me.Cboproject.ListIndex < 0 Then Exit Sub
 With MyRange.Cells(1).Offset(Cboproject.ListIndex)
    .Offset(, 0).Value = txtแผน.Value
    .Offset(, 1).Value = txtผล.Value
    .Offset(, 2).Value = txtเบิกจ่าย.Value
    End With
 
End Sub
Private Sub Cmd¡àÅÔ¡_Click()
txtแผน.Value = ""
txtผล.Value = ""
txtเบิกจ่าย.Value = ""

End Sub

Private Sub UserForm_Initialize()
Dim myTable As ListObject
Dim MyRng    As Range
  Cboproject.Clear
 
  Set MyRng = MyRange
  
  If Not MyRng Is Nothing Then
    If MyRng.Count = 1 Then
      Cboproject.AddItem MyRng.Value
    Else
      Cboproject.List = MyRange.Value
      
    End If
  End If

With Cboproject
Cboproject.BorderStyle = fmBorderStyleSingle
.RowSource = " °Ò¹¢éÍÁÙÅ!D3:D344"

End With

With cboSheets
  For Each ws In Worksheets
    .AddItem
    If ws Is ActiveSheet Then .Value = ws.Name
  Next ws
  
End With
End Sub

Function MyRange() As Range
  Dim myTable As ListObject
  
  With Sheet1
  
    Set myTable = ActiveSheet.ListObjects("Á¡ÃÒ¤Á2558")
    Set MyRange = .Cells(Rows.Count, "K").End(xlUp)
    If MyRange.Row > 2 Then
      Set MyRange = .Range(.[k3], MyRange)
      On Error Resume Next
  End If
  
    Set myTable = ActiveSheet.ListObjects("¡ØÁÀҾѹ¸ì2558")
    Set MyRange = .Cells(Rows.Count, "N").End(xlUp)
    If MyRange.Row > 2 Then
      Set MyRange = .Range(.[n3], MyRange)
      On Error Resume Next
  End If
  
End With

End Function
ช่วยผมหน่อยนะครับได้โปรด ติดต่อผมได้ที่ https://www.facebook.com/thammarat.mongyoo นะครับ

Re: สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel

Posted: Tue Apr 28, 2015 3:31 pm
by snasui
:D อ่านกฎการใช้บอร์ดข้อ 4, 5 ด้านบนแล้วโพสต์มาใหม่อีกรอบครับ

สำหรับการวาง Code ให้แสดงเป็น Code ดูจากโสพต์นี้ครับ viewtopic.php?f=6&t=1187

Re: สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel

Posted: Tue Apr 28, 2015 6:49 pm
by snasui
:D ช่วยยกตัวอย่างข้อมูลพร้อมวิธีทดสอบมาด้วยจะได้สะดวกกับเพื่อน ๆ ในการทดสอบ และชี้ให้เห็นด้วยว่า หากโปรแกรมทำงานถูกต้องข้อมูลดังกล่าวจะบันทึกอยู่ที่ไหน อย่างไร จะได้เข้าถึงปัญหาโดยไวครับ

Re: สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel

Posted: Wed Apr 29, 2015 9:22 am
by thammarat0
รูปหน้าตาโปรแกรมครับ
Image
รูปตาราง excel ที่ต้องการบัททึกข้อมูล ถ้าดูจากรูปโปรแกรม ช่อง"ผลงานประจำเดือน" จะอิงตำแหน่งตาม tabal ชื่อเดือนครับ 12 tabal คือ 12 เดือนครับ
Image
และช้่องชื่อโครงการจะอิงตำแหนงตาม ช่องตาราง "บ้าน" ซึ่งจะเป็นชื่อโครงการตามรูปด้านร้างครับ
Image
เมื่อใส้ข้อมูลและกดบันทึกจากโปรแกรมที่ผมทำไว้ จะบันทึกข้อมูลลงตาม ชื่อโครงการและเดือนที่กำหนดไว้ ดังรูปด้านล่างนี้ครับ
Image
ปัญหาคือเมือเปลื่ยนเดือน หรือ tableเดือน ตำแหนงที่บันทึกไม่เปลี่ยนตาม เดือน หรือ tableเดือน ครับ คือประมาณว่าใส้ข้อมูลเลือกชื่อโครงการเลือกเดือนเสร็จกดบันทึก
จะบันทึกได้แค่เดือนเดียวครับ

Re: สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel

Posted: Wed Apr 29, 2015 11:07 am
by logic
แนบภาพมาที่นี่ดีกว่า ภาพที่ลิ้งก์มา ในเครื่องผมติด Policy เห็นเป็นด้านล่าง :(

Re: สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel

Posted: Wed Apr 29, 2015 11:25 am
by thammarat0
แนบรูปให้แล้วครับ

Re: สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel

Posted: Wed Apr 29, 2015 11:26 am
by thammarat0
แนบรูปให้แล้วครับ

Re: สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel

Posted: Wed Apr 29, 2015 2:42 pm
by snasui
:D ตัวอย่างการปรับ Code ให้บันทึกตามคอลัมน์ทีกำหนดครับ

Code: Select all

Private Sub Cmdบันทึก_Click()
    Dim lo As Range
    Set lo = Range(ActiveSheet.ListObjects(cboTables.Value))
     If Me.Cboproject.ListIndex < 0 Then Exit Sub
     With lo.Cells(1).Offset(Cboproject.ListIndex)
        .Offset(, 0).Value = txtแผน.Value
        .Offset(, 1).Value = txtผล.Value
        .Offset(, 2).Value = txtเบิกจ่าย.Value
    End With
End Sub

Re: สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel

Posted: Wed Apr 29, 2015 2:55 pm
by thammarat0
ขอบคุณมากๆเลยครับ