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
Sub Button1_Click()
Dim historyWks As Worksheet
Dim inputWks As Worksheet
Dim nextRow As Long
Dim oCol As Long
Dim myRng As Range
Dim myCopy As String
Dim myCell As Range
ActiveSheet.Unprotect Password:="1234" '<==UnProtect
Sheets("Input").Unprotect Password:="1234"
'cells to copy from Input sheet - some contain formulas
myCopy = "E5:E7"
Set inputWks = Worksheets("Input")
Set historyWks = Worksheets("defectdata")
With historyWks
nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
End With
With inputWks
Set myRng = .Range(myCopy)
If Not ActiveWorkbook.Saved Then
Msg = "ท่านกรอกข้อมูลครบถ้วนหรือไม่?"
Ans = MsgBox(Msg, vbQuestion + vbYesNo)
Select Case Ans
Case vbYes
ThisWorkbook.Saved = True
Case vbNo
Cancel = True
Exit Sub
End Select
End If
If Application.CountA(myRng) <> myRng.Cells.Count Then
MsgBox "กรุณาใส่ข้อมูลให้ครบถ้วน"
Exit Sub
End If
End With
With historyWks
'With .Cells(nextRow, "A")
' .Value = Now
'.NumberFormat = "mm/dd/yyyy hh:mm:ss"
'End With
'.Cells(nextRow, "B").Value = Application.UserName
oCol = 1
For Each myCell In myRng.Cells
historyWks.Cells(nextRow, oCol).Value = myCell.Value
oCol = oCol + 1
Next myCell
End With
'clear input cells that contain constants
With inputWks
On Error Resume Next
With .Range(myCopy).Cells.SpecialCells(xlCellTypeConstants)
.ClearContents
Application.GoTo .Cells(1) ', Scroll:=True
End With
On Error GoTo 0
End With
Sheets("Input").Protect Password:="1234" '<==Protect
ActiveSheet.Protect Password:="1234" '<==UnProtect
End Sub
Code: Select all
'Other code
If Application.CountA(myRng) <> myRng.Cells.Count Then
MsgBox "กรุณาใส่ข้อมูลให้ครบถ้วน"
Exit Sub
End If
End With
ActiveSheet.Unprotect Password:="1234" '<==UnProtect
Sheets("Input").Unprotect Password:="1234"
With historyWks
'With .Cells(nextRow, "A")
' .Value = Now
'.NumberFormat = "mm/dd/yyyy hh:mm:ss"
'End With
'.Cells(nextRow, "B").Value = Application.UserName
oCol = 1
For Each myCell In myRng.Cells
historyWks.Cells(nextRow, oCol).Value = myCell.Value
oCol = oCol + 1
Next myCell
End With
'clear input cells that contain constants
With inputWks
On Error Resume Next
With .Range(myCopy).Cells.SpecialCells(xlCellTypeConstants)
.ClearContents
Application.GoTo .Cells(1) ', Scroll:=True
End With
On Error GoTo 0
End With
Sheets("Input").Protect Password:="1234" '<==Protect
ActiveSheet.Protect Password:="1234" '<==UnProtect
End Sub