snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
1. เข้าเมนู Tools
2. คลิก Share Workbook
3. แถบ Editing ทำเครื่องหมายที่ Allow change by more than one user at the same time. This also allows workbook merging
4. คลิก OK
Sub CopyNewSheet()
Dim i As Integer
Dim strNameSheet As String
Dim Pswd As String
'Do
strNameSheet = InputBox("Please enter sheet name.")
If strNameSheet = "" Then
Exit Sub
End If
'Loop Until strNameSheet <> ""
For i = 1 To Worksheets.Count
If UCase(Worksheets(i).Name) = UCase(strNameSheet) Then
MsgBox "Please try again"
Exit Sub
End If
Next
Worksheets("Report").Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = strNameSheet
' If Password = "" Then
' Exit Sub
' End If
Do
Pswd = InputBox("Please enter Password.")
Loop Until Pswd = "123"
ActiveSheet.Unprotect Password:=Pswd
ActiveSheet.Cells.Copy
ActiveSheet.Cells.PasteSpecial xlPasteValues
Worksheets("Report").Range("L7:L16").Copy
ActiveSheet.Range("L7:L16").PasteSpecial xlPasteFormulas
Worksheets("Report").Range("K16").Copy
ActiveSheet.Range("K16").PasteSpecial xlPasteFormulas
Worksheets("Report").Range("J17").Copy
ActiveSheet.Range("J17").PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
ActiveSheet.Protect
End Sub
You do not have the required permissions to view the files attached to this post.
Sub SearchSheet()
Dim strNameSheet As String
strNameSheet = InputBox("Please enter sheet name.")
If strNameSheet = "" Then
Exit Sub
End If
Worksheets(strNameSheet).Select
End Sub
Sub SearchSheet()
Dim i As Integer
Dim strNameSheet As String
strNameSheet = InputBox("Please enter sheet name.", "Search Name Sheet")
If strNameSheet = "" Then
Exit Sub
End If
For i = 1 To Worksheets.Count
If UCase(Worksheets(i).Name) <> UCase(strNameSheet) Then
MsgBox "Please try again"
Exit Sub
End If
Next
Worksheets(strNameSheet).Select
End Sub
ผลปรากฎว่าไม่ว่าจะใสชื่อซีทถูกหรือผิดระบบก็จะเตือนที่บรรทัดนี้ตลอดครับ Please try again
ต้องปรับแก้ตรงส่วนไหนเพิ่มดีครับ
Sub SearchSheet()
Dim i As Integer
Dim iCount As Integer
Dim strNameSheet As String
strNameSheet = InputBox("Please enter sheet name.", "Search Name Sheet")
If strNameSheet = "" Then
Exit Sub
End If
For i = 1 To Worksheets.Count
If UCase(Worksheets(i).Name) = UCase(strNameSheet) Then
iCount = iCount + 1
End If
Next
If iCount > 0 Then
Worksheets(strNameSheet).Select
Else
MsgBox "Please try again"
End If
End Sub
ขอบคุณครับ สามารถใช้งานได้ดีครับ
ถามเพิ่มนะครับ ถ้าต้องการค้นหาซีทที่มีอยู่ในฐานข้อมูลทั้งหมดโดยค้นหาแบบ Combo box หรือ แบบ Value List ทำได้ไหมครับ
ถ้าได้ต้องใช้คำสั้งในการค้นหาชื่อซีททั้งหมดมาแสดงใน List Box ต้องเขียนโค๊ดแบบไหนครับ
ผมใช้ VBA List รายชื่อชีทออกมาทั้งหมดแล้วนำไปใช้ใน Validation เพื่อค้นหารายชื่อซีททำได้แล้วครับ แต่ว่าเมื่อเลือกข้อมูลในรายการแล้วไม่สามารถให้ทำการเปิดข้อมูลของซีทนั้นๆขึ้นมาแสดงได้ต้องปรับแก้โค๊ดตรงส่วนไหนเพิ่มดีครับ โค๊ดที่ทำไว้ของซีท INDEX แบบนี้ครับ
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strNameSheet As String
Application.EnableEvents = False
If Target.Address = "$E$25" Then
strNameSheet = Target.Address
Worksheets(strNameSheet).Select
End If
Application.EnableEvents = True
End Sub
ลองแล้วใช้งานได้ดีครับ แล้วถ้าต้องการให้เซลล์เมื่อได้รับโฟกัสให้แสดง Drop List อัตโนมัติ เช่นเมื่อ E25 ได้รับโฟกัสก็ให้แสดงรายการทั้งหมดลงมาให้เห็นต้องใช้คำสั่งอะไรครับ
Private Sub ComboBox1_Click()
Dim MySheet() As String
Dim MyTotalSheets As String
Dim i As Integer
MyTotalSheets = Application.Worksheets.Count
ReDim MyName(MyTotalSheets)
For i = 1 To MyTotalSheets
MyName(i) = Sheets(i).Name
ComboBox1.AddItem MyName(i)
Next i
Worksheets(ComboBox1.Value).Select
End Sub
Private Sub ComboBox1_Click()
Dim MyName() As String
Dim MyTotalSheets As Integer
Dim i As Integer
MyTotalSheets = Application.Worksheets.Count
ReDim MyName(MyTotalSheets)
For i = 1 To MyTotalSheets
MyName(i) = Sheets(i).Name
ComboBox1.AddItem MyName(i)
Next i
Worksheets(ComboBox1.Value).Select
End Sub
Sub FilComboBox()
Dim MyName() As String
Dim MyTotalSheets As Integer
Dim i As Integer
MyTotalSheets = Application.Worksheets.Count
ReDim MyName(MyTotalSheets)
For i = 1 To MyTotalSheets
MyName(i) = Sheets(i).Name
ActiveSheet.ComboBox1.AddItem MyName(i)
Next i
End Sub