Bir Kez Çalışan Mesaj Kutusu

hakki83

Altın Üye
Katılım
30 Eylül 2021
Mesajlar
546
Excel Vers. ve Dili
Excel 2016 Türkçe 32 Bit
Altın Üyelik Bitiş Tarihi
30-09-2026
Merhaba

Fikir vermesi açısından bir örnek dosya ekledim. Dosyalarımı gönderdiğim yerlerde, msgbox ile açıklayıcı bilgi yazıyorum. Sayfaya girince msgbox 1 kez çalışıyor. Ama dosya kapanıp açılınca tekrar çalışıyor doğal olarak.

Fakat benim istediğim 1 kez çalıştıktan sonra, dosya kapanıp açılsa bile msgbox'ın bir daha çalışmaması.

Örnekteki kodu tarif ettiğim gibi değiştirebilir miyiz?
 

Ekli dosyalar

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,605
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Sayfada uygun bulacağınız bir hücreye bir değer girip MsgbBox görüntülendikten sonra silinebilir. Ben A1 'i tercih ettim. A1'e 1 yazıp dener misiniz?
Kod:
Private Sub Worksheet_Activate()
    If [A1] = 1 Then MsgBox "Bu dosya şu işe yarar, şunlar şunlar yapılmalıdır"
    [A1] = ""
End Sub
 

hakki83

Altın Üye
Katılım
30 Eylül 2021
Mesajlar
546
Excel Vers. ve Dili
Excel 2016 Türkçe 32 Bit
Altın Üyelik Bitiş Tarihi
30-09-2026
Dede hocam o zaman şöyle değiştirebilir miyiz?

A1’e 1 girerek değil de,
sayfa aktif olduktan sonra;
hücrelere herhangi bir veri girildiğinde (ya da herhangi bir hücre seçildiğinde) msgbox 1 kere çalışsın. Sonraki açılmalarda çalışmasın.
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,605
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,
Aşağıdaki kodu ilgili sayfanın kod bölümüne yapıştırınız.
Kod:
Private Sub Worksheet_Activate()
    Call Test
End Sub
Aşağıdakileri de bir modüle yapıştırınız. Bu kodlar modülün en üstünde olmalıdır. Modül adını kendinize göre değiştirebilirsiniz. Kodlar, kod satırını sildiği için önce örnek dosya üzerinde deneme yapmanızı öneririm.
Kod:
Sub Test()
    MsgBox "Bu dosya şu işe yarar, şunlar şunlar yapılmalıdır"
    ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.DeleteLines 2
End Sub
 

Korhan Ayhan

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

Dosyanızın bulunduğu klasöre "Kontrol.txt" adından bir dosya oluşturur ve MsgBox bir kez çalışır. "Kontrol.txt" dosyası silinirse MsgBox yeniden çalışır.

C++:
Private Sub Workbook_Open()
    If VBA.Dir(ThisWorkbook.Path & "\Kontrol.txt") = "" Then
        Set Dosya = VBA.CreateObject("Scripting.FileSystemObject").CreateTextFile(ThisWorkbook.Path & "\Kontrol.txt", True, False)
        MsgBox "Bu dosya ile aşağıdaki işlemleri yapabilirsiniz..." & vbCrLf & vbCrLf & _
              "1- Birinci işlem..." & vbCrLf & _
              "2- İkinci işlem..." & vbCrLf & _
              "3- Üçüncü işlem..." & vbCrLf & _
              "4- Dördüncü işlem..." & vbCrLf & _
              "5- Beşinci işlem..." & vbCrLf, vbInformation
    End If
End Sub
 

hakki83

Altın Üye
Katılım
30 Eylül 2021
Mesajlar
546
Excel Vers. ve Dili
Excel 2016 Türkçe 32 Bit
Altın Üyelik Bitiş Tarihi
30-09-2026
Merhaba,
Aşağıdaki kodu ilgili sayfanın kod bölümüne yapıştırınız.
Kod:
Private Sub Worksheet_Activate()
    Call Test
End Sub
Aşağıdakileri de bir modüle yapıştırınız. Bu kodlar modülün en üstünde olmalıdır. Modül adını kendinize göre değiştirebilirsiniz. Kodlar, kod satırını sildiği için önce örnek dosya üzerinde deneme yapmanızı öneririm.
Kod:
Sub Test()
    MsgBox "Bu dosya şu işe yarar, şunlar şunlar yapılmalıdır"
    ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.DeleteLines 2
End Sub
Dede hocam çok güzel olmuş. Emeğinize bilginize sağlık.
 

hakki83

Altın Üye
Katılım
30 Eylül 2021
Mesajlar
546
Excel Vers. ve Dili
Excel 2016 Türkçe 32 Bit
Altın Üyelik Bitiş Tarihi
30-09-2026
Alternatif..

Dosyanızın bulunduğu klasöre "Kontrol.txt" adından bir dosya oluşturur ve MsgBox bir kez çalışır. "Kontrol.txt" dosyası silinirse MsgBox yeniden çalışır.

C++:
Private Sub Workbook_Open()
    If VBA.Dir(ThisWorkbook.Path & "\Kontrol.txt") = "" Then
        Set Dosya = VBA.CreateObject("Scripting.FileSystemObject").CreateTextFile(ThisWorkbook.Path & "\Kontrol.txt", True, False)
        MsgBox "Bu dosya ile aşağıdaki işlemleri yapabilirsiniz..." & vbCrLf & vbCrLf & _
              "1- Birinci işlem..." & vbCrLf & _
              "2- İkinci işlem..." & vbCrLf & _
              "3- Üçüncü işlem..." & vbCrLf & _
              "4- Dördüncü işlem..." & vbCrLf & _
              "5- Beşinci işlem..." & vbCrLf, vbInformation
    End If
End Sub
Korhan hocam hemen deniyorum.
 

hakki83

Altın Üye
Katılım
30 Eylül 2021
Mesajlar
546
Excel Vers. ve Dili
Excel 2016 Türkçe 32 Bit
Altın Üyelik Bitiş Tarihi
30-09-2026
Alternatif..

Dosyanızın bulunduğu klasöre "Kontrol.txt" adından bir dosya oluşturur ve MsgBox bir kez çalışır. "Kontrol.txt" dosyası silinirse MsgBox yeniden çalışır.

C++:
Private Sub Workbook_Open()
    If VBA.Dir(ThisWorkbook.Path & "\Kontrol.txt") = "" Then
        Set Dosya = VBA.CreateObject("Scripting.FileSystemObject").CreateTextFile(ThisWorkbook.Path & "\Kontrol.txt", True, False)
        MsgBox "Bu dosya ile aşağıdaki işlemleri yapabilirsiniz..." & vbCrLf & vbCrLf & _
              "1- Birinci işlem..." & vbCrLf & _
              "2- İkinci işlem..." & vbCrLf & _
              "3- Üçüncü işlem..." & vbCrLf & _
              "4- Dördüncü işlem..." & vbCrLf & _
              "5- Beşinci işlem..." & vbCrLf, vbInformation
    End If
End Sub
Korhan hocam emeğinize sağlık, şahane olmuş.
Sadece kontrol.txt’yi hidden yapabilir miyiz
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Hidden yerine kullanıcının göremeyeceği bir klasaörde oluşturabilirsiniz.
 

hakki83

Altın Üye
Katılım
30 Eylül 2021
Mesajlar
546
Excel Vers. ve Dili
Excel 2016 Türkçe 32 Bit
Altın Üyelik Bitiş Tarihi
30-09-2026
Korhan hocam birkaç türlü denedim olmadı maalesef,

If VBA.Dir("C:\Deneme\Kontrol.txt") = "" Then
olmadı

If VBA.Dir("C:\Deneme" & "\Kontrol.txt") = "" Then
olmadı

If VBA.Dir("C:\Deneme & \Kontrol.txt") = "" Then
olmadı

Yapamadım,
Doğrusu nasıldır Korhan hocam?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
"C" sürücüsü altında "Deneme" isimli klasörünüz var mı?

Yoksa çalışmaması normaldir.
 

hakki83

Altın Üye
Katılım
30 Eylül 2021
Mesajlar
546
Excel Vers. ve Dili
Excel 2016 Türkçe 32 Bit
Altın Üyelik Bitiş Tarihi
30-09-2026
"C" sürücüsü altında "Deneme" isimli klasörünüz var mı?

Yoksa çalışmaması normaldir.
Yok hocam, kendiliğinden oluşması gerekmiyor mu?

Şöyle izah edeyim. Birçok yere makrolu dosyalar gönderiyorum ve bu dosyaların özelliklerini msgbox ile yazıyorum.

Tabi her açılışta aynı mesajın çıkması gereksiz olacağından, bu konuyu açmıştım.

Yani, dosyalarım, başkalarının bilgisayarılarında çalışacak.
Dolayısıyla her şeyin otomatik, kodlarla yapılması gerekiyıor.

Hidden Kontrol.txt de olur
Belirtilen adresteki bir klasörün içine oluşturarak da olur, ikisi de olur.
Ama otomatik olmak zorunda hocam.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Durumu zaten ilk mesajınızda açıklmıştınız. İkinci açıklamanız gereksiz olmuş.

Siz excele bir komut göndemezseniz beklediğiniz işlemi yapmyacaktır. Önerdiğim kod bloğunda C sürücüsünde Deneme isimli klasör oluştur komutu olmadığı için bu beklentiniz anlamsız olacaktır. Bu komutu eklerseniz ve önerdiğim kodu bu bağlamda düzenlerseniz sonuç istediğiniz gibi olacaktır.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Forumda MkDir komutunu araştırabilirsiniz..
 

Korhan Ayhan

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

Yine arama yaparak sonuc gidebilirsiniz. (Not: Öğrenmek için biraz çaba sarfetmelisiniz.)

MkDir+Error yazarak nette arama yaparsanız sonuca ulaşabilirsiniz.
 

hakki83

Altın Üye
Katılım
30 Eylül 2021
Mesajlar
546
Excel Vers. ve Dili
Excel 2016 Türkçe 32 Bit
Altın Üyelik Bitiş Tarihi
30-09-2026
Hemen arama yapıyorum hocam.
 
Üst