[Yardım]  For-Next komutu ile BOM kontrolü

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

For-Next komutu ile BOM kontrolü

İleti#1)  ensarkutuk » 21 Haz 2022 10:20

Merhabalar

Yazdığım bir macro için yardımlarınıza ihtiyacım var. Amacım elimdeki BOM (Bill of Material) dosyasında bulunan malzemeleri "ana montaj", "detay parçalar" olarak ayırmak ve bunları renklendirmek. yaklaşık 20000 satır malzeme var.

Ana montajları tariflemek için A sutununda ilgili satıra manuel olarak "A" yazıyorum. B sutununda ise parçanın seviyesi bulunuyor 1,2,3 vb gibi. (BOM yapısını bilmeyenler için bir ana montajın altındaki parçaların seviyesi kendisininkinden büyüktür.)

Yazdığım kod aşağıdaki şekilde. problem ise else exit for satırını yazdığımda hücreleri sarıya boyamıyor. Yazmadığımda boyuyor ama 500 satırı da "lvl" için kontrol ediyor. Ama ben içteki for döngüsünün kendinden küçük yada kendine eşit bir sayı gördüğü anda durmasını istiyorum.

Yardımlarınız için şimdiden teşekkürler. [TESEKKÜR]

--------------------------------------------------------------
Sub ()

For i = 2 To 20000 Step 1
If Cells(i, "A").Value = "A" Then
Cells(i, "A").Interior.Color = vbGreen
Cells(i, "B").Interior.Color = vbGreen
Cells(i, "C").Interior.Color = vbGreen
Cells(i, "D").Interior.Color = vbGreen
Dim lvl As Integer
lvl = Cells(i, "B").Value
For x = i To i + 500 Step 1
If Cells(x, "B").Value > lvl Then
Cells(x, "A").Interior.Color = vbYellow
Cells(x, "B").Interior.Color = vbYellow
Cells(x, "C").Interior.Color = vbYellow
Cells(x, "D").Interior.Color = vbYellow
Else
Exit For
End If
Next
End If
Next
End Sub
Kullanıcı avatarı
ensarkutuk
 
Kayıt: 21 Haz 2022 10:07
Meslek: Makine Mühendisi
Yaş: 32
İleti: 1
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Sakarya

Yıllık Maaş Bordrosu Hesaplama 2022

Cevap: For-Next komutu ile BOM kontrolü

İleti#2)  yusuf43 » 21 Haz 2022 11:32

Kod: Tümünü seç
Dim lvl As Integer
For i = 2 To 20000 Step 1
If Cells(i, "A").Value = "A" Then
Cells(i, "A").Interior.Color = vbGreen
Cells(i, "B").Interior.Color = vbGreen
Cells(i, "C").Interior.Color = vbGreen
Cells(i, "D").Interior.Color = vbGreen

lvl = Cells(i, "B").Value
For x = i To i + 500 Step 1
If Cells(x, "B").Value > lvl Then
Cells(x, "A").Interior.Color = vbYellow
Cells(x, "B").Interior.Color = vbYellow
Cells(x, "C").Interior.Color = vbYellow
Cells(x, "D").Interior.Color = vbYellow
End If

If lvl <> Cells(i, "B").Value Then
Exit For
End If
Next
End If
Next


Bu şekilde dener misin. Kolay gelsin.
Kullanıcı avatarı
yusuf43
Site Dostu
 
Kayıt: 19 May 2021 12:00
Meslek: EV HANIMI
Yaş: 46
İleti: 723
 
Cinsiyet: Bayan
Bulunduğunuz İl / Semt: KÜTAHYA


Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: Google [Bot] ve 6 misafir

Bumerang - Yazarkafe