[]
Excel VBA - Destek
Herkese merhaba,
Yazmis oldugum VBA'yi gelirstirmek istiyorum ancak nasil yapacagim konusunda bilgim yok. Yardimci olursaniz sevinirim.
Kodlamadaki amacim su sekilde. Ekteki fotoda da göreceginiz gibi 4 adet sekme (sheet) bulunmakta. 4. sekmede butona basinca diger üc sekmenin isimlerini benim belirledigim hücreye (örnek: D5'den itibaren) yazmasini ve bitonun bulundugu sayfa'nin ismini yazmamasi gerekiyor. Ancak benim kodumda direk A2'den baslamakta ve bütün sekmelerin isimlerini yazmakta.
Asagida kodu bulabilirisniz.
Yardimlariniz icin simdiden tesekkürler.
Sub PageNames()
Dim IngSheets As Long
IngSheets = ThisWorkbook.Sheets.Count
For i = 1 To IngSheets
'ThisWorkbook.Sheets("Tabelle1").C
ActiveWorkbook.ActiveSheet.Cells(1 + i, 1) = ThisWorkbook.Sheets(i).Name
Next i
End Sub
Yazmis oldugum VBA'yi gelirstirmek istiyorum ancak nasil yapacagim konusunda bilgim yok. Yardimci olursaniz sevinirim.
Kodlamadaki amacim su sekilde. Ekteki fotoda da göreceginiz gibi 4 adet sekme (sheet) bulunmakta. 4. sekmede butona basinca diger üc sekmenin isimlerini benim belirledigim hücreye (örnek: D5'den itibaren) yazmasini ve bitonun bulundugu sayfa'nin ismini yazmamasi gerekiyor. Ancak benim kodumda direk A2'den baslamakta ve bütün sekmelerin isimlerini yazmakta.
Asagida kodu bulabilirisniz.
Yardimlariniz icin simdiden tesekkürler.
Sub PageNames()
Dim IngSheets As Long
IngSheets = ThisWorkbook.Sheets.Count
For i = 1 To IngSheets
'ThisWorkbook.Sheets("Tabelle1").C
ActiveWorkbook.ActiveSheet.Cells(1 + i, 1) = ThisWorkbook.Sheets(i).Name
Next i
End Sub
if yapısı ekleyeceksin. "Eğer Sheets(i) sayfası ile aktif sayfa adı aynı ise hiçbir şey yapma, değilse (else) sayfa adını yaz."
Dim IngSheets As Long
IngSheets = ThisWorkbook.Sheets.Count
For i = 1 To IngSheets
'ThisWorkbook.Sheets("Tabelle1").C
If ThisWorkbook.Sheets(i).Name = ActiveWorkbook.ActiveSheet.Name Then
' Burada hiçbir şey yapılmayacak
Else
ActiveWorkbook.ActiveSheet.Cells(1 + i, 1) = ThisWorkbook.Sheets(i).Name
End If
Next i
yukarıdakini yaparsan bulunduğun sayfa adını yazmaz ama ilgili hücre boş kalır. yani arada bir sayfa ise boşluk görünür. bunun sebebi de sayfa isimleri için kullandığın indeks ile (sheets(i) indeksi yani), sayaç için kullandığın indeks aynı.
bunun yerine j değişkeni tanımlayıp 'Else' yapısının altına j = j + 1 ifadesi eklersen sayaç yazdırdığı sayfa için bir artar ve boş sayfa kalmaz.
Kısacası;
Else
ActiveWorkbook.ActiveSheet.Cells(j, 1) = ThisWorkbook.Sheets(i).Name
j = j + 1
End If
şeklinde olmalı.
Dim IngSheets As Long
IngSheets = ThisWorkbook.Sheets.Count
For i = 1 To IngSheets
'ThisWorkbook.Sheets("Tabelle1").C
If ThisWorkbook.Sheets(i).Name = ActiveWorkbook.ActiveSheet.Name Then
' Burada hiçbir şey yapılmayacak
Else
ActiveWorkbook.ActiveSheet.Cells(1 + i, 1) = ThisWorkbook.Sheets(i).Name
End If
Next i
yukarıdakini yaparsan bulunduğun sayfa adını yazmaz ama ilgili hücre boş kalır. yani arada bir sayfa ise boşluk görünür. bunun sebebi de sayfa isimleri için kullandığın indeks ile (sheets(i) indeksi yani), sayaç için kullandığın indeks aynı.
bunun yerine j değişkeni tanımlayıp 'Else' yapısının altına j = j + 1 ifadesi eklersen sayaç yazdırdığı sayfa için bir artar ve boş sayfa kalmaz.
Kısacası;
Else
ActiveWorkbook.ActiveSheet.Cells(j, 1) = ThisWorkbook.Sheets(i).Name
j = j + 1
End If
şeklinde olmalı.
- himmet dayi (06.03.21 12:27:47 ~ 12:37:43)
1