• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Aktif Olmayan Sayfada Veri Aratıp Veri Çekme

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
70
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
Dim Ara1 As Range
Set Ara1 = Sheets("INFO").Cells.Find("BİM İsmi")

f1 = WorksheetFunction.CountIf(Sheets("INFO").Range(Cells(1, Ara1.Column), Cells(100, Ara1.Column)), "<>") - 1

'If f1 = 1 Then
'DetayBox1.AddItem Cells(Ara1.Row + 1, Ara1.Column)
'Else
'DetayBox1.List = Sheets("INFO").ListObjects("BİM").ListColumns(2).DataBodyRange.Value
'End If

Merhabalar,
INFO sayfası hariç başka bir sayfa aktif olunca olunca f1 satırında hata veriyor. Bu arada aslında ben Range(Cells(1, Ara1.Column), Cells(100, Ara1.Column)) ile aralık verdim ama aslında "Bim ismi" yazan hücrenin bulunduğu bütün sütunda boş olmayan hücreleri saydırmayı hedeflemiştim. Beceremediğimden dolayı 100 e kadar olacak şekilde yazdım. Birde öğrenmek için soruyorum find ile bulduğu değerin hücre satır ve sütün değerlerini ara1.row ara1.Column bulabiliyorum ama sütünün harf olarak değerini nasıl bulabilirim. Yardımcı olabilirseniz sevinirim.
 
Son düzenleme:
Hata veren satır yerine aşağıdaki kodu yazıp deneyiniz.

C++:
With Sheets("INFO")
f1 = WorksheetFunction.CountIf(.Range(.Cells(1, Ara1.Column), .Cells(100, Ara1.Column)), "<>") - 1
End With

Sütun harfini almak içinse aşağıdaki kodu deneyiniz.

C++:
Sütun = Split(Ara1.Address, "$")(0)
 
Hata veren satır yerine aşağıdaki kodu yazıp deneyiniz.

C++:
With Sheets("INFO")
f1 = WorksheetFunction.CountIf(.Range(.Cells(1, Ara1.Column), .Cells(100, Ara1.Column)), "<>") - 1
End With

Sütun harfini almak içinse aşağıdaki kodu deneyiniz.

C++:
Sütun = Split(Ara1.Address, "$")(0)

Teşekkür ederim @Korhan Ayhan Bey, hata düzeldi fakat split komutunu anlayamadım açıkcası oda benden kaynaklanıyor. :)
 
Mesela
Ara1=Range("A55") iken
Ara1.Address =$A$55
Split(Ara1.Address, "$")= {A ,55} sonucu döndürür
Dizinin ilk elemanı olan
Split(Ara1.Address, "$")(0)="A" yani sütun etiketini çevirir.
 
Mesela
Ara1=Range("A55") iken
Ara1.Address =$A$55
Split(Ara1.Address, "$")= {A ,55} sonucu döndürür
Dizinin ilk elemanı olan
Split(Ara1.Address, "$")(0)="A" yani sütun etiketini çevirir.

@ÖmerFaruk Bey, çok teşekkür ederim çok açıklayıcı oldu. Ben çıktıyı görebilmek adına msgbox Split(Ara1.Address, "$")(0) yazdım boş çıktı. msgbox Split(Ara1.Address, "$")(1) yapınca geldi. Yardımlarınız için Korhan Beye de size de çok teşekkürler.
 
Mesela
.......
...
Split(Ara1.Address, "$")= {A ,55} sonucu döndürür
Dizinin ilk elemanı olan
Split(Ara1.Address, "$")(0)="A" yani sütun etiketini çevirir.



$A$55 ifadesini göz önüne aldığımızda; geriye 3 elemanlı 0 (sıfır) tabanlı bir dizi döner, 1. eleman "NULL" yani boş olur. Çünkü; string ifadesinde 1. "$" karakterinden önce başka bir karakter yoktur.

{NULL,A,55}

Bu nedenle; Sütun harfi 0 (sıfır) tabanlı dizinin, 1 No'lu index'e sahip olan elemanıdır.

Tıpkı, A1 hücresine $A$55 yazdıktan sonra metni sütunlara dönüştür fonksiyonunda ayraç olarak "$" kullandığımızda ortaya çıkan sonuç gibi....

.
 
Telefondan cevap yazınca dikkatsiz yazmışım. Neyse ki arkadaşlarım destek olmuşlar.
 
Geri
Üst