2016-04-01 20 views
0

Bu alt sayfayı, başka sütunları daraltmak ve genişletmek için tıklatabildiğim başka bir elektronik tabloya aldım. Bazı satırları daraltmak için kullanmak üzere yeni bir elektronik tabloya kopyaladım ancak şimdi "Alt veya işlev tanımlanmamış" hatasını alıyorum. Bu çalışma kitabındaki başka hiçbir komut dosyası vardır ButtonsAlt veya işlev tanımlanmamış: Düğmeler()

Sub HideDetails() 
    Range("3:8").Select 
    If Selection.EntireColumn.Hidden Then 
     Selection.EntireColumn.Hidden = False 
     Buttons("btnToggleDetails").Caption = "-" 
    Else 
     Selection.EntireColumn.Hidden = True 
     Buttons("btnToggleDetails").Caption = "+" 
     Range("A1").Select 
     Application.CutCopyMode = False 
    End If 
    Range("A1").Select 
    Application.CutCopyMode = False 
End Sub 

vurgulamaktadır. Bu aslında Modül1'deydi ama yeni bir modüle taşımaya çalıştım.

enter image description here

Düzenleme

: kod ancak ekran görüntüsünde düğme adını değiştirdi. Her iki referans da btnToggleDetails için geçerli, ancak yine de aynı hatayı atıyor.

cevap

1

Buttons() tanımlayıcısının mevcut kapsamda bulunamadığını size bildiriyor. olduğu gibi

Sheet1.Buttons("btnToggleDetails").Caption = "+" 
+0

Hata düzeltildi, ancak hala "EntireColumn" referanslarım olduğu için tüm çalışma kitabım gizlendi ve geri alamıyorum! lol –

+0

http://superuser.com/questions/1060182/accidentally-hid-all-columns-with-a-macro-how-do-i-get-them-back –

+0

Şeridin Ana Sayfa sekmesinde Hücreler grubunu ve Biçim düğmesini seçin. Oradan Gizle ve Göster'i seçin ve ardından Sütunları Göster'i seçin. Gelecekte, tüm sütunları gizlemek istiyorsanız, çalışma sayfasını gizlemekten daha iyi olursunuz. –

1

benim cevap eklemek zorunda kaldı: Buttons() Eğer başka bir yerde ilan ettiğim bir şey ya genel yapması gerekir ya da tamamen örneğin Buttons() nesne içeren nesneyi nitelemek gerekir ise Kod satırlarını kısaltabilirim:

Selection.EntireColumn.Hidden'un TRUE/FALSE veya 0/-1 değerini döndürdüğünü düşünüyorsanız.
CHR(45) eksi işaretidir.
CHR(43) bir artı işaretidir.

ABS Böylece 1.

içine -1 döner: Gerçek (0) daha sonra 45- (0 * 2) 45
= Eğer sonra (-1) YANLIŞ 45- (1 x 2) = 43

Bu, görünür ve tersi gizli sütunları takas ve acil penceresinde doğru buton yazısı görüntüler:

Sub HideShowColumns() 

    Selection.EntireColumn.Hidden = Not (Selection.EntireColumn.Hidden) 
    Debug.Print Chr(45 - (Abs(CLng(Selection.EntireColumn.Hidden)) * 2)) 

End Sub 

Bu prosedürde çalışması gerekir:

Sub HideDetails() 

    Dim rng As Range 
    Set rng = ActiveSheet.Range("3:8") 

    rng.EntireColumn.Hidden = Not (rng.EntireColumn.Hidden) 
    Buttons("btnToggleDetails").Caption = Chr(45 - (Abs(CLng(rng.EntireColumn.Hidden)) * 2)) 

End Sub 
+0

Bu, sorunu ("ActiveSheet" ile "Düğmeler" i başlatacaktı) düzeltmez, ancak bu kod üzerinde bir gelişmedir! –

İlgili konular