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
'Login
Private Sub CommandButton1_Click()
' On Error Resume Next
If TextBox1 = "" Or TextBox2 = "" Then
MsgBox "กรุณากรอกข้อมูลให้ครบถ้วน"
Exit Sub
End If
If TextBox1.Text = Worksheets("Username").Range("A2").Value Then
If TextBox2.Text = Worksheets("Username").Range("B2").Value Then
passOK = True
UserForm12.Hide
TextBox1.Text = ""
TextBox2.Text = ""
Else
MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อีกครั้ง"
End If
End If
If passOK = False Then
MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อีกครั้ง"
End If
End Sub
Code: Select all
Public Const SW_MAXIMIZED = 3
#If VBA7 Or Win64 Then
Public Declare PtrSafe Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Public Declare PtrSafe Function ShowWindow Lib "user32" (ByVal _
hwnd As Long, ByVal nCmdShow As Long) As Long
#Else
public Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
public Declare Function ShowWindow Lib "user32" (ByVal _
hwnd As Long, ByVal nCmdShow As Long) As Long
#End If
Code: Select all
Sub Button1_Click()
'Sheet1.Activate
On Error Resume Next
UserForm1.Show
End Sub
Code: Select all
Private Sub UserForm_Initialize()
Call ClearData
Sheet6.Activate
'day
comday.RowSource = "DATA!D2:D32"
'month
commonth.RowSource = "DATA!E2:E13"
'year
comyear.RowSource = "DATA!F2:F31"
'description
Combobox1.RowSource = "DATA!C2:C8"
Call ShowMaximized
End Sub
Private Sub ShowMaximized()
Call ShowWindow(FindWindow("ThunderDFrame", Me.Caption), SW_MAXIMIZED)
End Sub
Code: Select all
Private Sub CommandButton1_Click()
' On Error Resume Next
If TextBox1 = "" Or TextBox2 = "" Then
MsgBox "กรุณากรอกข้อมูลให้ครบ"
Exit Sub
End If
If TextBox1.Text = Worksheets("Username").Range("A2").Value Then
If TextBox2.Text = Worksheets("Username").Range("B2").Value Then
passOK = True
UserForm12.Hide
TextBox1.Text = ""
TextBox2.Text = ""
Else
MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อักครั้ง", vbInformation, "แจ้งเตือน"
End If
End If
If passOK = False Then
MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อักครั้ง", vbInformation, "แจ้งเตือน"
End If
End Sub
Private Sub UserForm_Terminate()
ThisWorkbook.Close
End Sub
Public CallForm as String
ไว้ใน Module ใด ๆ และเมื่อคลิกปุ่มใด ๆ เช่นคลิกปุ่มแรกจะกำหนดตัวแปร CallForm เป็น CallForm = "UserForm1"
เช่นนี้เป็นต้นCode: Select all
select case callform
case "UserForm1"
Userform1.Show
case "Userform2"
UserForm2.Show
'...
end select
Code: Select all
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
If MsgBox("ต้องการปิดไฟล์นี้ ใช่หรือไม่", vbYesNo) = vbYes Then
End If
End If
End Sub
Code: Select all
Private Sub Workbook_Open()
ActiveWindow.DisplayWorkbookTabs = False
End Sub
Code: Select all
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
If MsgBox("คุณต้องการปิดไฟลนี้ ใช่หรือไม่", vbYesNo) = vbYes Then
ActiveWindow.DisplayWorkbookTabs = True
ThisWorkbook.Close True
End If
End If
End Sub
Code: Select all
Private Sub Workbook_Open()
ThisWorkbook.Worksheets("Uniform_EGAS").Activate
ActiveWindow.DisplayWorkbookTabs = False
End Sub
ถ้าต้องการปิดแบบถามด้วยว่าบันทึกหรือไม่ต้องเพิ่มตรงไหนค่ะsnasui wrote: ตัวอย่าง Code ครับ
Code: Select all
Private Sub Workbook_Open() ThisWorkbook.Worksheets("Uniform_EGAS").Activate ActiveWindow.DisplayWorkbookTabs = False End Sub
ปัญหาตอนนี้คือ ถ้ากดปุ่มปิดที่ฟอร์ม 12 แล้วไฟล์ก็จะถูกปิดไปเลย โดยไม่ถามว่าต้องการบันทึก หรือไม่snasui wrote: เขียนคำถามมาใหม่ครับ อธิบายสิ่งที่เป็นปัญหา สิ่งที่ต้องการให้เป็น ระบุ Code ที่เขียนมาเองแล้วจะได้ตอบต่อมาจากนั้น
Code: Select all
Private Sub CommandButton1_Click()
On Error Resume Next
If TextBox1 = "" Or TextBox2 = "" Then
MsgBox "กรุณากรอกข้อมูลให้ครบถ้วน"
Exit Sub
End If
If TextBox1.Text = Worksheets("Username").Range("A2").Value Then
If TextBox2.Text = Worksheets("Username").Range("B2").Value Then
passOK = True
UserForm12.Hide
TextBox1.Text = ""
TextBox2.Text = ""
Else
MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อีกครั้ง", vbInformation, "แจ้งเตือน"
End If
End If
If passOK = False Then
MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อีกครั้ง", vbInformation, "แจ้งเตือน"
End If
Select Case CallForm
Case "UserForm1"
UserForm1.Show
Case "Userform2"
UserForm2.Show
Case "UserForm3"
UserForm3.Show
Case "UserForm5"
UserForm5.Show
Case "UserForm6"
UserForm6.Show
Case "UserForm7"
UserForm7.Show
Case "UserForm8"
UserForm8.Show
Case "UserForm9"
UserForm9.Show
Case "UserForm11"
UserForm11.Show
Case "UserForm12"
UserForm12.Show
End Select
End Sub
Private Sub UserForm_Terminate()
ThisWorkbook.Close
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
If MsgBox("คุณต้องการปิดไฟล์นี้ ใช่หรือไม่", vbYesNo) = vbYes Then
ActiveWindow.DisplayWorkbookTabs = True
ThisWorkbook.Close True
End If
End If
End Sub
ให้สร้างตัวแปรมารับว่าได้กรอกข้อมูลถูกต้องแล้ว อาจจะเช่นBenmore wrote:แล้วถ้าต้องการให้ใส่ข้อมูลในฟอร์ม 12 ครั้งเดียว แล้วก็กดปุ่มอื่นๆได้โดยไม่ต้องกรอกข้อมูลต้องแก้ตรงไหนค่ะ
public pwdCorrect as boolean
pwdCorrect = True
ในการกดปุ่มอื่นก็ให้มาเช็คว่า pwdCorrect
เป็น True
แล้วใช่หรือไม่ หากใช่ก็ไม่ต้องเปิด Form ให้กรอก Username และ Password อีก เช่นนี้เป็นต้นครับCode ที่เขียนไว้มี Save ไฟล์อยู่แล้ว ช่วยอธิบายคำว่าบันทึกว่าทำงานอย่างไร จะได้เข้าใจตรงกันครับBenmore wrote:ปัญหาตอนนี้คือ ถ้ากดปุ่มปิดที่ฟอร์ม 12 แล้วไฟล์ก็จะถูกปิดไปเลย โดยไม่ถามว่าต้องการบันทึก หรือไม่