Kod kısatma olabilirmi?

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
10 Nisan 2008
Mesajlar
578
Excel Vers. ve Dili
2000,2003,2007
Ustalarım merhaba,

aşağıda göster gizle kodunu kullanıyorum fakat 31 sayfalık bir çalışma kitabım var ve bu sayfaya bir çok sayfa daha eklemem gerekiyor..Her sayfa için tek tek giriş yapıyorum bu sayfaları kod kullanarak kısatltmak mümkünmüdür..?

Private Sub CommandButton1_Click()
On Error Resume Next
x = InputBox("Şifrenizi giriniz", "ŞİFRE")
If Not x = 111 Then Exit Sub
If CommandButton1.Caption = "GİZLE" Then
CommandButton1.Caption = "GÖSTER"
Else
CommandButton1.Caption = "GİZLE"
End If
kul1 = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31")
For a = 0 To 30
With Sheets(kul1(a))
If .Visible = False Then
.Visible = True
ElseIf .Visible = True Then
.Visible = False
End If
End With
Next a
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,727
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Private Sub CommandButton1_Click()
    On Error Resume Next
    X = InputBox("Şifrenizi giriniz", "ŞİFRE")
    If Not X = 111 Then Exit Sub
    If CommandButton1.Caption = "GİZLE" Then
    CommandButton1.Caption = "GÖSTER"
    Else
    CommandButton1.Caption = "GİZLE"
    End If
    For X = 1 To Sheets.Count
    With Sheets(CStr(X))
    If .Visible = False Then
    .Visible = True
    ElseIf .Visible = True Then
    .Visible = False
    End If
    End With
    Next
End Sub
 
Son düzenleme:
Katılım
10 Nisan 2008
Mesajlar
578
Excel Vers. ve Dili
2000,2003,2007
Hocam aslında soruyu şu şekildemi sormalıydım çünkü vermiş olduğunuz kod istediğim gibi fakat başka bir butonla başka sayfalarıda göster gizle yapıyordum..Vermiş olduğunuz kod diğer gizlediğim sayfalarıda açıyor...

Kullandığım kod:

Private Sub CommandButton1_Click()
On Error Resume Next
X = InputBox("Şifrenizi giriniz", "ŞİFRE")
If Not X = 111 Then Exit Sub
If CommandButton1.Caption = "GİZLE" Then
CommandButton1.Caption = "GÖSTER"
Else
CommandButton1.Caption = "GİZLE"
End If
For X = 2 To Sheets.Count
With Sheets(X)
If .Visible = False Then
.Visible = True
ElseIf .Visible = True Then
.Visible = False
End If
End With
Next
End Sub

Private Sub CommandButton2_Click()
On Error Resume Next
X = InputBox("Şifrenizi giriniz", "ŞİFRE")
If Not X = 222 Then Exit Sub
If CommandButton2.Caption = "GİZLE" Then
CommandButton2.Caption = "GÖSTER"
Else
CommandButton2.Caption = "GİZLE"
End If
kul2 = Array("YÜKLEME_1", "YÜKLEME_2", "YÜKLEME_3", "YÜKLEME_4")
For a = 0 To 3
With Sheets(kul2(a))
If .Visible = False Then
.Visible = True
ElseIf .Visible = True Then
.Visible = False
End If
End With
Next a
End Sub

Private Sub CommandButton3_Click()
X = InputBox("Şifrenizi giriniz", "ŞİFRE")
If Not X = 333 Then Exit Sub
If CommandButton3.Caption = "GİZLE" Then
CommandButton3.Caption = "GÖSTER"
Sheets("Sayım").Visible = False
Else
CommandButton3.Caption = "GİZLE"
Sheets("Sayım").Visible = True
End If

End Sub

Private Sub CommandButton4_Click()
On Error Resume Next
X = InputBox("Şifrenizi giriniz", "ŞİFRE")
If Not X = 444 Then Exit Sub
If CommandButton4.Caption = "GİZLE" Then
CommandButton4.Caption = "GÖSTER"
Else
CommandButton4.Caption = "GİZLE"
End If
kul4 = Array("Zayi_1", "Zayi_2", "Zayi_3", "Zayi_4")
For a = 0 To 3
With Sheets(kul4(a))
If .Visible = False Then
.Visible = True
ElseIf .Visible = True Then
.Visible = False
End If
End With
Next a
End Sub
 
Katılım
10 Nisan 2008
Mesajlar
578
Excel Vers. ve Dili
2000,2003,2007
Hocam merhaba,

Dosyayı incelemeniz mümkünmü..Göndermiş kod diğer şifreli sayfalarıda açıyor...

syg,
E.ALAN
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,727
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Üstteki mesjımdaki kodu güncelledim. İncelermisiniz.
 
Katılım
10 Nisan 2008
Mesajlar
578
Excel Vers. ve Dili
2000,2003,2007
Korhan hocam hezamanki gibi mükemmelsiniz...Tam istediğim bigi...Teşekkürederim.

Saygılarımla.
E.ALAN
 
Katılım
10 Nisan 2008
Mesajlar
578
Excel Vers. ve Dili
2000,2003,2007
Hocam tekrar merhaba,

For X = 1 To Sheets.Count
With Sheets(CStr(X))

Vermiş olduğunuz kodlarda şu şekilde değişikliği fark ettim...Rica etsem Kodun Açıklamasını yapmanız mümkünmü..

E.ALAN
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,727
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Gizlemek istediğiniz sayfalar 1-31 arası olduğu için kodu bu şekilde düzenledim. İlk önerdiğim kodda Sheets(X) şeklinde sayfanın index yani konum sıra numarasını kullanarak gizleme işlemini yaptırmıştım. Çünkü çalışmanızda başka sayfaların olduğunu belirtmemiştiniz. İkinci önerdiğim kodda ise sayfanın adını kullanarak gizleme işlemi yaptırdım. Buradaki Cstr fonksiyonu değişkeni String ifadeye dönüştürür.

Bunu şu şekilde anlayabilirsiniz. Makro kaydet yöntemi ile "1" isimli sayfayı seçip kaydı durdurup kodu incelediğinizde aşağıdaki şekilde bir satır oluşur.

Kod:
Sheets("1").Select
Gördüğünüz gibi 1 değer tırnak içinde yapılandırılmıştır. Buda sayfanın adını ifade etmektedir.

Eğer aynı kodu aşağıdaki şekilde yazarsanız bu sefer çalışmanızdaki ilk sıradaki sayfa seçilmiş olur.

Kod:
Sheets(1).Select
Kodlar ne kadar birbirine benzesede birisi "1" isimli sayfayı seçerken bir diğeri ise 1 index numarasına sahip sayfayı seçmektedir.

İşte Cstr fonksiyonu ile biz döngüdeki X değerini tırnak içine aldırmış oluyoruz.

Aynı işlemi aşağıdaki şekillerde de yapabilirdik.

Kod:
Sheets("" & X)
Kod:
Sheets(X.Text)
Umarım açıklayıcı olmuştur.
 
Katılım
10 Nisan 2008
Mesajlar
578
Excel Vers. ve Dili
2000,2003,2007
Hocam vermiş olduğunuz bilgi için teşekkürederim..Sayenizde bir bilgiye daha sahip oldum..
Syg,
E.ALAN
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst