Makro ile çizilen nesnenin makro ile silinmesi

Katılım
20 Ocak 2007
Mesajlar
112
Excel Vers. ve Dili
excel-2003 türkçe
Merhaba;

Ek'teki dosyada makro ile çizim yaptırıyorum. Bu şekli makro ile de silmek istiyorum. Makroyu oluşturdum fakat hata veriyor. Nerede hata yapıyorum acaba?

Teşekkürler.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,731
Excel Vers. ve Dili
Excel 2019 Türkçe
Aşağıdaki kodu dener misiniz?
Kod:
Sub sil()
Set myDocument = Worksheets(1)
For Each s In myDocument.Shapes
    If s.AutoShapeType = msoShapeRectangle Then
       s.Delete
    End If
Next
End Sub
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Alternatif olur düşüncesiyle örnek dosya ekliyorum. Çizim nesnesine Ad Tanımlanmıştır.
 
Katılım
20 Ocak 2007
Mesajlar
112
Excel Vers. ve Dili
excel-2003 türkçe
Teşekkürler,

Her ikisi de oluyor. Birinci örnekte şekillerin tamamı siliniyor. 2. örnekte seçtiğimiz şekil siliniyor. İhtiyaca göre işimize hangisi gelirse kullanabiliriz.

İyi çalışmalar.
 
Katılım
20 Ocak 2007
Mesajlar
112
Excel Vers. ve Dili
excel-2003 türkçe
Ben bu kodu başka kodlarla birlikte kullanıyorum, aşağıdaki gibi, benim istediğim eğer şekil varsa silsin, şekil yoksa o koddaki şekil silme satırını gaile almasın. Şekil yokken bu makroyu çalıştırdığımda hata veriyor.

Kod:
Sub sil()
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect ("111")
    Rows("1:33").Select
    Selection.EntireRow.Hidden = False
    ActiveSheet.Shapes("yasin").Select
    Selection.Delete
    Range("A1:G1").Select
    Range("I1:L1").Select
    Range("A26").Select
    ActiveCell.FormulaR1C1 = "B- Kolon Kesit Hesabı :"
    Range("A31").Select
    ActiveCell.FormulaR1C1 = "C- Isınma Hesabı :"
    Range("I1:L1").Select
    ActiveSheet.Protect ("111")
End Sub
 
Katılım
17 Şubat 2006
Mesajlar
981
Excel Vers. ve Dili
M.Office Excel 2003 Tr.
Kodlarınıza kırmızı yeri ilave edin.

Kod:
Sub sil()
    Application.ScreenUpdating = False
    'ActiveSheet.Unprotect ("111")
    Rows("1:33").EntireRow.Hidden = False
    [COLOR=red]On Error Resume Next[/COLOR]
    ActiveSheet.Shapes("yasin").Select
    Selection.Delete
    [A26] = "B- Kolon Kesit Hesabı :"
    [A31] = "C- Isınma Hesabı :"
    'ActiveSheet.Protect ("111")
End Sub
 
Katılım
20 Ocak 2007
Mesajlar
112
Excel Vers. ve Dili
excel-2003 türkçe
Kırmızı yeri ilave ettiğimde ne var ne yok hepsini siliyor. Başka çözüm yolu var mı acaba?
 
Katılım
17 Şubat 2006
Mesajlar
981
Excel Vers. ve Dili
M.Office Excel 2003 Tr.
Kırmızı yeri ilave ettiğimde ne var ne yok hepsini siliyor. Başka çözüm yolu var mı acaba?
"Ne var ne yok derken" şekil dışında başka verileri mi kasdediyorsunuz?
 
Katılım
20 Ocak 2007
Mesajlar
112
Excel Vers. ve Dili
excel-2003 türkçe
Sizin verdiğiniz örnekte de olmuyor. Şekil yok ise belirtilen öğe bulunamadı diye hata veriyor. Bunun başka yolu olmalı,

Teşekkürler,
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Aşağıdaki kod satırını kodlarınızın en başına yazıp deneyin.

On Error Resume Next
 
Katılım
20 Ocak 2007
Mesajlar
112
Excel Vers. ve Dili
excel-2003 türkçe
On Error Resume Next

satırını Kombo arkadaşın gönderdiği dosyaya uygulayınca oluyor fakat benim dosyama uyguladığımda aktif sayfadaki tüm verileri siliyor anlayamadım.

Kod:
Sub sil()
    On Error Resume Next
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect ("111")
    Rows("1:33").Select
    Selection.EntireRow.Hidden = False
    ActiveSheet.Shapes("yasin").Select
    Selection.Delete
    Range("A1:G1").Select
    Range("I1:L1").Select
    Range("A26").Select
    ActiveCell.FormulaR1C1 = "B- Kolon Kesit Hesabı :"
    Range("A31").Select
    ActiveCell.FormulaR1C1 = "C- Isınma Hesabı :"
    Range("I1:L1").Select
    ActiveSheet.Protect ("111")
End Sub
 
Katılım
17 Şubat 2006
Mesajlar
981
Excel Vers. ve Dili
M.Office Excel 2003 Tr.
Kod:
 [LEFT]Sub sil()
[LEFT]   On Error Resume Next
   Application.ScreenUpdating = False
   ActiveSheet.Unprotect ("111")
   [COLOR=red]Rows("1:33").Select[/COLOR]
   Selection.EntireRow.Hidden = False
   ActiveSheet.Shapes("yasin").Select
   Selection.Delete
   [COLOR=green]Range("A1:G1").Select[/COLOR]
[COLOR=green]   Range("I1:L1").Select[/COLOR]
   [COLOR=red]Range("A26").Select[/COLOR]
   ActiveCell.FormulaR1C1 = "B- Kolon Kesit Hesabı :"
   [COLOR=red]Range("A31").Select[/COLOR]
   ActiveCell.FormulaR1C1 = "C- Isınma Hesabı :"
   [COLOR=red][COLOR=green]Range("I1:L1").Select[/COLOR][/COLOR][COLOR=red]
[/COLOR]   ActiveSheet.Protect ("111")
End Sub[/LEFT]
Kodlarınızda işinize yaramayan kısımlarda var. Sınırlı makro bilgimle şunu söyleyebilirim, Herhalde onlarda seçili kalıyor ve o kısımlarda siliniyor. Özellikle Rows ("1:33") kısmını DELETE komutundan sonra yazın.

ActiveSheet.Shapes("yasin").Select
Selection.Delete
Rows("1:33").EntireRow.Hidden = False

Gibi. Bir de öyle deneyin.

Yeşil alanları da seçmenizin mantığını anlamadım?
[/LEFT]
 
Üst