Derleme hatası

arda41

Altın Üye
Katılım
30 Mayıs 2010
Mesajlar
127
Excel Vers. ve Dili
Excel2010
Türkçe
Herkese Merhabalar,

Başta yardımcı olabilecek herkese çok teşekkür ederim.

Excelde bir bilgisayarda sorunsuz çalışan bir kod başka bir bilgisayarda hata vermektedir. Ekteki görselde hata mesajını ve hata veren kod kısmını paylaşıyorum. İşin ilginç yanı tamamen aynı kod başka bir bilgisayarda sorunsuz şekilde çalışmaktadır. Problemin kaynağı ne olabilir acaba?

Tekrar çok teşekkürler.

Saygılarımla
İyi çalışmalar
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,802
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Format yerine Strings.Format yazın.
 

Korhan Ayhan

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

VBA editörünü açtıktan sonra Tools-References menüsünü açınız. Karşınıza gelen listede MISSING ile başlayan referans varsa pasif hale getiriniz.

Dosyayı kaydedip kapatıp tekrar açıp deneyiniz.
 

arda41

Altın Üye
Katılım
30 Mayıs 2010
Mesajlar
127
Excel Vers. ve Dili
Excel2010
Türkçe
Merhaba,

VBA editörünü açtıktan sonra Tools-References menüsünü açınız. Karşınıza gelen listede MISSING ile başlayan referans varsa pasif hale getiriniz.

Dosyayı kaydedip kapatıp tekrar açıp deneyiniz.
Sayın Korhan Ayhan,

Yardımınız problemimi çözmüştür. Çok teşekkür ederim. elinize emeğinize sağlık.

Saygılarımla
 

arda41

Altın Üye
Katılım
30 Mayıs 2010
Mesajlar
127
Excel Vers. ve Dili
Excel2010
Türkçe
Merhaba,

VBA editörünü açtıktan sonra Tools-References menüsünü açınız. Karşınıza gelen listede MISSING ile başlayan referans varsa pasif hale getiriniz.

Dosyayı kaydedip kapatıp tekrar açıp deneyiniz.
Sayın Korhan Ayhan,

Sayenizde çözüme ulaştırılan diğer sorunumdan bağımsız olarak yine başka bilgisayarlarda çalışıp bir bilgisayarda çalışmayan kod hatası vardır. Ekte hata görselini paylaşıyorum. Ayrıca bulduğum excel makro kodu paylaşıyorum. Bu kod Inputbox daki şifreleri * ile göstermektedir. Bu kod bir bilgisayar hariç diğerlerinde çalışmaktadır. Bu problemin kaynağı ne olabilir acaba? Şimdiden çok teşekkür ederim.

Saygılarımla
İyi çalışmalar
 

Ekli dosyalar

arda41

Altın Üye
Katılım
30 Mayıs 2010
Mesajlar
127
Excel Vers. ve Dili
Excel2010
Türkçe
Sayın Korhan Ayhan,

Sayenizde çözüme ulaştırılan diğer sorunumdan bağımsız olarak yine başka bilgisayarlarda çalışıp bir bilgisayarda çalışmayan kod hatası vardır. Ekte hata görselini paylaşıyorum. Ayrıca bulduğum excel makro kodu paylaşıyorum. Bu kod Inputbox daki şifreleri * ile göstermektedir. Bu kod bir bilgisayar hariç diğerlerinde çalışmaktadır. Bu problemin kaynağı ne olabilir acaba? Şimdiden çok teşekkür ederim.

Saygılarımla
İyi çalışmalar
Merhabalar,

Yardımcı olabilecek var mıdır acaba?

İyi çalışmalar
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,271
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Aşağıdaki kodları kullanın, denemek için Test isimli prosedürü çalıştırın....

Kod:
'----------------------------------
'API CONSTANTS FOR PRIVATE INPUTBOX
'----------------------------------

#If VBA7 Then
    Private Declare PtrSafe Function CallNextHookEx Lib "user32" (ByVal hHook As LongPtr, _
        ByVal ncode As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr
    Private Declare PtrSafe Function GetModuleHandle Lib "kernel32" Alias _
        "GetModuleHandleA" (ByVal lpModuleName As String) As LongPtr
    Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
        (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
    Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As LongPtr) As Long
    Private Declare PtrSafe Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _
        (ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr
    Private Declare PtrSafe Function GetClassName Lib "user32" Alias "GetClassNameA" _
        (ByVal hwnd As LongPtr, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Private Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As Long
#Else
    Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
        ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function GetModuleHandle Lib "kernel32" Alias _
        "GetModuleHandleA" (ByVal lpModuleName As String) As Long
    Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
        (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _
        ByVal dwThreadId As Long) As Long
    Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    Private Declare Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _
        (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal wMsg As Long, _
        ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
        (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
#End If

'Constants to be used in our API functions
Private Const EM_SETPASSWORDCHAR = &HCC
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
Private Const HC_ACTION = 0

#If VBA7 Then
    Private hHook As LongPtr
#Else
    Private hHook As Long
#End If

'----------------------------------
'PRIVATE PASSWORDS FOR INPUTBOX
'----------------------------------

'////////////////////////////////////////////////////////////////////
'Password masked inputbox
'Allows you to hide characters entered in a VBA Inputbox.
'
'Code written by Daniel Klann
'March 2003
'64-bit modifications developed by Alexey Tseluiko
'and Ryan Wells (wellsr.com)
'February 2019
'////////////////////////////////////////////////////////////////////

#If VBA7 Then
Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr
#Else
Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
#End If

    Dim RetVal
    Dim strClassName As String, lngBuffer As Long
    If lngCode < HC_ACTION Then
        NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam)
        Exit Function
    End If

    strClassName = String$(256, " ")
    lngBuffer = 255
    If lngCode = HCBT_ACTIVATE Then 'A window has been activated
        RetVal = GetClassName(wParam, strClassName, lngBuffer)
        If Left$(strClassName, RetVal) = "#32770" Then
            'This changes the edit control so that it display the password character *.
            'You can change the Asc("*") as you please.
            SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0
        End If
    End If
    'This line will ensure that any other hooks that may be in place are
    'called correctly.
    CallNextHookEx hHook, lngCode, wParam, lParam
End Function

Function InputBoxDK(Prompt, Title) As String
#If VBA7 Then
    Dim lngModHwnd As LongPtr
#Else
    Dim lngModHwnd As Long
#End If

    Dim lngThreadID As Long
    lngThreadID = GetCurrentThreadId
    lngModHwnd = GetModuleHandle(vbNullString)
    hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
    InputBoxDK = InputBox(Prompt, Title)
    UnhookWindowsHookEx hHook
End Function

Sub Test()
    myPassw = InputBoxDK("Şifrenizi girin", "Şifre")
    myPassw passw
End Sub

.
 

Korhan Ayhan

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

Birkaç gün forumdan uzak kalmıştım. Haluk beyin cevabı çözüm olmazsa kendiniz bir UserForm tasarlayıp bir TextBox ekleyerek InputBox gibi kullanabilirsiniz. TextBox nesnesinin görselde ki özellikler bölümünde ki ayarı yaparsanız sorun çıkmadan kullanabilirsiniz.

224724
 

arda41

Altın Üye
Katılım
30 Mayıs 2010
Mesajlar
127
Excel Vers. ve Dili
Excel2010
Türkçe
Aşağıdaki kodları kullanın, denemek için Test isimli prosedürü çalıştırın....

Kod:
'----------------------------------
'API CONSTANTS FOR PRIVATE INPUTBOX
'----------------------------------

#If VBA7 Then
    Private Declare PtrSafe Function CallNextHookEx Lib "user32" (ByVal hHook As LongPtr, _
        ByVal ncode As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr
    Private Declare PtrSafe Function GetModuleHandle Lib "kernel32" Alias _
        "GetModuleHandleA" (ByVal lpModuleName As String) As LongPtr
    Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
        (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
    Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As LongPtr) As Long
    Private Declare PtrSafe Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _
        (ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr
    Private Declare PtrSafe Function GetClassName Lib "user32" Alias "GetClassNameA" _
        (ByVal hwnd As LongPtr, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Private Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As Long
#Else
    Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
        ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function GetModuleHandle Lib "kernel32" Alias _
        "GetModuleHandleA" (ByVal lpModuleName As String) As Long
    Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
        (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _
        ByVal dwThreadId As Long) As Long
    Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    Private Declare Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _
        (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal wMsg As Long, _
        ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
        (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
#End If

'Constants to be used in our API functions
Private Const EM_SETPASSWORDCHAR = &HCC
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
Private Const HC_ACTION = 0

#If VBA7 Then
    Private hHook As LongPtr
#Else
    Private hHook As Long
#End If

'----------------------------------
'PRIVATE PASSWORDS FOR INPUTBOX
'----------------------------------

'////////////////////////////////////////////////////////////////////
'Password masked inputbox
'Allows you to hide characters entered in a VBA Inputbox.
'
'Code written by Daniel Klann
'March 2003
'64-bit modifications developed by Alexey Tseluiko
'and Ryan Wells (wellsr.com)
'February 2019
'////////////////////////////////////////////////////////////////////

#If VBA7 Then
Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr
#Else
Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
#End If

    Dim RetVal
    Dim strClassName As String, lngBuffer As Long
    If lngCode < HC_ACTION Then
        NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam)
        Exit Function
    End If

    strClassName = String$(256, " ")
    lngBuffer = 255
    If lngCode = HCBT_ACTIVATE Then 'A window has been activated
        RetVal = GetClassName(wParam, strClassName, lngBuffer)
        If Left$(strClassName, RetVal) = "#32770" Then
            'This changes the edit control so that it display the password character *.
            'You can change the Asc("*") as you please.
            SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0
        End If
    End If
    'This line will ensure that any other hooks that may be in place are
    'called correctly.
    CallNextHookEx hHook, lngCode, wParam, lParam
End Function

Function InputBoxDK(Prompt, Title) As String
#If VBA7 Then
    Dim lngModHwnd As LongPtr
#Else
    Dim lngModHwnd As Long
#End If

    Dim lngThreadID As Long
    lngThreadID = GetCurrentThreadId
    lngModHwnd = GetModuleHandle(vbNullString)
    hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
    InputBoxDK = InputBox(Prompt, Title)
    UnhookWindowsHookEx hHook
End Function

Sub Test()
    myPassw = InputBoxDK("Şifrenizi girin", "Şifre")
    myPassw passw
End Sub

.
Haluk Bey Merhabalar,

Kusura bakmayın ancak deneme fırsatı bulabildim. Göndermiş olduğunuz kod problemimi çözmüştür. Elinize emeğinize sağlık çok teşekkür ederim.

Saygılarımla
 

arda41

Altın Üye
Katılım
30 Mayıs 2010
Mesajlar
127
Excel Vers. ve Dili
Excel2010
Türkçe
Merhaba,

Birkaç gün forumdan uzak kalmıştım. Haluk beyin cevabı çözüm olmazsa kendiniz bir UserForm tasarlayıp bir TextBox ekleyerek InputBox gibi kullanabilirsiniz. TextBox nesnesinin görselde ki özellikler bölümünde ki ayarı yaparsanız sorun çıkmadan kullanabilirsiniz.

Ekli dosyayı görüntüle 224724
Korhan Bey Merhabalar,

İlginiz ve paylaşımınız için çok teşekkür ederim. Haluk Beyin önerisi problemimi çözmüştür. Siz ve diğer değerli üstatlara minnet borçluyum. Elinize emeğinize sağlık. Çok teşekkürler.

Saygılarımla
 
Üst