dış bağlantı bulunan hücreleri temizleme (value = "")

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Forumda daha evvel sayın haluk ve sayın class37 tarafından verilmmiş olan bu kodlar dış bağlantı bulunan hücreleri sarı ile işaretliyor...
ancak ben hücrenin formülden arındırlmasını ve ardında hiç bir işaret bırakılmamasını istiyorum.
kodlarda ne gibi değişklik yapılmalıdır?

Kod:
Sub ExRef()
Dim MyRange As Range
Dim i As Integer, j As Integer, No As Integer
Dim MyMsg1 As String, MyMsg2 As String, MyMsg3 As String
Dim MyArray()
For i = 1 To Worksheets.Count
No = 0
For Each MyRange In Sheets(i).UsedRange
If InStr(1, MyRange.Formula, "[") Then
MyRange.Interior.ColorIndex = 6
No = No + 1
ReDim MyArray(1 To No)
MyArray(No) = Sheets(i).Name & " --- " & MyRange.Address(False, False)
For j = LBound(MyArray) To UBound(MyArray)
If MyArray(j) <> "" Then MyMsg2 = MyMsg2 & vbCrLf & MyArray(j)
Next
End If
Next
MyMsg1 = MyMsg1 & vbCrLf & Sheets(i).Name & " sayfasında " & No & " adet "
Next
MyMsg3 = "(Bulunan hücreler sarı renkle işaretlenmiştir.)"
MsgBox MyMsg1 & vbCrLf & WorksheetFunction.Rept("--", 20) & vbCrLf & "Dış bağlantılı hücre bulundu." _
& vbCrLf & vbCrLf & "Bulunan hücreler :" & vbCrLf & MyMsg2 _
& vbCrLf & vbCrLf & MyMsg3, , "Rapor !"
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,650
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

A&#351;a&#287;&#305;daki kodu denermisiniz.

Kod:
Sub DI&#350;_BA&#286;LANTILI_H&#220;CRELER&#304;_TEM&#304;ZLE()
    On Error GoTo Son
    Dim H&#252;cre As Range
    For Each H&#252;cre In Cells.SpecialCells(xlCellTypeFormulas, 23).Cells
    If InStr(1, H&#252;cre.Formula, "[") Then
    H&#252;cre.Value = Empty
    Say = Say + 1
    End If
    Next
    Ek_Mesaj = IIf(Say = 1, "i&#231;eri&#287;i", "i&#231;erikleri")
    MsgBox Say & " adet d&#305;&#351; ba&#287;lant&#305;l&#305; h&#252;cre bulunmu&#351;tur ve " & Ek_Mesaj & " temizlenmi&#351;tir.", vbInformation
    Exit Sub
Son: MsgBox "D&#305;&#351; ba&#287;lant&#305;l&#305; h&#252;cre bulunamam&#305;&#351;t&#305;r.", vbExclamation
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam &#246;ncelikle te&#351;ekk&#252;rler,

Cells.SpecialCells(xlCellTypeFormulas, 23).Cells
If InStr(1, H&#252;cre.Formula, "[") Then
Ek_Mesaj = IIf(Say = 1, "i&#231;eri&#287;i", "i&#231;erikleri")

sat&#305;rlar&#305;n&#305; a&#231;&#305;klayabilirseniz sevinirim.
sayg&#305;lar&#305;mla
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,650
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Kod:
Cells.SpecialCells(xlCellTypeFormulas, 23).Cells
Bu sat&#305;rda sayfadaki t&#252;m h&#252;crelere bak sadece form&#252;l i&#231;eren h&#252;creleri baz al komutu veriliyor.

Kod:
If InStr(1, H&#252;cre.Formula, "[") Then
Bu sat&#305;rda form&#252;l i&#231;eren h&#252;crede karakter olarak k&#246;&#351;eli parantez varm&#305; yokmu kontrol et komutu veriliyor.

Kod:
Ek_Mesaj = IIf(Say = 1, "i&#231;eri&#287;i", "i&#231;erikleri")
Bu sat&#305;r ise kullanc&#305;y&#305; bilgilendirmek amac&#305;yla ekrana gelecek mesaj kutusundaki c&#252;mle d&#252;&#351;&#252;kl&#252;&#287;&#252;n&#252; gidermek amac&#305;yla olu&#351;turulmu&#351;tur. Tamamen opsiyoneldir. Gereksiz g&#246;r&#252;l&#252;rse silinebilir.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
a&#231;&#305;klamalr&#305;n&#305;z iin te&#351;ekk&#252;rler
IIF komutu nedir diye sorabilirmiyim birde?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,650
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

IIF komutu IF ile ba&#351;layan &#351;artl&#305; sorgulama komutunu tek sat&#305;rda yazabilme imkan&#305; sa&#287;lar.

&#214;rne&#287;in a&#351;a&#287;&#305;daki KO&#350;UL_1 ve KO&#350;UL_2 makrolar&#305; ayn&#305; &#351;eyi ifade etmektedir. Duruma g&#246;re her ikiside kullan&#305;labilir.

Kod:
Sub KO&#350;UL_1()
If [A1] = 1 Then
De&#287;i&#351;ken = "DO&#286;RU"
Else
De&#287;i&#351;ken = "YANLI&#350;"
End If
MsgBox De&#287;i&#351;ken
End Sub
 
Sub KO&#350;UL_2()
De&#287;i&#351;ken = IIf([A1] = 1, "DO&#286;RU", "YANLI&#350;")
MsgBox De&#287;i&#351;ken
End Sub


Kod:
Ek_Mesaj = IIf(Say = 1, "i&#231;eri&#287;i", "i&#231;erikleri")
Kod:
De&#287;i&#351;ken = IIf(Ko&#351;ul, Ko&#351;ul Do&#287;ru &#304;se Yap&#305;lacak &#304;&#351;lem, Ko&#351;ul Do&#287;ru De&#287;ilse Yap&#305;lacak &#304;&#351;lem)
A&#231;&#305;klamas&#305;;

Ek_Mesaj ad&#305;nda de&#287;i&#351;ken olu&#351;turuyoruz.

D&#246;ng&#252;de kulland&#305;&#287;&#305;m&#305;z Say de&#287;i&#351;keni i&#351;lem yap&#305;lan h&#252;cre say&#305;s&#305; ifade
etmektedir. Bu de&#287;er 1 ise mesaj kutusunda &#231;o&#287;ul kelime (1 adet d&#305;&#351; ba&#287;lant&#305;l&#305; h&#252;cre bulunmu&#351;tur ve i&#231;erikleri temizlenmi&#351;tir.) kullanmak yanl&#305;&#351; olur. Bu sebeple i&#231;erikleri kelimesini i&#231;eri&#287;i olarak de&#287;i&#351;tiriyoruz.

Ko&#351;ulumuzun sa&#287;lanmad&#305;&#287;&#305; durumda ise Ek_Mesaj=i&#231;erikleri &#351;art&#305; olu&#351;acakt&#305;r. Bu durumda da Say de&#287;i&#351;keni 1 'den b&#252;y&#252;k yani &#231;o&#287;ul olacakt&#305;r. Sonu&#231; olarak mesaj yaz&#305;s&#305;nda i&#231;erikleri kelimesi kullan&#305;lacakt&#305;r.
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Sayın hsayar ve sayın Cost control, paylaşım için çok teşekkürler. Gerçekten bu kodlar çok yararlı oldu.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
syn COST_CONTROL &#231;ok g&#252;zel a&#231;&#305;klama.
bunu excel dersanesine koyman&#305;z&#305; &#246;neririm.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sayt&#305;n costcontrol a&#231;&#305;klmalar&#305;n&#305;z i&#231;in te&#351;ekk&#252;r ederim
 
Üst