Makro içindeki değişkeni güncellemek

Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Merhabalar,
Word makromu çalıştırıp sonlandırdığımda içindeki bir değişkenin otomatik olarak 1 artmasını ve yeniden çalıştırdığımda o değer ile başlamasını nasıl sağlayabilirim.

Mesela basitçe şöyle bir makrom var:

Sub abcdef()

x = 1
....
....
x= x+1
End sub

İkinci sefer çalışmaya x= 2 olarak başlamasını istiyorum.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Merhaba,
Örneği deneyiniz.
Kod:
Dim x As Integer
Sub abcdef()
x = x + 1
MsgBox x
End Sub
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Teşekkür ederim ama aradığım bu değil. Makro başında tanıttığım x değerinin 2 olarak değişmesini istiyorum. Böylece daha sonraki çalıştırmamda ilk x değeri 2 olarak başlayacak.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Teşekkür ederim ama aradığım bu değil. Makro başında tanıttığım x değerinin 2 olarak değişmesini istiyorum. Böylece daha sonraki çalıştırmamda ilk x değeri 2 olarak başlayacak.
Birinci çalıştırmada x = 1, ikinci çalıştırmada x = 2, üçüncü çalıştırmada x = 3, dördüncüde x=4 şeklinde gitmeyecek mi?
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Evet o şekilde olacak. Ama aynı oturum içinde değil. Bir kez çalıştırıp bitireceğim. Daha sonra belirsiz bir zamanda yine çalıştıracağım.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Veriyi sürekli hafızada tutmaya yarayacak bir yöntem var mı bilemiyorum. Excel olsa bir hücreden yardım alınabilirdi. Word için şöyle bir öneride bulunabilirim. Makro çalıştığında C: altına geçici bir text dosyası oluşturup ilk satırına 1 rakamını yazdırırsınız. Sonraki çalıştırmada makro bu dosyanın ilk satırını okur ve bu rakama 1 ekler. Bu şekilde bir text dosyasından yardım alarak çözüm üretebilirsiniz.
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
İyi fikir. Örnek bir kod verebilir misiniz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,202
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki yöntemi kullanabilirsiniz.

Kodun çalışması için ARAÇLAR-MAKRO-GÜVENLİK menüsünü çalıştırın.
Açılan pencerede "Güvenilen Yayımcılar" sekmesini açın.
En alttaki "Visual Basic Project Erişimine Güven" seçeneğini aktif hale getirin.

Kod içinde kırmızı renkle belirttiğim değerler güncellenmesini istediğini kod bloğununun satır numarasını ifade etmektedir.
Benim önerdiğim kod içinde "X = 1" satırı 5. sıradadır. Siz bu değeri kendinize göre düzenleyiniz.


Kod:
Option Explicit
 
Sub TEST()
    Dim X As Integer, VERİ As Integer
    X = 1
    VERİ = X + 1
    MsgBox VERİ
    ThisDocument.VBProject.VBComponents("Module1").CodeModule.DeleteLines [COLOR=red]5[/COLOR]
    ThisDocument.VBProject.VBComponents("Module1").CodeModule.InsertLines [COLOR=red]5[/COLOR], "    X=" & VERİ
End Sub
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Teşekkür ederim. Bende 2007 yüklü.
"VBA projesi nesne modeli erişimine güven" kutusu tıklı. Burası doğruysa makro çalışınca
Kod:
ThisDocument.VBProject.VBComponents("Module1").CodeModule.DeleteLines 5
satırında run time errror 9
subscript out of range hatasını veriyor ve duruyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,202
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Kırmızı renkli bölümü kontrol edin. Makronuzun bulunduğu modül adıyla aynı olmalıdır.

Kod:
ThisDocument.VBProject.VBComponents("[COLOR=red]Module1[/COLOR]").CodeModule.DeleteLines 5
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Modul adını NewMacros olarak değiştirdim. Şimdi çalışıyor ancak hep "2" değerini döndürüyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,202
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Hep 2 değerini döndürüyorsa yanlış satır değeri tanımlamış olabilirsiniz. Size üstteki mesajımda da belirtmiştim.

Koddaki kırmızı değer değiştirmek istediğiniz değişkenin bulunduğu satır numarasıdır. Kodunuzun bulunduğu penceredeki boş satırlar dahil en üstten itibaren sayıp kod içindeki kırmızı değeri saydığınız değerle değiştirin.
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Bendeki makro modülünde 45-50 adet makro vardı. Hepsini hesaba katınca satır numarası problemi düzeldi. Çok teşekkür ederim Korhan bey.
 
Üst