Makroya Uyarı kodu İlavesi

1Al2Ver

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

Aşağıdaki Kod'a ;

"RAPOR" sayfası K1 hücresi; >=43 ise ekranda, "Tabela satır sayısı yetmiyor, bu nedenle Tabela Oluşturulmadı" mesajını verdirmek ve makronun, K1 hücresi 43'ün altına değil ise yapmamasını istiyorum.

NOT ; K1 hücresine veri, =TOPLA(K3:K14) ile alınmaktadır.

Teşekkür ederim.

Kod:
Sub TABELA_OLUŞTUR()
Set ra = Sheets("RAPOR"): Set RE = Sheets("REÇETE")
If ra.[C60].End(3).Row > 16 Then ra.Range("A17:I" & ra.[C59].End(3).Row).ClearContents

Cells.NumberFormat = General 

    Select Case ra.[N1]
        Case Is = "Düşük": hedef = 5
        Case Is = "Orta": hedef = 6
        Case Is = "Yüksek": hedef = 7
    End Select
For yemek = 3 To ra.[H16].End(3).Row
Cells(ra.[C60].End(3).Row + 1, 2) = ra.Cells(yemek, 8)
    ilk = WorksheetFunction.Match(ra.Cells(yemek, 8), RE.Range("B:B"), 0)
    son = WorksheetFunction.CountIf(RE.Range("B:B"), ra.Cells(yemek, 8)) + ilk - 1
    For resat = ilk To son
        rasat = ra.[C60].End(3).Row + 1: ra.Cells(rasat, 3) = RE.Cells(resat, 3)
        ra.Cells(rasat, 4) = RE.Cells(resat, 4): ra.Cells(rasat, 5) = RE.Cells(resat, hedef)
  
  ra.Cells(rasat, 5).NumberFormat = RE.Cells(resat, hedef).NumberFormat ' BU satır adet ve kesirli olan sayılar için eklendi  19.07.2016 ÖB.
  
        If Cells(rasat, 4) = "Gr" Then
            ra.Cells(rasat, 6) = ra.[D14] * ra.Cells(rasat, 5) / 1000
            ra.Cells(rasat, 8) = (RE.Cells(resat, 8) * RE.Cells(resat, hedef) / 1000) * ra.[D14]
        Else
            ra.Cells(rasat, 6) = ra.[D14] * ra.Cells(rasat, 5)
            ra.Cells(rasat, 8) = (RE.Cells(resat, 8) * RE.Cells(resat, hedef) / 100) * ra.[D14] * 100
        End If
        ra.Cells(rasat, 7) = RE.Cells(resat, 8): ra.Cells(rasat, 9) = RE.Cells(resat, hedef + 5) 'hedef+5 yerine 10 yazarsak düşük kaloriyi alır, bu haliyle seçime göre kaloride değişir.14.07.2016
    Next
Next
With ra.Range("A17:A" & ra.[C60].End(3).Row)
    .Formula = "=IF(ISERROR(MATCH(B17,$H$1:$H$14,0)),"""",MAX($A$16:A16)+1)": .Value = .Value
End With

        
ra.[H1].NumberFormat = "dd/mm/yyyy" 
ra.[H60].NumberFormat = "#,##0.00"
ra.[H61:H62].NumberFormat = "#,##0.00"
ra.[H64:H67].NumberFormat = "#,##0.00"
ra.[F19:I59].NumberFormat = "#,##0.000"
ra.[G17:H17].NumberFormat = "#,##0.000"
ra.[E3:F4].NumberFormat = "#,##0.00"
ra.[I19:I59].NumberFormat = "#.00"

MsgBox "İşlem Tamam !!!"
End Sub
 

fireman64

Destek Ekibi
Destek Ekibi
Katılım
6 Ağustos 2005
Mesajlar
327
Excel Vers. ve Dili
Excel 2010
Kod:
Sub TABELA_OLUŞTUR()

[COLOR="Red"]If ra.Range("K1").Value >= 43 Then
MsgBox "Tabela satır sayısı yetmiyor, bu nedenle Tabela Oluşturulmadı"
Exit Sub
Else[/COLOR]

Set ra = Sheets("RAPOR"): Set RE = Sheets("REÇETE")
If ra.[C60].End(3).Row > 16 Then ra.Range("A17:I" & ra.[C59].End(3).Row).ClearContents

Cells.NumberFormat = General 

    Select Case ra.[N1]
        Case Is = "Düşük": hedef = 5
        Case Is = "Orta": hedef = 6
        Case Is = "Yüksek": hedef = 7
    End Select
For yemek = 3 To ra.[H16].End(3).Row
Cells(ra.[C60].End(3).Row + 1, 2) = ra.Cells(yemek, 8)
    ilk = WorksheetFunction.Match(ra.Cells(yemek, 8), RE.Range("B:B"), 0)
    son = WorksheetFunction.CountIf(RE.Range("B:B"), ra.Cells(yemek, 8)) + ilk - 1
    For resat = ilk To son
        rasat = ra.[C60].End(3).Row + 1: ra.Cells(rasat, 3) = RE.Cells(resat, 3)
        ra.Cells(rasat, 4) = RE.Cells(resat, 4): ra.Cells(rasat, 5) = RE.Cells(resat, hedef)
  
  ra.Cells(rasat, 5).NumberFormat = RE.Cells(resat, hedef).NumberFormat ' BU satır adet ve kesirli olan sayılar için eklendi  19.07.2016 ÖB.
  
        If Cells(rasat, 4) = "Gr" Then
            ra.Cells(rasat, 6) = ra.[D14] * ra.Cells(rasat, 5) / 1000
            ra.Cells(rasat, 8) = (RE.Cells(resat, 8) * RE.Cells(resat, hedef) / 1000) * ra.[D14]
        Else
            ra.Cells(rasat, 6) = ra.[D14] * ra.Cells(rasat, 5)
            ra.Cells(rasat, 8) = (RE.Cells(resat, 8) * RE.Cells(resat, hedef) / 100) * ra.[D14] * 100
        End If
        ra.Cells(rasat, 7) = RE.Cells(resat, 8): ra.Cells(rasat, 9) = RE.Cells(resat, hedef + 5) 'hedef+5 yerine 10 yazarsak düşük kaloriyi alır, bu haliyle seçime göre kaloride değişir.14.07.2016
    Next
Next
With ra.Range("A17:A" & ra.[C60].End(3).Row)
    .Formula = "=IF(ISERROR(MATCH(B17,$H$1:$H$14,0)),"""",MAX($A$16:A16)+1)": .Value = .Value
End With

        
ra.[H1].NumberFormat = "dd/mm/yyyy" 
ra.[H60].NumberFormat = "#,##0.00"
ra.[H61:H62].NumberFormat = "#,##0.00"
ra.[H64:H67].NumberFormat = "#,##0.00"
ra.[F19:I59].NumberFormat = "#,##0.000"
ra.[G17:H17].NumberFormat = "#,##0.000"
ra.[E3:F4].NumberFormat = "#,##0.00"
ra.[I19:I59].NumberFormat = "#.00"
[COLOR="red"]end if[/COLOR]
MsgBox "İşlem Tamam !!!"

End Sub
 

1Al2Ver

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

Öncelikle ilginiz için teşekkür ederim.

Kırmızı yerleri ilave ettim, ancak ; "object required" hatası aldım, bir yerde yanlış yapmış olabilir miyim ?
 

Ö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.

Sayın fireman64'ün verdiği cevapta;
-- üst kısımdaki kırmızı satırları, Set ra=..... şeklinde başlayan satırdan sonrasına,
-- en alt kısımdaki kırmızı End If satırının ise End Sub satırının hemen üstüne
almanız yeterli olması lazım.
.
 

1Al2Ver

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

Sayın fireman64'ün verdiği cevapta;
-- üst kısımdaki kırmızı satırları, Set ra=..... şeklinde başlayan satırdan sonrasına,
-- en alt kısımdaki kırmızı End If satırının ise End Sub satırının hemen üstüne
almanız yeterli olması lazım.
.
Teşekkür ederim Sayın Ömer BARAN.
 
Üst