• DİKKAT

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

Vba Projesini değişkene atamak

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Rem Kontroller
  If Intersect(Target, [c2:c2000]) Is Nothing Then Exit Sub             'Kimlik Numarasının Gireleceği erim/hücre
  If Target.Count > 1 Then Exit Sub
  If Target.Value = "" Then Exit Sub

Rem Prosodür Değişkenleri
  Dim SonSutNo As Integer
  Dim Bassatno As Integer
'  Dim wAddIn   As Workbook
'  Dim oProje   As VBIDE.VBProject
'
'  Set wAddIn = Workbooks("prjHSKVTGOR20110128.xla")
'
'  Set oProje = wAddIn.VBProject

Rem Atamalar
   HsPrjSahis.strSHS_TCK = Target.Value
   HsPrjSahis.boolVT1GRS = True
              dobHDFSAT = Target.Row
               SonSutNo = 49
               Bassatno = 2
  HsPrjSahis.arrWKStoLBX = HsPrjSahis.HsFc_DiziBirlestir_CSyf( _
                              Sayfa3.Range(Cells(Bassatno, 1), Cells(Bassatno, SonSutNo)).Value, _
                              Sayfa3.Range(Cells(dobHDFSAT, 1), Cells(dobHDFSAT, SonSutNo)).Value)
                          
Rem İşlemler
  ufGIRIS.Show
  
Rem Kapanış
  Erase HSR_TCVGF.arrWKStoLBX
  dobHDFSAT = Empty
  SonSutNo = Empty
  Bassatno = Empty

End Sub

Yukarıdaki gibi bir kod öbeğim var. Bu kod öbeğindeki HsPrjSahis excel eklentisi ve dosyanın referansıdır.

bu değeri public olarak tanımlayacağım oRefences değerine atayıp çalışma kitabının her yerinde kullanma imkanımız var mı?
bazen HsPrjSahis2 şeklinde kullanmam gerekince her yerde değiştirmek zorunda kalıyorum :(
 
Merhabalar,

Niye değişken tanımlamakla uğraşıyorsunuz ki ? ... Bu kısmı anlamadım.

İstediğiniz şey, bir AddIn'deki kodu çalıştırmaksa, "Application.Run" komutunu kullanın ...

Bu kout öncesinde, AddIn'in yüklü olup olmadığını da kontrol edin.

.
 
hocam addin deki public değişkenlere istemci çalışma sayfasından değer gönderdiğim için değişken tanımlamak istiyorum.
strSHS_TCK string değişkenim.
boolVT1GRS boelan değişkenim.
arrWKStoLBX dizi değişkenim.
 
Addin Dosya Adı : strAddin (dosya uzantısı ile birlikte)
Addindeki İlgiliendiğiniz prosedür adı : strProsedur
Addindeki Prosedürün Argümanlar :
strSHS_TCK
boolVT1GRS
arrWKStoLBX​

Addin'indeki kodu çalıştırmak için;

Application.Run strAddin & "!" & strProsedur , strSHS_TCK, boolVT1GRS, arrWKStoLBX

WorkSheet Change olduğunda, bu satırıdaki değişkenleri hazırlar ve daha sonra kodu çalıştırırsanız, istediğiniz olur.

.
 
Değişkene atama imkanımız yok mu hocam?
tek bir prosodürden bahsetmiyorum. ayrıca istemci çalışma kitabının birden fazla prosodüründe hsprjSahis adlı dosyayay yönlendirme yapmam gerekiyor.
olmaz ise el ile devam ne yapayım :(
 
Bir yerlerde frekanslar çakışıyor sanırım ... Anlayamıyorum.

Önceki mesajımda verdiğim kodda, değişken olmayan bir şey gösterir misiniz?

WorkSheet_Change olayının ömrü kelebekler kadardır. Olay bittiği anda ne Public kalır ne memleket .. Bütün değişkenler kendini sıfırlar.

WorkSheet_Change her tetiklendiğinde siz, değişkenleri yeniden yüklemelisiniz.

Ben mi yanlış anlıyorum, bilemiyorum.

.
 
Hocam WorksheetCahnge olayında addine yollandnan değerler istemciden çağrılan
ufGIRIS de değerlendiriliyor ve buradan çıkacak sonuca göre ya istemci çalışma kitabındaki yaz makrosu çalıştırılıyor. Yada Addindeki Kayıt ekleme userformu çağrılıyor.

tabi asıl dosyalar işyerinde olduğu için örnek yükleyemiyorum. İşyerine gittiğimde ise örnek çıkartmam gerek.
 
ufGiris dediğiniz nedir ? UserForm mu ? User Function mı?

Padişahla Keloğlan hikayesine döndük. Bilmece çözer gibi iş yapıyoruz :)

Korkarım yakında "Simon diyor ki" diye de söze başlarsınız siz.

Şimdi olayın haritasını anlamaya çalışıyorum.

A.xls ... WorkSheet_Change'in kodlandığı çalışma kitabı

Yaz : A.xls'deki yazdirmamakrosu

B.xla ... Sizin çağırmak istediğiniz eklenti.
Kosul : B.xla'daki uygunluk kontrol prosedürü (size göre ufGiris)
Kayıt : B.xla'da UserFormu görüntülemeye yarayan kod.​

A.xls'deki, WorkSheet_Change olayının tetiklendiğini varsayalım.

İlk yapacağınız "B.xla" daki "Koşul" prosedürünü çağırmak ve uygunluk kontrolü yapmak. Bunun için, App.Run komutu ile sonucu aldığınızı kabul ediyorum.

Bundan sonrası tamamen, If Then Else yönetimi.

Eğer, Koşul=True ise, A.xls'deki "Yazdır" prosedürünü,
Koşul=False ise, B.xla'daki "Kayit" prosedürünü çalıştırın.

Bundan başka ne olabilir ki?

.
 
hocam istemci çalışma kitabı usb de varmış...
Şimid workshetchange ile değişen hücrenin değeri ve bağlı başka değerler addinse gönderiliyor.
ufGiris dediğimiz userform çağrılıyor orada basılan commandbutona göre addins üzerindeki userform görüntüleniyor yada worksheet üzerindeki yaz makros çalıştırıyor.

Sayfa kodları
Kod:
Dim dobHDFSAT As Double
Private Sub Worksheet_Change(ByVal Target As Range)
Rem Kontroller
  If Intersect(Target, [c2:c2000]) Is Nothing Then Exit Sub             'Kimlik Numarasının Gireleceği erim/hücre
  If Target.Count > 1 Then Exit Sub
  If Target.Value = "" Then Exit Sub

Rem Prosodür Değişkenleri
  Dim SonSutNo As Integer
  Dim Bassatno As Integer
'  Dim wAddIn   As Workbook
'  Dim oProje   As VBIDE.VBProject
'
'  Set wAddIn = Workbooks("prjHSKVTGOR20110128.xla")
'
'  Set oProje = wAddIn.VBProject

Rem Atamalar
   HsPrjSahis.strSHS_TCK = Target.Value
   HsPrjSahis.boolVT1GRS = True
              dobHDFSAT = Target.Row
               SonSutNo = 49
               Bassatno = 2
  HsPrjSahis.arrWKStoLBX = HsPrjSahis.HsFc_DiziBirlestir_CSyf( _
                              Sayfa3.Range(Cells(Bassatno, 1), Cells(Bassatno, SonSutNo)).Value, _
                              Sayfa3.Range(Cells(dobHDFSAT, 1), Cells(dobHDFSAT, SonSutNo)).Value)
                          
Rem İşlemler
  ufGIRIS.Show
  
Rem Kapanış
  Erase HSR_TCVGF.arrWKStoLBX
  dobHDFSAT = Empty
  SonSutNo = Empty
  Bassatno = Empty

End Sub
Sub sbNFSKYTYAZ()
Rem Kontroller

Rem Prosodür Değişkenleri
  Dim kmlkKVT       As hsr_KMLKveri
  Dim ıntBASSUT     As Integer

'If HSR_TCVGF.boolNFKYVAR = False Then GoTo son
Rem Atamalar
  kmlkKVT = sbWKS_SKVrt(HSR_TCVGF.strSHS_TCK)
  If HSR_TCVGF.boolNFKYVAR = False Then GoTo son
  ıntBASSUT = 4
  
  
Rem İşlemler
  With kmlkKVT
    Cells(dobHDFSAT, ıntBASSUT + 0).Value = HSR_TCVGF.HsFc_Mtn_TumuBuyukHarf(.tSHS_CNS)
    Cells(dobHDFSAT, ıntBASSUT + 1).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tADI)
    Cells(dobHDFSAT, ıntBASSUT + 2).Value = HSR_TCVGF.HsFc_Mtn_TumuBuyukHarf(.tSYD)
    Cells(dobHDFSAT, ıntBASSUT + 3).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tBAD)
    Cells(dobHDFSAT, ıntBASSUT + 4).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tAAD)
    Cells(dobHDFSAT, ıntBASSUT + 5).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tDYR)
    Cells(dobHDFSAT, ıntBASSUT + 6).Value = .tDTR
    Cells(dobHDFSAT, ıntBASSUT + 7).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tNIL)
    Cells(dobHDFSAT, ıntBASSUT + 8).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tNILC)
    Cells(dobHDFSAT, ıntBASSUT + 9).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tNMK)
    ıntBASSUT = ıntBASSUT + 1
    Cells(dobHDFSAT, ıntBASSUT + 9).Value = Chr(10) & .tNCS & "-" & .tNAS & "-" & .tNBS
    Cells(dobHDFSAT, ıntBASSUT + 10).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tAIL)
    Cells(dobHDFSAT, ıntBASSUT + 11).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tAILC)
    Cells(dobHDFSAT, ıntBASSUT + 12).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tABLD)
    Cells(dobHDFSAT, ıntBASSUT + 13).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tAMK)
    Cells(dobHDFSAT, ıntBASSUT + 14).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tACS)
    Cells(dobHDFSAT, ıntBASSUT + 15).Value = .tAKN & "/" & .tADN
    Cells(dobHDFSAT, ıntBASSUT + 16).Value = .tTEV1 '& Chr(10) & .tTEV2
    Cells(dobHDFSAT, ıntBASSUT + 17).Value = .tTIS1 '& Chr(10) & .tTIS2
    Cells(dobHDFSAT, ıntBASSUT + 18).Value = .tTCP1 '& Chr(10) & .tTCP2
    Cells(dobHDFSAT, ıntBASSUT + 19).Value = .tEMK1 '& Chr(10) & .tEMK2
    Cells(dobHDFSAT, ıntBASSUT + 20).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tISY_GRV)
    Cells(dobHDFSAT, ıntBASSUT + 21).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tEGT_DZY)
    Cells(dobHDFSAT, ıntBASSUT + 22).Value = HSR_TCVGF.HsFc_Mtn_YalnizcaIlkHarflerBuyuk(.tKGR)
  End With
  
son:
  
'  kmlkKVT = geccKVT
End Sub
ufgiris (userform kodları)

Kod:
Private Sub UserForm_Initialize()
  lblVATNO.Caption = HsPrjSahis.strSHS_TCK

 If HsFc_Kontrol(HsPrjSahis.strSHS_TCK) = False Then
  cmdGRNT.Enabled = False
  cmdGETR.Enabled = False
  lblVATNO.Caption = "Çalışma Sayfasından İşlem yapınız"
 End If
End Sub

Private Sub cmdGETR_Click()
  Unload Me
  Call Sayfa3.sbNFSKYTYAZ
End Sub

Private Sub cmdGRNT_Click()
  Unload Me
  Call HSR_TCVGF.sbUFGRS_CAG
End Sub
Private Sub cmdIPT_Click()
  Unload Me
End Sub
Function HsFc_Kontrol(Metin As String) As Boolean
HsFc_Kontrol = True
  If Metin = "" Then HsFc_Kontrol = False:               GoTo son
  If IsNumeric(Metin) = False Then HsFc_Kontrol = False: GoTo son
son:
End Function

not
HSR_TCVGF olarak gözüken değerler HsPrjSahis değeri ile değiştirlecektir.
 
hocam referans olan projeyi bir değikene atamak ve/veya
with Refeans
.modül1
.modül2
.değer1
end with şeklinde yazmamız mümkün değil mi?
 
selam

Arkadaşlar ekselde bordro programı yaptım ama sayısal verileri xlmye sayfasına atamıyorum örneğin (tarihin bordromda 15.02.2011 olması gerikirken xlmde 1502 olması gerikiyor hem yıl eksiltilecek hemde arada virgül falan olmayacak bununla ilgili bildiğiniz bir makro varsa yardımcı olabilirmisiniz
 
hocam referans olan projeyi bir değikene atamak ve/veya
with Refeans
.modül1
.modül2
.değer1
end with şeklinde yazmamız mümkün değil mi?

hsayar, siz durumu bir de canlı canlı anlatmayı deneyin.

Yani, "Ben şu kitabı açtım. Eğer bu olursa, şu eklentinin şu makrosu; değilse şu eklentini şu makrosu vesaire vesaire ... çalışsın" gibi ...

Zira, ben durumu anlamakta güçlük çekiyorum.

Bahsettiğiniz referansları, niye object olarak tanımlamak istediğinizi de anlamadım. Daha önce de belirttiğim gibi, string veya sayısal olarak tanımlamanız yeterli değil mi ?

.
 
Şimdilik dediğiniz gibi yaptım hocam göndermek istediklerimi fonksiyon ile gönderiyor ve type ile geri alıyorum. Ana proje tamamlananda, İstemci çlışma kitabınde konu ile ilgili sorun çıkar ise burada tekrar izah ederim.
 
Geri
Üst