• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

Katılım
20 Şubat 2007
Mesajlar
700
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.
 
Merhaba,
Örneği deneyiniz.
Kod:
Dim x As Integer
Sub abcdef()
x = x + 1
MsgBox x
End Sub
 
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.
 
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?
 
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.
 
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.
 
İyi fikir. Örnek bir kod verebilir misiniz?
 
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
 
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.
 
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
 
Modul adını NewMacros olarak değiştirdim. Şimdi çalışıyor ancak hep "2" değerini döndürüyor.
 
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.
 
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.
 
Geri
Üst