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 Worksheet_Calculate1()
Application.EnableEvents = False
Call LoopTable
Application.EnableEvents = True
End Sub
[\code]
Code: Select all
For i = 1 To Cells(Rows.Count, "a").End(xlUp).Row
Code นี้ใช้ Event Worksheet_Calculate มันจะทำงานก็ต่อเมื่อมีการคำนวณใด ๆ เกิดขึ้นsarawoot wrote: Fri Jun 12, 2020 4:59 pm แต่เมื่อนำค่าจาก OPC เข้าวางใน excel ในคอลัมน์ที่กำหนดแล้ว code มันจะทำงานตลอดเวลา
Code: Select all
Option Explicit
Private Sub Worksheet_Calculate()
Application.EnableEvents = True
If Range("B20").Value > 0 Then
Call LoopTable
Application.EnableEvents = False
End If
End Sub
Code: Select all
Public tbl As ListObject
Function GetTableData(projRow)
projDesc = tbl.DataBodyRange.Cells(projRow, tbl.ListColumns("Desc").Index)
projStatus = tbl.DataBodyRange.Cells(projRow, tbl.ListColumns("Status").Index)
projFullMsg = projDesc & " " & vbCrLf & _
"Çѹ·Õè : " & Now()
GetTableData = projFullMsg
End Function
Sub LoopTable()
Set tbl = Sheet1.ListObjects("ProjectTable")
'get value
Value = 0
'check number of rows
NumRows = tbl.DataBodyRange.Rows.Count
'Due Already
CountDue = 0
For i = 1 To NumRows
projStatus = tbl.DataBodyRange.Cells(i, tbl.ListColumns("Status").Index)
If projStatus > Value Then
DueMsg = DueMsg & GetTableData(i) & Chr(13) & Chr(10)
CountDue = CountDue + 1
End If
Next i
MsgBox "Warning : " & CountDue & " items" & Chr(13) & Chr(10) & DueMsg
End Sub