เปลี่ยนการเปิดเผยช่องทำเครื่องหมายไม่ทำงาน


3

ฉันมีรหัสต่อไปนี้ซ่อนแถวในแผ่นงาน แต่แผ่นงานถูกทิ้งไว้กับช่องทำเครื่องหมายที่สร้างขึ้นแบบไดนามิกยังคงมองเห็นได้ ความคิดใด ๆ

Private Sub SpinButton1_Change()

Application.ScreenUpdating = False
week = Me.Range("b1").Value
countcell = ActiveSheet.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
For i = 4 To countcell
  pweek = Me.Cells(i, 2).Value    'load the planned week value
  mycont = "ckboxPrintLabels" & i
  If pweek <> week Then
    CheckBoxes(mycont).Visible = False
    Rows(i).EntireRow.Hidden = True
    MsgBox mycont & "= " & ActiveSheet.CheckBoxes(mycont).Visible
  Else
    Rows(i).EntireRow.Hidden = False
    ActiveSheet.CheckBoxes(mycont).Visible = True
  End If
  k = i
Next i
Application.ScreenUpdating = True
End Sub

ดังนั้นตอนนี้ฉันมี ckboxPrintLabels4 ถึง 16 บนแผ่นงาน พวกเขาไม่สามารถเปลี่ยนการเปิดเผยได้ แม้ว่า msgbox จะรายงานว่าพวกเขามีทัศนวิสัยที่ผิดพลาด ... ???


btw เป็น Excel 2003 และโค้ดแบบไดนามิกสำหรับการสร้างช่องทำเครื่องหมายมีลักษณะดังนี้: `'snipped เพื่อให้พอดีกับความคิดเห็นสำหรับแต่ละเซลล์ใน ws.Range (" g "& amp; Lower & amp;": g "& amp; ด้านบน) พร้อม wsCheckBoxes .Add (cell.Left, _ cell.Top, cell.Width, cell.Height) .LinkedCell = "" .Internal.ColorIndex = xlNone .Caption = "". ชื่อ = "ckboxPrintLabels" & amp; ckbox .Visible = True End ด้วย ckbox = ckbox + 1 แอปพลิเคชั่นถัดไป ScreenUpdating = Sub End True`
Onyx

3
โปรดอย่าเพิ่ม [แก้ไข] และคำตอบในหัวข้อคำถามคุณสามารถเพิ่ม & amp; ยอมรับคำตอบของคุณเอง
Sathyajith Bhat

Sathya ... ขอบคุณสำหรับการล้างที่สำหรับฉัน ฉันรู้สึกสับสนเมื่อไม่สามารถโพสต์อีกครั้งเนื่องจากคะแนนต่ำ
Onyx

คำตอบ:


4

คุณได้ตรวจสอบแล้วว่าช่องทำเครื่องหมายที่มองเห็นได้ทั้งหมดมีชื่อว่า ckboxPrintLabelsX ฯลฯ

ฉันรันโค้ดของคุณสองครั้งเหมือนในครั้งแรกฉันไม่ได้ตั้งชื่อกล่องอย่างถูกต้องเมื่อฉันแยกรหัสที่คุณแสดงความคิดเห็นในภายหลัง การวิ่งครั้งที่สอง ได้อย่างถูกต้อง ซ่อนช่องทำเครื่องหมายด้วยชื่อ ckboxPrintLabelsX แต่ช่องทำเครื่องหมายอื่นที่มีชื่อแตกต่างกัน (Check Box 1 ฯลฯ ) ยังคงปรากฏให้เห็น

google ฉบับย่อจะทำให้เกิดปัญหาที่คล้ายกันขึ้นที่ http://www.teachexcel.com/excel-help/excel-how-to.php?i=103984 . ในกรณีนี้เมื่อมีการทำเครื่องหมายที่ช่องทำเครื่องหมายซ้อนกันในแถวซ่อนจะปรากฏขึ้นหนึ่ง remanined ที่มองเห็นด้านบน


เกิดข้อผิดพลาดในรหัสการสร้างสร้างช่องทำเครื่องหมายมากกว่าหนึ่งช่องที่มีชื่อเดียวกัน เหล่านี้จะสแต็ค เมื่อการซ่อนเกิดขึ้นจะมีผลกับชุดควบคุมเพียงชุดเดียวเท่านั้น

    Public Sub addcheckboxes(ByVal Lower As String, ByVal Upper As String)
    Dim ws As Worksheet, myObjectname As String, addChk As Boolean

    Set ws = Workbooks("nursery.xls").Worksheets("Seeding")
     Application.ScreenUpdating = False

     ckbox = Lower
     ' add a checkbox for printing
     For Each cell In ws.Range("g" & Lower & ":g" & Upper)

     myObjectname = "ckboxPrintLabels" & ckbox
     addChk = True

     For Each ctrl In ActiveSheet.CheckBoxes
     ' nasty hack to overcome the limitations of vba in excel - no eval!
        If ctrl.name = myObjectname Then
        addChk = False ' if chkbox already exists
      ctrl.Visible = True 'switch to visible, as it may not be
      End If
       Next

    If addChk Then
    With ws.CheckBoxes.Add(cell.Left, _
     cell.Top, cell.Width, cell.Height)
     .LinkedCell = cell
     .Interior.ColorIndex = xlNone
     .Caption = ""
     .name = myObjectname
     .Visible = True
    End With
    End If
    ckbox = ckbox + 1
    Next
    Application.ScreenUpdating = True
    End Sub

ขอบคุณคุณพูดถูก การสร้างเป็นปัญหา แก้ไขโพสต์หลักเพื่อเพิ่มรหัสที่ดี
Onyx

ไชโยสำหรับการตอบสนองที่รวดเร็วและยอมรับ
brettdj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.