Properties sayısı ile textbox belirlemek

Katılım
8 Nisan 2005
Mesajlar
789
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhaba
Kod:
Sheets(ComboBox1.Value).Cells((ComboBox2.ListIndex + 1) * 3 + 1, 3 + say).Value _ 
= Controls("Textbox" & say + 1).Value
Yukarıdaki kodda Comb1 ile sayfayı, Comb2 ile hücreyi buluyorum (sütun sayısını "say" değişkeni ile) , ancak 1 den 31'e kadar olan Textboxları "say" değişkeni döngüsü ile bulduğum hücrelere yazdıramıyorum.
Macro çalışıyor, hiç hata vermiyor ama kayıt yapmıyor
Aşağıdaki gibi değişken kullanmazsam, yani 30 satır kod yazarsam sorun yok.
Kod:
Sheets(ComboBox1.Value).Cells((ComboBox2.ListIndex + 1) * 3 + 1, "D").Value _ 
=TextBox1.Value
Sorunun Controls("Textbox" & say + 1).Value tanımındaki Controls da olduğunu sanıyorum.
Yardım rica ediyorum.
 

Ekli dosyalar

Son düzenleme:

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,
Bence sorun say+1 şeklindeki ifadede.
Çünkü, döngü For say = 1 To 31 şeklinde. Döngünün sonunda(31.döngüde) say+1, 32 değerini alıyor. Halbu ki 31 tane TextBox var ve hata ile sonlanıyor.

Çözüm: Döngü For say = 1 To 30 şeklinde olmalı. (say+1 son -31. textboxu- ifade etmiş olur)
 
Katılım
8 Nisan 2005
Mesajlar
789
Excel Vers. ve Dili
Excel 2010 Türkçe
Sn dEdE
1 To 30 değil de, say+1 deki +1'i kaldırdım düzeldi. Daha doğrusu her ikisi de hata yapmamasını sağlıyor. Önümü görmemi sağladınız, +1'i kaldırmazsam bu defa Textbox1'i kaydedemeyecektim.
Teşekkür ederim.
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
...1 To 30 değil de, say+1 deki +1'i kaldırdım düzeldi.
...
Merhaba,
Amacınızı bilmediğim için öyle yazdım. Tabii ki en doğrusunu siz bulacaksınız.
Sorunun çözüldüğüne sevindim.
İyi çalışmalar.
 
Katılım
8 Nisan 2005
Mesajlar
789
Excel Vers. ve Dili
Excel 2010 Türkçe
Sn dEdE
Sorun sizin söylediğiniz gibi kod'un Textbox32 'yi aramasıydı, bakar bakmaz gördünüz sağolun, dediğiniz gibi sorun çözüldü.

Aynı çalışmada başka bir satırda hücre tariflerken problem yaşadım.
Kod:
Dim t32 As Integer
t32 = ((ComboBox2.ListIndex + 1) * 3) - 1
...
t32'yi kullandığım kod
TextBox1 = Format(Sheets(ComboBox1.Value).Range[COLOR=darkred]("H"[/COLOR] & t32 + 2).Value, "#,##0.00")
"H" sütunu ve takip eden sütunlar için sayaç oluşturarak ve yine Textbox sayılarını da bu döngüde elde ettiğim sayı ile ifade etmek istiyorum
Kod:
Controls("Textbox" & say) = Format(Sheets(ComboBox1.Value).Range(say+7 & t32 + 2).Value, "#,##0.00")
Hata veriyor. Sanıyorum Range(say+7 & t32 + 2).Value ile hücreyi tanımlayamıyorum.
İlginize şimdiden teşekkür ederim.
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
...... Sanıyorum Range(say+7 & t32 + 2).Value ile hücreyi tanımlayamıyorum....
Merhaba,
Sizin de söylediğiniz gibi sorun Range tanımlamasında.
Yukarıdaki örneğinizi inceleyelim. Örneğin;
say=2
t32=5 olsun. Bu durumda; 2+7+5+2=16 yani Range(16) olur ki bu yanlış bir tanımlamadır.
Range(kolon&satır) şeklinde tanımlanmalıdır. Range("A1"), Range("A1:B7") gibi.
Dosyanızı incelemeden daha fazlasını söylemem olası değil ama tek hücreyi tanımlamaya çalışıyorsanız range yerine Cells kullanabilirsiniz.
Cells(1,1) veya Cells(1,"A"), cells(değişken,"A"),cells(değişken,değişken) gibi kullanabilirsiniz.
Hoşçakalın.
 
Katılım
8 Nisan 2005
Mesajlar
789
Excel Vers. ve Dili
Excel 2010 Türkçe
Sn dEdE merhaba,
Önce teşekkür ederim.
t32 neredeyse sabit bir sayı, Ay sayısını 3'le çarpıp 1 eksiltiyor ve satır sayısını buluyor. Her koda ayrı ayrı ((ComboBox2.ListIndex + 1) * 3) - 1 yazmamak için oluşturdum. Açıklama yapmalıydım.
Dosya ekleyemedim, biraz şişkin. Ayrıca teferruatla sizleri meşgul etmek istemedim.
Cells uygulayınca en azından hata vermeden işlem yaptı ama verileri istediğim yerden alamadım şimdilik. Yaklaşık 85 textboxa değişik döngüler uyguluyorum. Belli ki sizi daha rahatsız edeceğim.
Selamlar,
 
Üst