Onay kutusu görünürlüğünü değiştir çalışmıyor


3

Sayfadaki satırları gizleyen aşağıdaki kod var, ancak sayfa hala dinamik olarak oluşturulan onay kutularıyla kaldı. Herhangi bir fikir?

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

Bu yüzden şu anda sayfa üzerinde 16 ile ckboxPrintLabels4 var. Görünürlüğü değiştiremezler. Her ne kadar msgbox yanlış görünürlükleri olduğunu bildirmiş olsa da ... ???


btw bu Excel 2003 ve onay kutusu oluşturma için dinamik kod şöyle görünüyor: `'yorumlara sığdırmak için koparıldı Her hücre için ws.Range (" g "& Lower &": g "& Upper) ws.CheckBoxes.Add ( cell.Left, _ cell.Top, cell.Width, cell.Height) .LinkedCell = "" .Interior.ColorIndex = xlNone .Caption = "" .name = "ckboxPrintLabels" & ckbox .Visible = ckbox ile Gerçek Son = ckbox + 1 Sonraki Uygulama.ScreenUpdating = True End Sub`
Onyx

3
ekleyebilir ve kendi yanıt kabul edebilir [çözüldü] ekleyin ve soru bölümünde cevabını şeyler etmeyiniz
Sathyajith Bhat

Sathya ... bunu temizlediğin için teşekkürler. Düşük puan nedeniyle tekrar gönderemediğimde kafam karıştı.
Onik

Yanıtlar:


4

Tüm görünür onay kutularının aslında ckboxPrintLabelsX etc olduğunu kontrol ettiniz mi?

Kodunuzu ilk çalıştırdığımda iki kez koştum, daha sonra yorumlanan kodunuzu ayırdığımda kutuları doğru bir şekilde vermedim. İkinci çalıştırma , ckboxPrintLabelsX başlıklarına sahip onay kutularını doğru bir şekilde sakladı, ancak farklı başlıklara sahip diğer onay kutuları (Onay Kutusu 1 vb.) Hala görülebiliyordu.

Hızlı bir google, benzer bir sorunu http://www.teachexcel.com/excel-help/excel-how-to.php?i=103984 adresinde yayınlamaktadır . Bu durumda, onay kutuları satır gizlemesine istiflenirken, üstünde görünür halde kalan bir tane görünür.


Hata yaratma kodunda, aynı ada sahip birden fazla onay kutusu oluşturulurken. Bunlar yığar. Saklanma gerçekleştiğinde, sadece bir kontrol grubu üzerinde etkili oldu.

    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

Teşekkürler, oldukça haklısın. Yaratma problemdir. İyi kod eklemek için ana gönderiyi düzenledi.
Onik

hızlı tepki için alkış ve kabul
brettdj 20:11
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.