• DİKKAT

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

vba ile hücre rengini neden değiştiremiyorum

  • Konbuyu başlatan Konbuyu başlatan mocalan
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
22 Ağustos 2011
Mesajlar
32
Excel Vers. ve Dili
2003 - türkçe
merhaba,
vba ile bir hücrenin ya da şeklin zemin rengini belirleyebiliyorum ve içine de istediğim şeyi yazdırabiliyorum. ancak o sayfayı normal excel olarak açıp araç çubukları yardımıyla dolgu rengini "dolgu yok" olarak ayarlayıp (veya başka bir renk seçip)kaydettikten sonra vba kodumu yeniden çalıştırdığımda artık o hücreye/şekle istediğim rengi atayamadığımı gördüm. aynı şey yazılar için de geçerli. normal excel olarak açıp hücre/şekil içindeki yazıları elle sildikten sonra vba kodumu yeniden çalıştırdığımda o hücreye/şekle istediğimi artık yazamıyorum. (kod hata vermeden çalışıyor ama artık istediğimi yapmıyor) sanki normal excel sayfasından elle yaptığım değişikliklerin önceliği varmış gibi bir durum var. bazı dos komutlarındaki /f parametresi gibi "zorla yap" şeklinde bir parametre mi kullanmalıyım? ve ya hücre/şekil rengini ve içeriğini kod ile mi resetleyip default değerine mi döndürmeliyim? eğer öyleyse hangi kodla?
 
Kullandığınız kodları yazarmısınız.
 
Bahsettiğiniz hücrelerde, koşullu biçimlendirme yapılmış mı kontrol ediniz.
 
kullandığım kodlar ve örnek dosyam

hücre veya şekillerde koşullu biçimlendirme yok. herşey normal düzenindeyken oluyor bu. (gkroki sayfasındaki şekiller ve onların arasındaki hücreleri kasdediyorum)
 

Ekli dosyalar

Sayın mocalan,
Dosyanıza baktım.Dolgu renklerini,şekillerdekiler de dahil sildim.Kaydettim.Dosyayı kapatıp açtım.Yeniden çalıştırdım ve TMO hariç tüm şekiller ve hücreler ilgili renkler ile doldu.TMO renksiz kaldı çünkü renkler sayfasında firmalar arasında o yok.Sizde,benim yaptığım şekilde yapılınca renkler dolmuyor dediniz değil mi?Öyleyse sıkıntı başka bir yerde.Kodlarda sıkıntı yok gibi.
 
evet bedersu, bende durum bu. sizin yaptığınız gibi yapınca bende kod artık işlevini yerine getirmiyor. o zaman sıkıntı nerde olabilir ki?
 
2003 versiyonunda benzeri sorunlar bende de yaşandı. 2007 versiyonunda herhangi bir sorunla karşılaşmadım. Bilginize...
 
Bu sorunu ortadan kaldırmak için aşağıdaki kırmızı renkli ilaveyi ilgili her satıra yapabilir,

Kod:
If kuyukodu = "5001001" Then ActiveSheet.Shapes(1).Fill.ForeColor.RGB = renk: [B][COLOR=red]ActiveSheet.Shapes(1).Fill.Solid[/COLOR][/B]: ActiveSheet.Shapes(1).TextFrame.Characters.Text = "   " & kuyukodu & "       " & kapasite & "  " & "TON" & "      " & gemiadi 'RGB(170, 80, 170) şeklinde renk koyla da boyayabiliriz

yada aşağıdaki döngüyü kodların en sonunada ilave edebilirsiniz.

Kod:
For a = 1 To 14
ActiveSheet.Shapes(a).Fill.Solid
Next
 
Levent Bey, kodları denedim ama çözüm olmadı. Ben hafta içinde bir de 2007 versiyonunda deniyim. sonucu iletirim. Teşekkürler.
 
sorun 2003 versiyonuymuş

merhaba,
2007 versiyonu ile denedim. herhangi bir sorun yok. kod gayet güzel çalışıyor. İlginize teşekkür ederim. iyi çalışmalar.
 
merhaba,
2007 versiyonu ile denedim. herhangi bir sorun yok. kod gayet güzel çalışıyor. İlginize teşekkür ederim. iyi çalışmalar.

2003 versiyonunda da çalışıyor. Aşağıdaki gibi ilave ederek deneyin.

Kod:
Sub gkrokiciz()
.
.
.
Next
For a = 1 To 14
ActiveSheet.Shapes(a).Fill.Solid
Next
End Sub
 
Levent Bey tekrar denedim ama bende maalesef durum aynı. (2003 versiyonda) solid formatı sabitliyor diye düşünüyorum. bu durumda sanki modülün sonuna değil de, işin başında formatları resetleyip defaulta getiren ve bizim yeni format yapmamıza hazırlayan bir koda ihtiyacımız var gibi.
 
Levent Bey tekrar denedim ama bende maalesef durum aynı. (2003 versiyonda) solid formatı sabitliyor diye düşünüyorum. bu durumda sanki modülün sonuna değil de, işin başında formatları resetleyip defaulta getiren ve bizim yeni format yapmamıza hazırlayan bir koda ihtiyacımız var gibi.

İlginç bir durum. Hem evde hemde işyerindeki 2003 versiyonlarında hiç bir sorunla karşılaşmadım. Birde aşağıdaki kırmızı renkli satırı ekleyerek deneyin.

Kod:
Sub gkrokiciz() 
.
.
.
Next
[B][COLOR=Red]Application.ScreenUpdating = True[/COLOR][/B]
For a = 1 To 14 ActiveSheet.Shapes(a).Fill.Solid
Next
End Sub
 
Maalesef yine durumda bir değişiklik yok Levent Bey. Acaba benim excelde eksik birşeyler mi var? öyle olsa bile bu durum çok saçma. belki ayarlarla ilgili bir sorundur? Bendeki kodun son hali bu:

Sub gkrokiciz()
Application.ScreenUpdating = False
Set s1 = Sheets("gumruklu silo")
Set s2 = Sheets("renkler")
Set s3 = Sheets("gkroki")
s1.Select
For i = 2 To 20
kuyukodu = s1.Cells(i, "b")
kapasite = s1.Cells(i, "c")
firmaadi = s1.Cells(i, "g")
gemiadi = s1.Cells(i, "h")
Set d = s2.Range("A2:B15").Find(firmaadi) 'd yi firmadının bulunduğu hücre olarak set ediyoruz.
renk = d.Offset(0, 1).Interior.Color 'firmanın yanındaki hücrede renk olduğundan d nin 0 satır sonrası 1 sutun sonrasının rengini(hex code) renk değişkenine atadık. colorindex deseydik rengin 1-56 arasındaki kodunu elde edecektik
s3.Select
If kuyukodu = "5001001" Then ActiveSheet.Shapes(1).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(1).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi 'RGB(170, 80, 170) şeklinde renk koyla da boyayabiliriz
If kuyukodu = "5001002" Then ActiveSheet.Shapes(2).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(2).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001003" Then ActiveSheet.Shapes(3).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(3).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001004" Then ActiveSheet.Shapes(4).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(4).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001005" Then ActiveSheet.Shapes(5).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(5).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001006" Then ActiveSheet.Shapes(6).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(6).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001007" Then ActiveSheet.Shapes(7).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(7).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001008" Then ActiveSheet.Shapes(8).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(8).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001009" Then ActiveSheet.Shapes(9).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(9).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001010" Then ActiveSheet.Shapes(10).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(10).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001011" Then ActiveSheet.Shapes(11).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(11).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001012" Then ActiveSheet.Shapes(12).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(12).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001013" Then ActiveSheet.Shapes(13).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(13).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001014" Then ActiveSheet.Shapes(14).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(14).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi
If kuyukodu = "5001015" Then Worksheets(3).Range("C10:D16").Interior.Color = renk: ActiveSheet.Range("C11") = kuyukodu & " " & kapasite & " " & "TON"
If kuyukodu = "5001016" Then Worksheets(3).Range("E10:F16").Interior.Color = renk: ActiveSheet.Range("E11") = kuyukodu & " " & kapasite & " " & "TON"
If kuyukodu = "5001017" Then Worksheets(3).Range("G10:H16").Interior.Color = renk: ActiveSheet.Range("G11") = kuyukodu & " " & kapasite & " " & "TON"
If kuyukodu = "5001018" Then Worksheets(3).Range("K10:L16").Interior.Color = renk: ActiveSheet.Range("K12") = " " & kuyukodu: ActiveSheet.Range("K13") = " " & kapasite & " " & "TON"
If kuyukodu = "5001019" Then Worksheets(3).Range("M10:O16").Interior.Color = renk: ActiveSheet.Range("M11") = " " & kuyukodu & " " & kapasite & " " & "TON"
'ActiveSheet.Shapes(kuyukodu).Select 'bu kod çalışmadı
'Selection.Shape.Interior.ColorIndex = renk 'bu kod çalışmadı
'renkleri sabitlemek için önerilen kod:
'If kuyukodu = "5001001" Then ActiveSheet.Shapes(1).Fill.ForeColor.RGB = renk: ActiveSheet.Shapes(1).Fill.Solid: ActiveSheet.Shapes(1).TextFrame.Characters.Text = " " & kuyukodu & " " & kapasite & " " & "TON" & " " & gemiadi 'RGB(170, 80, 170) şeklinde renk koyla da boyayabiliriz
Next
'renkleri sabitlemek için önerilen kod:
Application.ScreenUpdating = True
For a = 1 To 14
ActiveSheet.Shapes(a).Fill.Solid
Next
End Sub
 
Üstteki mesajda verilen kodlar 2003 versiyonunda, bende sorun vermeden çalıştı.
 
bende çalışmıyor. bir gariplik var ama nerde olduğunnu anlayamadım.

ExcelF1, belki benim excel ayarlarımda sorun vardır, ya da excelde eksik bir şeyler vardır. ama nerden bakarsak bakalım bu durum çok saçma. sonuçta şeklin formatı ne olursa olsun kod bu formatı değiştirebilmeli.
 
2007 vresiyonda sorun olmadığı için konuyu kapatıyorum

ilgilenen ve yardımcı olan arkadaşlara teşekkür ederim.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst