Çözüldü SUB İçinde Diziden Gelen Veriyi Görebilmek

merakli

Site Üyesi
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
VBA:
You must log in to view content
(9 satır)

VBA bilgim başlangıç düzeyinde.
Başka bir dosyadan ADO ile veri çekmek ile ilgili üstteki kodun şu kısmını anlamaya/öğrenmeye çalışıyorum.

VBA:
You must log in to view content
(1 satır)

database.xlsm isimli dosyadaki Cizelge isimli sayfadan A3:Z sütunları arasında kalan satırlardaki bilgileri aktif olan excel dosyamın AJ:2 hücresinden başlayarak sayfaya çekip oradan gerekli verileri alıp AJ:2 hücresinden sonraki kısmı temizliyorum....


Resize(UBound(T, 1), UBound(T, 2)) = T

Bu kısmın işleyişini gözümde canlandıramıyorum.

Çünkü T değişkeninin içini nasıl göreceğimi bilmiyorum
UBound'un en büyük elemanı verdiğini biliyorum.

Ama T değişkeninin içini göremediğim için bu gelen 1 ve 69 gibi değerin neyi ifade ettiğini anlamış değilim.

Bu kısmı anlamamı sağlayacak bilgileri benimle paylaşabilir misiniz?

T değişkeniyle gelen verileri örneğin A:1 hücresine yazdırıp inceleyebilir miyim?
ya da nasıl inceleyebilirim?


.Resize(UBound(T, 1), UBound(T, 2))

Bu kısım tam olarak neyi nasıl bir işlem ile yapmaktadır?
 
69 ve 26'nın kesiştiği hücrelere T değişkeninin ürettiği sonucu yazıyor.

Düzeltme:
Pardon resize komutu varmış.
Dosyayı görmek daha doğru yorum için faydalı olabilir.
 
.Resize(UBound(T, 1), UBound(T, 2))

Bu kısım tam olarak neyi nasıl bir işlem ile yapmaktadır?
Merhaba,
Ubound bir dizi boyutunun üst sınırını bulmak için kullanılır.
Sizin örneğinizde iki boyutlu bir dizinin üst sınırları bulunuyor. İki boyutlu diziyi birden çok sütun ve satırdan oluşan bir excel tablosu olarak düşünebilirsiniz. Burada kullanılan Ubound kodlarıyla tablo boyutu hesaplanmış oluyor. (satır sayısı*sütun sayısı)
Resize komutu ile de belirlenen bir aralık satır sütun değerleri girilerek yeniden boyutlandırılır. Örneğin Range("A1").Resize(5,10) komutunu yazdığımız zaman satırı 5 olarak, sütunu 10 olarak boyutlandır demiş oluruz. Yani A1:J5 aralığını kastederiz.
Sizin kodlarınızda veri T değişkenine alınıyor.
Ubound ile T değişkenine atanan verinin üst sınırı bulunuyor, yani tablo olarak kaplayacağı satır ve sütun alanı (69*26 gibi)
Resize ile verilerin tam olarak sığması için diziye uygun tablo alanı oluşturularak tek seferde T dizisi sayfaya aktarılıyor.
Umarım açıklayıcı olmuştur...
 
Merhaba,
Ubound bir dizi boyutunun üst sınırını bulmak için kullanılır.
Sizin örneğinizde iki boyutlu bir dizinin üst sınırları bulunuyor. İki boyutlu diziyi birden çok sütun ve satırdan oluşan bir excel tablosu olarak düşünebilirsiniz. Burada kullanılan Ubound kodlarıyla tablo boyutu hesaplanmış oluyor. (satır sayısı*sütun sayısı)
Resize komutu ile de belirlenen bir aralık satır sütun değerleri girilerek yeniden boyutlandırılır. Örneğin Range("A1").Resize(5,10) komutunu yazdığımız zaman satırı 5 olarak, sütunu 10 olarak boyutlandır demiş oluruz. Yani A1:J5 aralığını kastederiz.
Sizin kodlarınızda veri T değişkenine alınıyor.
Ubound ile T değişkenine atanan verinin üst sınırı bulunuyor, yani tablo olarak kaplayacağı satır ve sütun alanı (69*26 gibi)
Resize ile verilerin tam olarak sığması için diziye uygun tablo alanı oluşturularak tek seferde T dizisi sayfaya aktarılıyor.
Umarım açıklayıcı olmuştur...
Teşekkür ederim. Açıklayıcı oldu. Bende deneyerek bu kısmını anlamış oldum.
Ancak hala T değişkeninin içini yani 26 satırlı ve 69 sütunlu bu değişkenin içindeki değerleri görünür hale getirip inceleyemedim.
Bu veriler diğer excel dosyasından ado ile gelen veriler. sql ile bu veriler içinde işlem yapılıyor bu işlemleri yapmak için msqbox içine ya da aktif shets içinde bir hücreye yazdırmak istiyorum ama başaramadım
 
Ubound(T, 1) dizinin birinci boyutunun en üst değerini, Ubound(T, 2) ile de ikinci boyutunun en üst değerini bulmuş olursunuz.
Verdiğiniz kod, T dizisini AJ2 hücresinden başlayarak belirtilen boyutlardaki (dizinin boyutları) alana yazmış oluyor.
Ubound(T, 1) ve Uound(T, 2) dizinin genişliği ve yüksekliği yani.

Dizi ilemanlarını görmek için VBA ekranında; VIEW >> LOCALS seçeneğini aktif edin. Orada dizinin elemanlarını görebilirsiniz.
Bir elemanı MsgBox ile görmek isterseniz MsgBox T(3, 5) yazarsanız, belirtilen satır/sütundaki değeri ekrana alabilirsiniz ya da
[A1] = T(3, 5) diyerek dizinin ilgili elemanını A1 hücresine yazdırabilirsiniz.
 
Ubound(T, 1) dizinin birinci boyutunun en üst değerini, Ubound(T, 2) ile de ikinci boyutunun en üst değerini bulmuş olursunuz.
Verdiğiniz kod, T dizisini AJ2 hücresinden başlayarak belirtilen boyutlardaki (dizinin boyutları) alana yazmış oluyor.
Ubound(T, 1) ve Uound(T, 2) dizinin genişliği ve yüksekliği yani.

Dizi ilemanlarını görmek için VBA ekranında; VIEW >> LOCALS seçeneğini aktif edin. Orada dizinin elemanlarını görebilirsiniz.
Bir elemanı MsgBox ile görmek isterseniz MsgBox T(3, 5) yazarsanız, belirtilen satır/sütundaki değeri ekrana alabilirsiniz ya da
[A1] = T(3, 5) diyerek dizinin ilgili elemanını A1 hücresine yazdırabilirsiniz.

Teşekkür ederim @Ömer BARAN Bey aradığım özellik sanırım bu.
VIEW >> LOCALS seçeneğini aktif ettim. Ancak boş görünüyor.
Dizi deişkeninin verilerini görmek için formül içine bir şey yazacak mıyız?
Console.log - Debug.Print vb. gibi bir şey yazılıyor mu? şuan boş görünüyor

Sanırım F8 e basılınca çıkıyormuş
 
Moderatörün son düzenlenenleri:
Aradığım buydu çok teşekkürler
 

Ekli dosyalar

  • xxxxx.webp
    xxxxx.webp
    31.4 KB · Görüntüleme: 6
@merakli

Veri yığını çok büyük olmadığında kullanabileceğiniz bir örnek hazırlayayım dedim, yararlı olacaktır.

Eklediğim belgede, veri alanı bir makro ile diziye alınmaktadır (kırmızı düğme).

Veriler makroyla diziye alındıktan sonra, bu makrodan bağımsız olarak çalışan;
-- bir makroda, diğer makronun diziye aldığı veriler satır/sütun numarasına göre çağrılmakta (TURUNCU düğme),
-- diğer bir makroda da dizi elamanları döngüye sokularak koşula uyan dizi elemanı çağrılmakta (MAVİ düğme).
 

Ekli dosyalar

@Teşekkür ederim @Ömer BARAN Bey.
Bu bilgilerle artık hata aldığımda o hatanın nereden kaynaklandığını daha çabuk kaynağına inerek görebiliyorum.
Bazen çoğu kişi için çok basit olduğu için açıklanmaya değer olmayan bilgilere ulaşmak zor olabiliyor. ancak bu işlere yeni başlayan bir kişininde bunlara ulaşmasını bir hayli zorlaştırmış oluyor.
Tekrar teşekkürler
 
Konuyu başlatan
Site Üyesi
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
9
Üst