EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)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
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