değişkenin gösterdiği değişken

Katılım
20 Temmuz 2005
Mesajlar
6
Diyelim ki

deg1="excel.web.tr"

deg2="deg"&trim(str(1))

deg2 'yi ne ile kullanmalıyım ki sonuç "excel.web.tr" olsun. ......(deg2) gibi.

Excelde bunu DOLAYLI ile yapıyoruz ama INDIRECT'i VB'de ya ben kullanamadım veya başka bir şey var.

Teşekkürler.
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
Soruyu 3 kere okumama rağmen pek bir şey anlamadım. Biraz daha açar mısınız?
 
Katılım
20 Temmuz 2005
Mesajlar
6
Ã?zür dilerim sizi 3 kere meşgul ettiğim için. Konu bana tanıdık ya herkes de anlar zannettim.

Þimdi, a1 hücresinde B1, B1 hücresinde "excel.web.tr" yazıyorsa C1 hücresinde =Dolaylı(B1) yazdığımızda C1'in değeri "excel.web.tr" oluyor.

Yani biz DOLAYLI ile a1 hücresinin işaret ettiği hücreye başvuruyoruz. C1 deki formulü değiştirmeden A1 in içeriğini değiştirerek C1 in değerini değiştirebiliyoruz. Umarım buraya kadar tamamdır.

Ben bu özelliği VB ile kullanmak istiyorum. deg2="deg"&trim(str(1)) formulündeki 1 for-next döngüsü içinde olacak ve aslında sabit değil mesela i değişkeni olacak.

Biraz daha açıklayıcı olmuştur inşALLAH. Yani kendi iyiliğim için.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
sanırım siz böyle bir şey yapmak istiyorsunuz

Sub d()
Dim deger(3)
deger(1) = 10
deger(2) = 20
deger(3) = 30
For x = 1 To 3
sonuc = sonuc + deger(x)
Next
MsgBox sonuc

End Sub
 
Katılım
20 Temmuz 2005
Mesajlar
6
Anlatamadım. Ama nasıl anlatacağımı da şaşırdım.

İki tane değişken adımız var. Birincisine bir sabit atanıyor.

deg1=123

İkincisine birinci değişkenin adı atanıyor.

deg2="deg1"

Bu noktada bir fonksiyon ya da her neyse yardımıyla deg2 değişkenini kullanarak 123 değerine ulaşmak istiyorum.

Biraz daha açarsak;

dg1=456
dg2=789
dg3=901

dg="dg1" (veya yukardaki değişkenlerden herhangi birinin ADI)

snc=INDIRECT(dg) ---->INDIRECT tamamen örnek olsun diye yazılmıştır.

bunun sonucunda benim görmek istediğim dg ye yazdığım dg1 değişkeninin adı değilde dg1 in değeri olan 456.

Açıklayabildim mi acep?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
En iyi çözüm sn veyselemre'nin gösterdiği çözümdür. Yani deg2="deg" & 1 dediğinizde deg2=deg1 demek değildir. Burada "deg" & 1 bir metin değeri olarak algılanacaktır. Bu sebeple en iyi yol dim kullanarak değişkeni boyutlandırmaktır. Bu durumda örneğin; aşağıdaki gibi yazarsanız sonuç elde edersiniz.

dim deg(2)
deg(1)="www.excel.web.tr"
a=1
deg(2)=deg(a)
 
Katılım
20 Temmuz 2005
Mesajlar
6
Ne çok vaktinizi aldım. Ama son bir deneme daha yapacağım. Kendi dosyamdan sorun oluşan kısmı ayıklayım dedim ama onu anlatmak bundan da uzun sürecekti şöyle bir maketini yapiim dedim.

Sub dene()
dg1 = "Helal sana"
dg2 = "Yuf sana"
bunuanlatmayibasardimmi = True
For j = 1 To 2
If bunuanlatmayibasardimmi Then i = 1
'Burada daha karışık işler yapılıyor aslında. Böyle tek bir satır değil.
Else: i = 2
End If
dg = "dg" & Trim(Str(i))
MsgBox ("Amma uğraştırdın " & dg)
bunuanlatmayibasardimmi = False
Next
End Sub

Burada eğer i=1 ise "Amma uğraştırdın Helal sana " yazsın istiyorum ama o ne yazıyor "Amma uğraştırdın dg1" yazıyor. Ben dg1 miyim androit ismi gibi.

Bu da işe yaramazsa sormaktan vazgeçiyorum. İlginize teşekkürler.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi deneyin.

[vb:1:0053b6f50e]Sub dene()
dim dg(2)
dg(1) = "Helal sana"
dg(2) = "Yuf sana"
bunuanlatmayibasardimmi = True
For j = 1 To 2
If bunuanlatmayibasardimmi Then i = 1
'Burada daha karışık işler yapılıyor aslında. Böyle tek bir satır değil.
Else: i = 2
End If
dg = dg(i)
MsgBox ("Amma uğraştırdın " & dg)
bunuanlatmayibasardimmi = False
Next
End Sub
[/vb:1:0053b6f50e]

Not:kod içindeki mesajlar pek hoş değil, umarım şaka amaçlıdır.
 
Katılım
20 Temmuz 2005
Mesajlar
6
Boyutlu değişkenle halledebileceğimi biliyordum. Ama kullanıcıya bırakmayı düşündüğüm bazı alanlardan dolayı bunu kullanmak istemiyordum. Excel deki DOLAYLI (VB deki karşılığı yani), C , pascal gibi dillerdeki pointer, Fox daki & işareti gibi bir özellikti benim aradığım, demek ki yokmuş.

Not: Kodun içindeki mesajları kodun içinde değiştirmek bence daha naif bir davranış olurdu.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
İşin VBA kısmıyla ilgili olarak bir alternatif;

[vb:1:41a53d5d4d]Sub dene3()
dg1 = "Helal sana"
dg2 = "Yuf sana"
bunuanlatmayibasardimmi = False
dg = IIf(bunuanlatmayibasardimmi, dg1, dg2)
MsgBox ("Amma ugrastirdin " & dg)
End Sub
[/vb:1:41a53d5d4d]
 
Üst