สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel
Posted: Tue Apr 28, 2015 3:18 pm
สอบถามโค้ด Excel VBA ผมเขียนโค้ด Userform เพื่อบันทึกข้อมูลลงในตาราง excel ซึ่งต่องบันทึเป็นรายเดือน 12 เดือน คือ 12 table และอิงตำแหน่งตาม combobox
ที่ทำไว้ ซึ่งสสามารถบันทึกตามตำแหน่ง combobox ชื่อโครงการได้ แต่เมื่อเปลี่ยน tabel ไปเดือนถัดไปตาม combobox ที่กำหนดไว้ ตำแหน่งที่บันทึกตาม combobox ชื่อโครงการ ไม่เปลี่ยนตาม ผมติดปัญหาอยู่ตรงนี้อะครับ อาจายร์ ช่ายผมหน่อยนะครับผมต้องส่งงานสิ้นเดือนนี้แล้วอะครับ ช่วยหน่อยนะครับ
นี่โค้ดที่ผมเขียนไว้ครับ
ช่วยผมหน่อยนะครับได้โปรด ติดต่อผมได้ที่ https://www.facebook.com/thammarat.mongyoo นะครับ
ที่ทำไว้ ซึ่งสสามารถบันทึกตามตำแหน่ง 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