Makro Kodunda Sabit Veri Dönüşümü Yapmak

Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Merhaba Arkadaşlar,
Makro kodunda hücre adresine bağlanmış bir veriyi, kodun içinde yine kod yardımıyla SABİT DEĞERE dönüştürmek mümkün mü ? biraz karmaşık bir iş :)
Normalde kullanmak istediğim kod "Donustur", sonra "DEGISTIR". Donustur çalışınca DEGISTIR kodundaki veriyi sabit değer çevirecek. Çevirebilir mi ?
Diğer bir deyişle E2 hücresinde yazılı olan veri DEGISTIR kodu içinde [E2] olarak değil, kod tarafından sabit değere dönüştürülerek "X10W26" yer alabilir mi ?


223843
 

Ekli dosyalar

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
5 defa okudum hiç bir şey anlamadım .... 223848

.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben olayı şöyle anladım.

İlgili kod satırını VBA kodları ile değiştirme durumu..

Eğer durum böyleyse dosyanıza yeni bir modül ekleyip kodu uygulayıp çalıştırınız.

C++:
Option Explicit

Sub VBA_Kodunu_Degistir()
    Dim Metin As String, X As Integer
    
    Metin = "Range(""C2"") = """ & Range("E2").Text
    
    With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
        X = 1
        Do While X <= .CountOfLines
            If Trim(.Lines(X, 1)) = "Range(""C2"") = [E2]" Then
                .DeleteLines X
                .InsertLines X, Metin
            End If
            X = X + 1
        Loop
    End With
End Sub
 
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025

Üstad desteğiniz için teşekkür ederim. Kafadaki düşünceyi tam anlatması da biraz zor bir konu aslında. Şöyle ifade edeyim.

DEGISTIR kodunun ilk hali böyle
Sub DEGISTIR()
If Range("B2") > 10 Then
Range("C2") = "X10W26"
End If
End Sub


Sonra E2 hücresine MESSI yazacağım ve kod değiştirme özelliğine sahip kodu çalıştırınca DEGISTIR kodunun yeni hali aşağıdaki gibi olabilir mi ?
Sub DEGISTIR()
If Range("B2") > 10 Then
Range("C2") = "MESSI"
End If
End Sub

 
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Ben olayı şöyle anladım.

İlgili kod satırını VBA kodları ile değiştirme durumu..

Eğer durum böyleyse dosyanıza yeni bir modül ekleyip kodu uygulayıp çalıştırınız.

C++:
Option Explicit

Sub VBA_Kodunu_Degistir()
    Dim Metin As String, X As Integer
   
    Metin = "Range(""C2"") = """ & Range("E2").Text
   
    With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
        X = 1
        Do While X <= .CountOfLines
            If Trim(.Lines(X, 1)) = "Range(""C2"") = [E2]" Then
                .DeleteLines X
                .InsertLines X, Metin
            End If
            X = X + 1
        Loop
    End With
End Sub
Üstad ilk denediğimde yazdığınız kodu iyi uygulamadığım için olmamıştı ama sonra oldu. Ama şöyle bir durum oldu : DEGISTIR kodunu değiştirdi gerçekten ama 1 kere değiştiriyor. Fakat bu durum sürekli olsa, 2. ye, 3. ye de değişmesi sağlanabilir mi ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben sizin hiç gayret göstermediğinizi gözlemliyorum.

Hep balık bekliyorsunuz...

Bu tarz küçük revizeleri artık yapabiliyor olmalısınız.

Aşağıdaki sorgu satırını bir sonraki gibi yaparsanız sonuca ulaşabilirsiniz.

Eski hali ; If Trim(.Lines(X, 1)) = "Range(""C2"") = [E2]" Then

Yeni hali ; If Trim(Left(.Lines(X, 1), 13)) = "Range(""C2"") =" Then
 
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Ben sizin hiç gayret göstermediğinizi gözlemliyorum.

Hep balık bekliyorsunuz...

Bu tarz küçük revizeleri artık yapabiliyor olmalısınız.

Aşağıdaki sorgu satırını bir sonraki gibi yaparsanız sonuca ulaşabilirsiniz.

Eski hali ; If Trim(.Lines(X, 1)) = "Range(""C2"") = [E2]" Then

Yeni hali ; If Trim(Left(.Lines(X, 1), 13)) = "Range(""C2"") =" Then
Üstad gerçekten mükemmelsiniz, tebrik ve takdir ediyorum sizi gönülden.
İnanın bir mesaj yazmadan önce hatta konu açmadan önce defalarca ve saatlerce ön çalışma yapıyorum, önceki kodlardan uyarlamalar yapıyorum.
Farklı çözüm yolları deniyorum. diğer bir deyişle foruma açtığım konunun belki 10 katı adet konuyu açmaya niyetlenmeden önce sizler gibi profesyonel yöntemlerle olmasa da kendimce çözüyor ve konuyu açmaktan vazgeçiyorum. Ama bazen çaba yetmiyor takdir edersiniz.
Çok kıymetli katkılarınız için tekrardan teşekkür eder, kıymetli zamanınızı ayırıp bizlere feyz olduğunuz için minnettar olduğumuzu bilmenizi isterim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
2007 yılından bu yana en azından döngüleri ve içindeki sorgulama tekniklerini öğrenmeniz gerekirdi diye düşünüyorum. Nette ve forumda bolca (Ücretli+Ücretsiz) kaynak var. Öğrenmemeniz için ben bir sebep göremiyorum. Biraz araştırmak gerekiyor.

Bunu neden sürekli ifade ettiğimi açıklamak isterim;

Forumda uzun süre vakit geçiren üyelerimizde açıkçası ben bu beklentiye giriyorum. Çünkü forumda sorulara tek bir cevap verilmiyor. Alternatif bakış açıları sunuluyor. Üyelerimizin bu bakış açılarını kavrayıp kendi bakış açılarını da harmanlayıp gelişimlerini görmek istiyoruz. Hele mesaj sayıları binleri aşmış üyelerimizin artık soru sormak yerine soru cevaplama aşamasına adım atmaları gerekiyor. Bu bir zaman sonra kendilerindeki gelişimi de görmelerine sebep olacaktır ve kendilerine güvenleri artacaktır.

Excel kullanmaya ihtiyacı olan üyelerimiz eğer bu adımları atmazlarsa işin bir esprisi kalmıyor. Hep birilerine muhtaç kalıyorlar.

Kalın sağlıcakla...
 
Üst