Page 1 of 1

เช็คชื่อSheetซ้ำกันด้วยFor VBA

Posted: Fri Mar 25, 2022 9:55 am
by thammakris
สวัสดีครับ ตั้งใจจะทำให้ตอนกด cmd button2 แล้วถ้าชื่อSheetซ้ำกันจะขึ้นหน้าต่างบอกว่างานซ้ำครับ ไม่สามารถเพิ่มได้จนกว่าจะเปลี่ยนชื่อใหม่ครับ

Code: Select all

 Private Sub CommandButton2_Click()
    
   ' TotalSheets = ThisWorkbook.Worksheets.Count
    'For i = 1 To TotalSheets
    'If ThisWorkbook.Worksheets(i).Name = TextBox1.Text Then
     'UserForm3.Show
    'Exit Sub
    'End If
    'Next
    
    If TextBox1.Text = "" Or TextBox2.Text = "" Then
       UserForm2.Show
    
    Else
    Do
    Dim b As String
        r = r + 1
        c = r - 1
        b = TextBox1.Text
     
    Loop Until Cells(r, 2) = ""
    Cells(r, 1) = c
    Cells(r, 2) = b
    Cells(r, 3) = TextBox2.Text
    Sheets("template").Copy After:=Worksheets("template")
    ActiveSheet.Name = b

    With Sheets(b)
      Cells(1, 3) = b
      Cells(2, 3) = TextBox2.Text
    End With
    
    With Sheets("list")
        .Hyperlinks.add Anchor:=.Cells(r, 4), Address:="", SubAddress:= _
        "#'" & b & "'!A1", TextToDisplay:="Link"
    End With
   Unload Me
    End If
    
End Sub

เขียนโค้ดคร่าวๆออกมาประมาณนี้ครับ
ปล.ไม่สามารถแนบไฟล์ได้ครับ ไฟล์เกิน 500kbครับ ขอโทษด้วยครับ
ปล.2 มีกระทู้เก่าของผมอยู่เป็นพื้นฐานไฟล์เดียวกันครับ https://snasui.com/viewtopic.php?p=111139#p111139

Re: เช็คชื่อSheetซ้ำกันด้วยFor VBA

Posted: Fri Mar 25, 2022 11:05 am
by logic
🙄 อาจารยไม่ให้แนบไฟล์จริงอ่านกฎข้างบนประกอบ ทำไฟล์เลียนแบบแนบมาแทนครับ

Re: เช็คชื่อSheetซ้ำกันด้วยFor VBA

Posted: Fri Mar 25, 2022 11:55 am
by thammakris
แนบไฟล์ให้แล้วครับ

Re: เช็คชื่อSheetซ้ำกันด้วยFor VBA

Posted: Fri Mar 25, 2022 11:57 am
by thammakris
logic wrote: Fri Mar 25, 2022 11:05 am 🙄 อาจารยไม่ให้แนบไฟล์จริงอ่านกฎข้างบนประกอบ ทำไฟล์เลียนแบบแนบมาแทนครับ
ขอบคุณมากครับ ก่อนโพสต์ผมได้อ่านกฎเรียบร้อยแล้วครับ ที่ข้อมูลมันเยอะเพราะว่าไม่ได้ลบrowเปล่าที่ไม่ได้ใช้ครับ

Re: เช็คชื่อSheetซ้ำกันด้วยFor VBA

Posted: Fri Mar 25, 2022 1:21 pm
by puriwutpokin
ลองดูครับ

Code: Select all

    If TextBox1.Text = "" Or TextBox2.Text = "" Then
       UserForm2.Show
    Else
    Do
    Dim b As String
        r = r + 1
        c = r - 1
        b = TextBox1.Text
 If Application.WorksheetFunction.CountIf(Range("B2:B100"), b) > 0 Then
       UserForm3.Show
        Exit Sub
End If
    Loop Until Cells(r, 2) = ""
'...Other Code

Re: เช็คชื่อSheetซ้ำกันด้วยFor VBA

Posted: Fri Mar 25, 2022 2:14 pm
by thammakris
puriwutpokin wrote: Fri Mar 25, 2022 1:21 pm ลองดูครับ

Code: Select all

    If TextBox1.Text = "" Or TextBox2.Text = "" Then
       UserForm2.Show
    Else
    Do
    Dim b As String
        r = r + 1
        c = r - 1
        b = TextBox1.Text
 If Application.WorksheetFunction.CountIf(Range("B2:B100"), b) > 0 Then
       UserForm3.Show
        Exit Sub
End If
    Loop Until Cells(r, 2) = ""
'...Other Code
ได้แล้วครับ แต่มีข้อสงสัยนิดนึงตรง (Range("B2:B100"), b)
ในส่วนนี้หมายถึงอะไรหรอครับ ใช่Sheetหรือเปล่า ถ้าใช่สมมุติสร้างsheetเกิน 100ชีต โปรแกรมยังจะทำงานได้เหมือนเดิมมั้ยครับ
ขอบคุณมากครับ
.
.
.
แก้ไขโพสต์
ผมเข้าใจแล้วครับ ผมเปลี่ยนจากRange("B2:B100") เป็นColumns(2)แทนครับ
ขอบคุณคุณpuriwutpokinสำหรับไอเดียมากๆอีกครั้งครับ ขอบคุณครับ