Kayıt Süresince "Bekleyiniz" İfadesi

1Al2Ver

Altın Üye
Katılım
5 Kasım 2007
Mesajlar
4,716
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Altın Üyelik Bitiş Tarihi
04-01-2026
Merhaba,

Aşağıda kod aktarma işlevini yaparken ekranda "Kayıt Devam Ediyor, Lütfen Bekleyiniz" uyarısını almayı, kayıt bittiğinde de ekrandan kalkmasını arzuluyorum.

Gerekli ilaveyi rica ediyorum.

Teşekkür ederim.

Kod:
Sub aktar()
Dim son1
Dim son2
Dim a
Dim b

For a = 3 To 20
son1 = Sheets("OYUNCU_TABLO").Cells(Rows.Count, 1).End(3).Row
For b = 4 To 17
    If Sheets("MAÇ_KAYIT").Cells(a, 3) <> "" Then
       Sheets("OYUNCU_TABLO").Cells(son1 + 1, b + 1) = Sheets("MAÇ_KAYIT").Cells(a, b)
       Sheets("OYUNCU_TABLO").Cells(son1 + 1, 1) = Sheets("MAÇ_KAYIT").Cells(a, 1)
       Sheets("OYUNCU_TABLO").Cells(son1 + 1, 3) = Sheets("MAÇ_KAYIT").Cells(a, 3)
       Sheets("OYUNCU_TABLO").Cells(son1 + 1, 2) = Sheets("MAÇ_KAYIT").Cells(2, 3)
       Sheets("OYUNCU_TABLO").Cells(son1 + 1, "d") = Sheets("MAÇ_KAYIT").Cells(21, 3)
       Sheets("OYUNCU_TABLO").Cells(son1 + 1, "s") = Sheets("MAÇ_KAYIT").Cells(22, 3)
       Sheets("OYUNCU_TABLO").Cells(son1 + 1, "t") = Sheets("MAÇ_KAYIT").Cells(23, 3)
       Sheets("OYUNCU_TABLO").Cells(son1 + 1, "u") = Sheets("MAÇ_KAYIT").Cells(24, 3)
       Sheets("OYUNCU_TABLO").Cells(son1 + 1, "v") = Sheets("MAÇ_KAYIT").Cells(25, 3)
       Sheets("OYUNCU_TABLO").Cells(son1 + 1, "w") = Sheets("MAÇ_KAYIT").Cells(26, 3)
       End If
       Next
       Next
       Sheets("MAÇ_KAYIT").Cells(2, 2).Select
        soru = "Mevcut kaydı silmek istediğinizden emin misiniz?"
        cevap = MsgBox(soru, vbYesNo + vbQuestion)
        Select Case cevap
            Case vbYes
           Sheets("MAÇ_KAYIT").Range("d3:q20").ClearContents
           Sheets("MAÇ_KAYIT").Range("c2:c24").ClearContents
           Sheets("MAÇ_KAYIT").Range("c26").ClearContents
            Case vbNo
                Exit Sub
        End Select
      
End Sub
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,501
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
İşlem süresi bu kodlarla 1 yada 2 saniye alabilir. Bir fikir olarak :

Sadece zaman göstergesi taşıyan ve altında istediğiniz ifadenin bulunduğu bir mini userformu varolan işlem üzerine açıp zaman dolunca da kendiliğinden kapanmasını sağlayabilirsiniz.

Bu kodları Dim lerden sonra ekleyin ve deneyin



Kod:
Userform2.show
Application.Wait Now + TimeValue("00:00:02")
Unload Me
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,501
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Bir userform ve üzerine de ilerleme çubuğu ekledim.
Bu userformun aktif olduğu anda çalışmaya başlamasını kendi içindeki kodlarla sağladım.
Sizin aktarma tuşunuz içinde kodlarınızın üst kısmında userformu çağırdım.
İlerleme 100 e ulaştığında aynı kodların altına userformu kapat kodu ekledim.

Aktarma işlemini incelemedim , zira o kodların çalışması 1 2 saniye alır , aynı hızda bir görsel
flash olacağından hoş durmazdı. Bu şekilde aktarma zamanı değil görsel ve akışını izletmek
daha hoş durabilir.

Bu userform kendiliğinden kapandığında altında silme mesajı geliyor , neden ve nereden
geldiğini incelemedim, sadece " bekleyiniz " formunu ekledim . Diğer işlemler veya bu userformun
dizaynı konusunda siz kendi ayarlamalarınızı yaparsınız. Ben bekletmenin yerini uyduramamış olabilirim.
Siz mevcut kaydı sildikten sonra çalışsın istiyorsanız kod içindeki userform1.show kodunun yerini
ona göre değiştirin

Kodlarınızda End sub dan bir önce Thisworkbook.save ekleyin ki son hali otomatik kaydetsin, yoksa
excelden çıkarken kaydedeyim mi diye sorar.

Dosyanız , deneyin ..
 

Ekli dosyalar

Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Userform vs kullanmak yerine, kod'un başına ve sonuna eklenecek basit birer kod satırı ile;
-- istenilen bir hücreye, başlangıçta "BEKLEYİNİZ" metnini yazdırıp, işlem sonrasında da bu metni sildirmeyi,
-- ya da önceden hazırlayacağınız ve içerisinde BEKLEYİNİZ metni olan bir METİN KUTUSU olup, bu metin kutusunun
VISIBLE özelliğini başlangıçta TRUE, işlem sonunda da FALSE yapmayı,
neden düşünmüyorsunuz.

Ekteki belgede işlem için METİN KUTUSU kullandım, deneyiniz.
Kod'da Sayın @cems 'in de belirttiği Application.Wait kullandım, zira kodun yapacağı işlem zaman alıcı bir işlem değil.
Kendi aktarma kodlarınız zaman alıyorsa ...Wait kod satırları silinebilir elbette.
Kodlar Module1'de.
 

Ekli dosyalar

1Al2Ver

Altın Üye
Katılım
5 Kasım 2007
Mesajlar
4,716
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Altın Üyelik Bitiş Tarihi
04-01-2026
Merhaba,

Sayın cems,
Sayın Baran,

Çözüm ve önerileriniz için teşekkür ederim,

Saygılarımla.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Alternatif kod

Kod:
Sub basla()

Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Textbox.1")
With Obj
.Left = 321
.Top = 94
.Height = 102
.Width = 293
.PrintObject = False
.Name = "Text1"
End With

With Obj.Object
.BackColor = 255
.Font.Size = 28
.Font.Bold = True
.Text = "Lütfen Bekleyiniz."
.ForeColor = -2147483643
End With

Dim basla
Dim bekle
basla = Timer
bekle = 1
While Timer < basla + bekle
DoEvents
Wend

Call aktar 'makro kodunuz

ActiveSheet.Shapes("Text1").Delete
basla = Timer
bekle = 1
While Timer < basla + bekle
DoEvents
Wend
MsgBox "işlem tamam"
End Sub
 

1Al2Ver

Altın Üye
Katılım
5 Kasım 2007
Mesajlar
4,716
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Altın Üyelik Bitiş Tarihi
04-01-2026
Sayın halit3 merhaba,

Alternatif kod ve ilginiz için teşekkür ederim,

Saygılarımla.
 
Üst