Buda Excel açılışında kod devreye girer sayfa aktif olunca devreye girer ve buton ekledim tıklayınca devreye girer.
Ve B11 değişincede veriler gelir.
Aslında KTF yazsakta olur birde onu yaparsam eklerim.
Bir Sayfadaki Verilerden Birden Fazla Veri Aldırmak İstiyorum !
(25/12/2020, 14:45)feraz yazdı:(25/12/2020, 12:16)huzun_bulutu yazdı:Formül olayından fazla anlamıyorum heleki dizi formüllerindende nerdeyse hiç.(24/12/2020, 09:40)feraz yazdı: Sabitleme değiştirildi.
Bir koşul daha eklersem formülü eklerim buraya birde makrolu yaparsam onuda eklerim.
=DOLAYLI(ADRES(TOPLA.ÇARPIM(($B$3:$B$7=$E$16)*($C3:C7=F16)*(SATIR($C$3:$C$7)))+1;SÜTUN(C1)))
Sn. feraz,
Programımı şekillendirmeye başlamıştım ki bu kodda yine hata alıyorum. Gönderdiğiniz şekilde kodu yazmaya çalıştım ama sanırım tam anlayamadım ki hata yapıyorum. Rica etsem müsait olduğunuzda bakabilir misiniz ?
Kod ile yaptım ve gifte anlattım nasıl olduğunu.Gerekirse Buton eklenir onunlada veriler gelir.
Tam anlamadım aslında REÇETE MALİYET HESAPLAMA sayfasında sadece B11 veri değişincemi veriler gelecek zira buna göre ayarladım.
Dizi formülleriyle olsa bile dosya çok yavaş çalışabilir.
Sn. Feraz,
Sadece B11 hücresi değil de aşağıda doğru işte orda yemek seçtikçe aşağı doğru diğer satırlarda da geitrmesi gerekiyorç
huzun_bulutu, 05-10-2009 tarihinden beri AccessTr.neT üyesidir.
KTF yazmıştım.
Kullanmım örnekleri
Dediğiniz aşağı olayınada sonra bakayım.
Kullanmım örnekleri
Kod:
=getirAd($B11;REÇETELER!$B$11:$B$40;C10;REÇETELER!$10:$10)
=getirGram($B11;REÇETELER!$B$11:$B$40;C11;REÇETELER!C11:C40;C10;REÇETELER!$10:$10)
Function getirGram(aranan1 As String, alan1 As Range, _
aranan2 As String, alan2 As Range, _
aranan3 As String, alan3 As Range)
Dim kacinci1 As Integer
Dim kacinci2 As Integer
Dim kacinci3 As Integer
Const SatirBaslangic As Byte = 11
Application.Volatile
On Error Resume Next
kacinci1 = WorksheetFunction.Match(aranan1, alan1, 0) + SatirBaslangic
kacinci2 = WorksheetFunction.Match(aranan2, alan2, 0) + SatirBaslangic
kacinci3 = WorksheetFunction.Match(aranan3, alan3, 0)
On Error GoTo 0
If kacinci1 > 0 And kacinci2 > 0 And kacinci3 > 0 Then
getirGram = ThisWorkbook.Sheets("REÇETELER").Cells(kacinci1, kacinci3).Value
Else
getirGram = ""
End If
End Function
Function getirAd(aranan1 As String, alan1 As Range, _
aranan2 As String, alan2 As Range) As String
Dim kacinci1 As Integer
Dim kacinci2 As Integer
Const SatirBaslangic As Byte = 10
Application.Volatile
On Error Resume Next
kacinci1 = WorksheetFunction.Match(aranan1, alan1, 0) + SatirBaslangic
kacinci2 = WorksheetFunction.Match(aranan2, alan2, 0)
On Error GoTo 0
If kacinci1 > 0 And kacinci2 > 0 Then
getirAd = ThisWorkbook.Sheets("REÇETELER").Cells(kacinci1, kacinci2).Value
Else
getirAd = ""
End If
End Function
Birde böyle yaptım ya butona tıklayınca yada sayfa aktif olunca kod çalışır.
Sayfadaki değişiklik olayı içinde yaptım laki pasif yaptım kodları sonsuz döngüye sokuyor.Sokmaması için Application.EnableEvents = False bu kod kullanılıyor lakin bazen kodları durduruyor.
Yada sadece Sayfadaki veri değişincede kod çalışabilir sonra bakarım teferruatlıca bu dosyayı bir deneyin.
Sayfadaki değişiklik olayı içinde yaptım laki pasif yaptım kodları sonsuz döngüye sokuyor.Sokmaması için Application.EnableEvents = False bu kod kullanılıyor lakin bazen kodları durduruyor.
Yada sadece Sayfadaki veri değişincede kod çalışabilir sonra bakarım teferruatlıca bu dosyayı bir deneyin.
'Private Sub Worksheet_Change(ByVal Target As Range)
' Application.EnableEvents = False
' GetirMod.KacGetir
' Application.EnableEvents = True
'End Sub
Sanırım formülle oldu hemde dizi formülsüz.
Veriler yoksa 0 geliyor onu ayarlardan kapatabilirsiniz birde yaeşil hata şekil oluyor onuda kapatabilirsiniz.
C11;
C12;
Sıfır ve formül hata olayını kapatma için resimdeki yerleri kaldırın ilgili sayfayı açıp.
Veriler yoksa 0 geliyor onu ayarlardan kapatabilirsiniz birde yaeşil hata şekil oluyor onuda kapatabilirsiniz.
C11;
Kod:
=EĞERHATA(DOLAYLI("REÇETELER!"&ADRES(KAÇINCI($B11;REÇETELER!$B$11:$B$40;0)+10;KAÇINCI(C$10;REÇETELER!$10:$10;0);2));"")
Kod:
=EĞERHATA(DOLAYLI("REÇETELER!"&ADRES(KAÇINCI($B11;REÇETELER!$B$11:$B$40;0)+11;KAÇINCI(C$10;REÇETELER!$10:$10;0);2));"")
Sıfır ve formül hata olayını kapatma için resimdeki yerleri kaldırın ilgili sayfayı açıp.
(25/12/2020, 19:33)feraz yazdı: Sanırım formülle oldu hemde dizi formülsüz.
Veriler yoksa 0 geliyor onu ayarlardan kapatabilirsiniz birde yaeşil hata şekil oluyor onuda kapatabilirsiniz.
C11;
C12;Kod:=EĞERHATA(DOLAYLI("REÇETELER!"&ADRES(KAÇINCI($B11;REÇETELER!$B$11:$B$40;0)+10;KAÇINCI(C$10;REÇETELER!$10:$10;0);2));"")
Kod:=EĞERHATA(DOLAYLI("REÇETELER!"&ADRES(KAÇINCI($B11;REÇETELER!$B$11:$B$40;0)+11;KAÇINCI(C$10;REÇETELER!$10:$10;0);2));"")
Sıfır ve formül hata olayını kapatma için resimdeki yerleri kaldırın ilgili sayfayı açıp.
Sn Feraz Allah sizden razı olsun emeğinize sağlık. Ne kadar teşekkür etsem azdır. Programı hayırlısı ile bitirirsem burada mutlulukla paylaşacağım. Tabiki profosyonel olmayacak, belki makro içermeyecek belki çok özel kodlar olmayacak ama elimden gelen neyse onu yapıp dileyen kullansın diye paylaşacağım.
Saygılar
huzun_bulutu, 05-10-2009 tarihinden beri AccessTr.neT üyesidir.
Konuyu Okuyanlar: 1 Ziyaretçi