Page 1 of 1

vba ซ่อน ปุ่ม มีบัค ไม่สามารถกด ย้อนกลับได้

Posted: Mon Mar 28, 2022 11:24 am
by Vespaclassic
สวัสดีครับ

โค้ vba เกี่ยวกับการ ซ่อนปุ่ม button เมื่อรันแล้วใช้งานได้ปกติ

แต่โค้ดมีบัค หรือสูตรผิดผมไม่แน่ใจครับ
อาการที่เจอคือ
1.เมื่อพิมพ์ข้อมูลลงในแผ่นงานแล้วไม่สามารถกด undo หรือย้อนกลับได้
2. ถ้าพิมพ์ตัวเลข 1 2 ลงมา แล้วลากสูตร จะไม่ขึ้น ให้เลือกมุมขวา

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Cells(1, 1).Value <> "" Then
        Me.CommandButton1.Visible = True
    Else
        Me.CommandButton1.Visible = False
    End If
    Application.ScreenUpdating = True
End Sub

Re: vba ซ่อน ปุ่ม มีบัค ไม่สามารถกด ย้อนกลับได้

Posted: Mon Mar 28, 2022 12:42 pm
by puriwutpokin
ลองปรับเป็น

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
If Intersect(Target, Range("a1")) Is Nothing Then Exit Sub
If Cells(1, 1).Value <> "" Then
        Me.CommandButton1.Visible = True
    Else
        Me.CommandButton1.Visible = False
    End If
    Application.ScreenUpdating = True
End Sub

Re: vba ซ่อน ปุ่ม มีบัค ไม่สามารถกด ย้อนกลับได้

Posted: Mon Mar 28, 2022 2:08 pm
by Vespaclassic
test (1).xlsm
ขอบคุณมากครับ
กด undo ได้ปกติละครับ

แต่ติดปัญหาเพิ่มตรงที่

เซลๆนั้นต้องรับค่าโดยตรงจากคีย์บอร์ด

ถ้าอ้างอิงมาจากเซลอื่นจะไม่ทำงานครับ

จากไฟล์ ถ้าพิมพ์ที่ a1 จะทำงานได้

ถ้า a1 รับค่า มาจาก c1 จะไม่ทำงานครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("a1")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    If Cells(1, 1).Value = "1" Then
        Me.CommandButton1.Visible = True
        
        Sheets("1").Visible = True
        
    Else
        Me.CommandButton1.Visible = False
        Sheets("1").Visible = False
    End If
    Application.ScreenUpdating = True
End Sub
puriwutpokin wrote: Mon Mar 28, 2022 12:42 pm ลองปรับเป็น

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
If Intersect(Target, Range("a1")) Is Nothing Then Exit Sub
If Cells(1, 1).Value <> "" Then
        Me.CommandButton1.Visible = True
    Else
        Me.CommandButton1.Visible = False
    End If
    Application.ScreenUpdating = True
End Sub

Re: vba ซ่อน ปุ่ม มีบัค ไม่สามารถกด ย้อนกลับได้

Posted: Mon Mar 28, 2022 2:50 pm
by puriwutpokin
ุลองแนบไฟล์ ที่เป็นแบบที่แจ้งมาดูครับว่าค่า ที่ใส่เป็นอะไรครับ เพราะ ถ้า 1 กับ "1" จะไม่เหมือนกันในความหมายนี้ครับ

Re: vba ซ่อน ปุ่ม มีบัค ไม่สามารถกด ย้อนกลับได้

Posted: Mon Mar 28, 2022 2:53 pm
by Vespaclassic
puriwutpokin wrote: Mon Mar 28, 2022 2:50 pm ุลองแนบไฟล์ ที่เป็นแบบที่แจ้งมาดูครับว่าค่า ที่ใส่เป็นอะไรครับ เพราะ ถ้า 1 กับ "1" จะไม่เหมือนกันในความหมายนี้ครับ
อันนี้ครับ

Re: vba ซ่อน ปุ่ม มีบัค ไม่สามารถกด ย้อนกลับได้

Posted: Mon Mar 28, 2022 3:17 pm
by puriwutpokin
VBA Event นั้นต้องการให้มีการแก้ไขโดยตรงที่ เซลนั้นๆ ที่กำหนดไว้ ถ้าเป็นการลิ้งค์ค่ามาน่าจะไม่
ได้ครับ
ไม่ใช่นั้นต้องยกเลิก ส่วนนี้

Code: Select all

'If Intersect(Target, Range("a1")) Is Nothing Then Exit Sub
แต่ก็จะไม่สามารถ Undo ได้เหมือนตอนแรกครับ

Re: vba ซ่อน ปุ่ม มีบัค ไม่สามารถกด ย้อนกลับได้

Posted: Mon Mar 28, 2022 3:27 pm
by Vespaclassic
ขอบคุณครับ
ใช่ครับ
พอยกเลิกส่วนนี้

Code: Select all

If Intersect(Target, Range("a1")) Is Nothing Then Exit Sub


puriwutpokin wrote: Mon Mar 28, 2022 3:17 pm VBA Event นั้นต้องการให้มีการแก้ไขโดยตรงที่ เซลนั้นๆ ที่กำหนดไว้ ถ้าเป็นการลิ้งค์ค่ามาน่าจะไม่
ได้ครับ
ไม่ใช่นั้นต้องยกเลิก ส่วนนี้

Code: Select all

'If Intersect(Target, Range("a1")) Is Nothing Then Exit Sub
แต่ก็จะไม่สามารถ Undo ได้เหมือนตอนแรกครับ

Re: vba ซ่อน ปุ่ม มีบัค ไม่สามารถกด ย้อนกลับได้

Posted: Mon Mar 28, 2022 10:18 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub Worksheet_Calculate()
    Application.ScreenUpdating = False
    If Cells(1, 1).Value = "1" Then
        Me.CommandButton1.Visible = True
        
        Sheets("1").Visible = True
        
    Else
        Me.CommandButton1.Visible = False
        Sheets("1").Visible = False
    End If
    Application.ScreenUpdating = True
End Sub

Re: vba ซ่อน ปุ่ม มีบัค ไม่สามารถกด ย้อนกลับได้

Posted: Sat Apr 02, 2022 8:50 am
by Vespaclassic
ขอบคุณครับ ใช้ได้แล้วครับ

ผมใช้เวลาปรับอยู่หลายวันกว่าจะได้

นำโค้ดนี้ไปใส่ไฟล์ใหม่ใช้ได้ปกติ

แต่นำไปใ่ไฟล์ที่ใช้งาน เกิดบัคเหมือนเดิม

Re: vba ซ่อน ปุ่ม มีบัค ไม่สามารถกด ย้อนกลับได้

Posted: Sat Apr 02, 2022 12:05 pm
by snasui
:D เข้าใจว่าเกิดจากกรณีเดียวกันกับกระทู้นี้ครับ :arrow: Worksheet_Calculate