Page 1 of 1

สอบถาม CodeVB Show ปุ่มที่ซ่อนไว้ เมื่อ เซลที่กำหนดไว้ มีค่าเปลี่ยนไป

Posted: Mon Mar 04, 2024 6:20 pm
by tigerwit
จากไฟล์ที่แนบมาต้องการให้ แสดงปุ่ม Save ที่ถูกซ่อนไว้ เมื่อค่าใน H1 เปลี่ยนไป (ค่าที่เปลี่ยนไป ใน H1 เกิดจากการเชื่อมโยงเซลล์ของ DropDownList ไม่ใช่เปลี่ยนจากการคีย์ข้อมูลเอง)
ต้องปรับโค๊ดอย่างไรครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$H$1" Then
    ActiveSheet.Shapes("Button3").Visible = True
    End If
End Sub

Re: สอบถาม CodeVB Show ปุ่มที่ซ่อนไว้ เมื่อ เซลที่กำหนดไว้ มีค่าเปลี่ยนไป

Posted: Mon Mar 04, 2024 8:05 pm
by snasui
:D คำว่าเมื่อค่าเปลี่ยนไปแสดงว่าต้องมีค่าเดิมให้เทียบ ค่าเดิมจะต้องถูกพักไว้ใน Object ใด ๆ ยกตัวอย่างเช่นใน H2 เมื่อมีการเลือกค่าใหม่จะนำ H1 ไปเที่ยบกับ H2 ถ้าค่าเปลี่ยนไปจึงจะยกเลิกการซ่อน สามารถเลือกใช้ Calculate Event เพื่อทดแทน Change Event ที่ไม่ทำงานกรณีมี Link ค่าลักษณะนี้ครับ

Code ด้านล่างเป็นการตรวจจับการคำนวณของชีต หากมีการคำนวณเกิดขึ้นจะตรวจสอบค่าใน H1 เทียบกับค่าใน H2 หากไม่เท่ากันจะแสดงปุ่มที่ซ่อนไว้

Code: Select all

Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
    If Range("h2").Value <> Range("h1").Value Then
        Call show01
        Range("h2").Value = Range("h1").Value
    End If
    Application.EnableEvents = True
End Sub
ที่สำคัญ เมื่อคลิกปุ่มดังกล่าวแล้วจะต้องเพิ่ม Code ให้ซ่อนเอาไว้เสมอ เพื่อให้แสดงด้วยการเลือกค่าจาก Combobox ในคราวหลัง