ynmcan
Altın Üye
- Katılım
- 30 Ağustos 2008
- Mesajlar
- 677
- Excel Vers. ve Dili
- 2010 türkçe
- Altın Üyelik Bitiş Tarihi
- 29-05-2025
Merhaba arkadaşlar;
Uzun bir açıklama olacak kusura bakmayın. Yardımcı olacak olan tüm arkadaşlara şimdiden teşekkür ederim
Ekteki dosyada; Kan şekeri değerlerini girdiğim tüm hücrelerde değerlere göre görünür hale gelen 5 ayrı şekil var ( sağdaki çizelgede görüldüğü gibi )
Sağdaki çizelgedeki şekil isimleri tüm hücrelerde aynı ( NormalDeğer 1, OrtaDüşükDeğer 1, OrtaYüksekDeğer 1, AşırıDüşükDeğer 1, AşırıYüksekDeğer 1 )
sağdaki çizelgedeki hücrelerdeki şekillerin adlar aynı olduğu için kopyala yapıştır olarak kolay şekilde yerleştirdim ve aktif hücreye girilen değer göre aktif hücredeki ilgili şeklin görünür hale gelmesi diğerlerinin ise gizlenmesi için aşağıdaki kodu yazdım.
-----------------------------------------------------------------------------
sat=ActiveCell.Row
sut=ActiveCell.Column
If Cells(sat, sut) >= 90 And Cells(sat, sut) <= 160 Then
ActiveSheet.Shapes.Range(Array("NormalDeğer " & sut & sat)).Visible = msoTrue
ActiveSheet.Shapes.Range(Array("OrtaDüşükDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("OrtaYüksekDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("AşırıDüşükDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("AşırıYüksekDeğer " & sut & sat)).Visible = msoFalse
End If -----------------------------------------------------------------------------
Ancak kod aktif hücredeki şekli değil, her seferinde ilk kopyalama yaptığım "R10" hücredeki şekil görünür hale getiriyor.
Bundan dolayı soldaki çizelgeye şekillerin adlarını hücre sütun ve satır değerlerinin birleşmesinden oluşan adlar ile değiştirdim
( Örnek olarak;"D10" hücresindeki şekil adları 4. sütun 10. satırın birleşimi 410 olduğundan, NormalDeğer 410, OrtaDüşükDeğer 410, OrtaYüksekDeğer 410, AşırıDüşükDeğer 410, AşırıYüksekDeğer 410 şeklinde değiştirdim )
Ancak bu işlem çok uğraştırdığı için şu anda iki satırı yapabildim.
Kodun sat, sut değişkenini değiştirerek aşağıdaki şekilde yazdım
-----------------------------------------------------------------------------
For sut = 4 To 14
For sat = 10 To 24
If Cells(sat, sut) >= 90 And Cells(sat, sut) <= 160 Then
On Error Resume Next
ActiveSheet.Shapes.Range(Array("NormalDeğer " & sut & sat)).Visible = msoTrue
ActiveSheet.Shapes.Range(Array("OrtaDüşükDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("OrtaYüksekDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("AşırıDüşükDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("AşırıYüksekDeğer " & sut & sat)).Visible = msoFalse
End If
next sat
next sut
-----------------------------------------------------------------------------
Ancak bu kod tüm hücreleri dolanarak değerlendirdiği için yavaş çalışıyor.
( Ayrıca şekil adlarını da tüm hücrelere göre yeniden adlandırmakta zor bir iş )
Yukarıdaki açıklamalarıma göre bu işlemi daha kısa ve hızlı yapabilecek bir koda ihtiyacım var
(şekiller aynı kalması şartı ile, aynı işlemi yapacak Fonksiyon yada koşullu biçimlendirmede olabilir.)
Uzun bir açıklama olacak kusura bakmayın. Yardımcı olacak olan tüm arkadaşlara şimdiden teşekkür ederim
Ekteki dosyada; Kan şekeri değerlerini girdiğim tüm hücrelerde değerlere göre görünür hale gelen 5 ayrı şekil var ( sağdaki çizelgede görüldüğü gibi )
Sağdaki çizelgedeki şekil isimleri tüm hücrelerde aynı ( NormalDeğer 1, OrtaDüşükDeğer 1, OrtaYüksekDeğer 1, AşırıDüşükDeğer 1, AşırıYüksekDeğer 1 )
sağdaki çizelgedeki hücrelerdeki şekillerin adlar aynı olduğu için kopyala yapıştır olarak kolay şekilde yerleştirdim ve aktif hücreye girilen değer göre aktif hücredeki ilgili şeklin görünür hale gelmesi diğerlerinin ise gizlenmesi için aşağıdaki kodu yazdım.
-----------------------------------------------------------------------------
sat=ActiveCell.Row
sut=ActiveCell.Column
If Cells(sat, sut) >= 90 And Cells(sat, sut) <= 160 Then
ActiveSheet.Shapes.Range(Array("NormalDeğer " & sut & sat)).Visible = msoTrue
ActiveSheet.Shapes.Range(Array("OrtaDüşükDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("OrtaYüksekDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("AşırıDüşükDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("AşırıYüksekDeğer " & sut & sat)).Visible = msoFalse
End If -----------------------------------------------------------------------------
Ancak kod aktif hücredeki şekli değil, her seferinde ilk kopyalama yaptığım "R10" hücredeki şekil görünür hale getiriyor.
Bundan dolayı soldaki çizelgeye şekillerin adlarını hücre sütun ve satır değerlerinin birleşmesinden oluşan adlar ile değiştirdim
( Örnek olarak;"D10" hücresindeki şekil adları 4. sütun 10. satırın birleşimi 410 olduğundan, NormalDeğer 410, OrtaDüşükDeğer 410, OrtaYüksekDeğer 410, AşırıDüşükDeğer 410, AşırıYüksekDeğer 410 şeklinde değiştirdim )
Ancak bu işlem çok uğraştırdığı için şu anda iki satırı yapabildim.
Kodun sat, sut değişkenini değiştirerek aşağıdaki şekilde yazdım
-----------------------------------------------------------------------------
For sut = 4 To 14
For sat = 10 To 24
If Cells(sat, sut) >= 90 And Cells(sat, sut) <= 160 Then
On Error Resume Next
ActiveSheet.Shapes.Range(Array("NormalDeğer " & sut & sat)).Visible = msoTrue
ActiveSheet.Shapes.Range(Array("OrtaDüşükDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("OrtaYüksekDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("AşırıDüşükDeğer " & sut & sat)).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("AşırıYüksekDeğer " & sut & sat)).Visible = msoFalse
End If
next sat
next sut
-----------------------------------------------------------------------------
Ancak bu kod tüm hücreleri dolanarak değerlendirdiği için yavaş çalışıyor.
( Ayrıca şekil adlarını da tüm hücrelere göre yeniden adlandırmakta zor bir iş )
Yukarıdaki açıklamalarıma göre bu işlemi daha kısa ve hızlı yapabilecek bir koda ihtiyacım var
(şekiller aynı kalması şartı ile, aynı işlemi yapacak Fonksiyon yada koşullu biçimlendirmede olabilir.)
Ekli dosyalar
-
63.3 KB Görüntüleme: 6