• DİKKAT

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

Soru Userform Başlangıç Pozisyonu

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
208
Excel Vers. ve Dili
Excel 2021
Masaüstü programlarda çalışırken program pencereleri kullanıcının oluşturduğu ölçüde ve ekran konumunda açılabiliyor. VBA'da da bunu yapmak istiyorum. En azından ekran pozisyonu bıraktığım yerden başlasın istiyorum. Kayıtları reg. dosyasına yazabilirim. Sorun Userformu ekranda bir yere aldığımda, ekrandaki pozisyonunu belirleyecek bir komuta ihtiyacım var. Yani açık olan userformu hareket ettirdiğimde ekrandaki poziyonunu gösterecek bir yol var mıdır?
 
Şöyle mi?

C#:
Private Sub UserForm_Initialize()
    Me.StartUpPosition = 0
    Me.Left = 100
    Me.Top = 300
End Sub

.
 
@Haluk bey bunu userforma yazacam ama left ve top değerlerini reg'den okuyacak. Userform ekranda hareket edince de ekrandaki pozisyonuna göre reg'e yazacak. Böylece userform son ekranda son bıraktığım yerden açılmaya devam edecek. Dosyayı kapatıp açsam bile reg'den okuyacağından her zaman son konumunu bulacak. Reg'den okuma yazma da sorunum yok. Sadece userformu ekranda hareket ettirince left ve top değerlerini ekrana göre nasıl bulabilirim onu bilmiyorum.
 
Test.gif


C#:
Private Sub UserForm_Layout()
    TextBox1 = Me.Left
    TextBox2 = Me.Top
End Sub

.
 
Kod:
On Local Error Resume Next
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
pst = wsh.RegRead("HKCU\Win\Win\topleft_01")
If Err Then: Err.Clear: pst = "0|0"

With Me
.StartUpPosition = 0
.Left = Split(pst, "|")(0)
.Top = Split(pst, "|")(1)
End With
'......................................

Private Sub UserForm_Layout()
add = Val(Me.Left) & "|" & Val(Me.Top)
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
wsh.RegWrite "HKCU\Win\Win\topleft_01", add, "REG_SZ"
End Sub

Kodları da bu şekilde yazdım. Gayet iyi çalışıyor.
 
Son düzenleme:
Geri
Üst