• DİKKAT

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

Bir Kez Çalışan Mesaj Kutusu

hakki83

Altın Üye
Katılım
30 Eylül 2021
Mesajlar
567
Excel Vers. ve Dili
Excel 2016 Türkçe 32 Bit
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

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
 
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.
 
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
 
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
 
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.
 
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.
 
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
 
Hidden yerine kullanıcının göremeyeceği bir klasaörde oluşturabilirsiniz.
 
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?
 
"C" sürücüsü altında "Deneme" isimli klasörünüz var mı?

Yoksa çalışmaması normaldir.
 
"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.
 
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.
 
Merhaba,

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

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