EXCEL VBA İLE GEOMETRİK DESEN ÇİZİLEBİLİR Mİ

Katılım
12 Kasım 2019
Mesajlar
7
Excel Vers. ve Dili
excel 2010 türkçe
Arkadaşlar herkese merhaba, bir sorum olacak .excel vba ile geometrik desenler çizdirebilir miyiz. selçuklu yıldızı desenine benzeyen desenler çizilebilir mi. Desen çapı, kol genişliği vs. ölçüleri bizden isteyecek ve deseni çizebilecek. Bilen arkadaşlar cevap verirlerse çok sevinirim. Şimdiden ilginize teşekkür ederim.
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
513
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Kod:
Sub DrawSelcukluStar()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1)
    
    Dim diameter As Double
    Dim armWidth As Double
    Dim centerX As Double
    Dim centerY As Double
  
    diameter = Application.InputBox("Desenin çapını girin:", Type:=1)
    armWidth = Application.InputBox("Kol genişliğini girin:", Type:=1)
    
    centerX = ws.Cells(1, 1).Width + diameter / 2
    centerY = ws.Cells(1, 1).Height + diameter / 2
  
    ws.Shapes.SelectAll
    Selection.Delete
  
    Dim i As Integer
    Dim angle As Double
    Dim x1 As Double, y1 As Double, x2 As Double, y2 As Double
    Dim outerRadius As Double, innerRadius As Double
    
    outerRadius = diameter / 2
    innerRadius = (outerRadius - armWidth) / 2
    
    For i = 0 To 7
        angle = i * 45 * WorksheetFunction.Pi / 180
        x1 = centerX + outerRadius * Cos(angle)
        y1 = centerY - outerRadius * Sin(angle)
        x2 = centerX + innerRadius * Cos(angle + 22.5 * WorksheetFunction.Pi / 180)
        y2 = centerY - innerRadius * Sin(angle + 22.5 * WorksheetFunction.Pi / 180)
      
        ws.Shapes.AddLine centerX, centerY, x1, y1
        ws.Shapes.AddLine x1, y1, x2, y2
    Next i
  
    ws.Shapes.AddShape msoShapeOval, centerX - innerRadius, centerY - innerRadius, 2 * innerRadius, 2 * innerRadius
    
End Sub
Bu kod, Selçuklu yıldızının sekiz köşesini çizer. Kullanıcıdan alınan çap ve kol genişliği bilgileri ile deseni çizer. VBA kodu temel geometrik hesaplamalar kullanarak her bir kolun başlangıç ve bitiş noktalarını belirler ve ardından bunları çizer.

İlk değer 250 yazdım sonraki değer 75 yazdım deseni çizdi.Denermisiniz
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,966
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Alternatif

Kod:
Sub Yildiz_Ciz()
    Dim Cap As Integer
    Cap = InputBox("Çap belirtiniz.", vbExclamation)
    ActiveSheet.Shapes.AddShape(msoShape8pointStar, 50, 50, Cap, Cap).Select
End Sub
 
Katılım
12 Kasım 2019
Mesajlar
7
Excel Vers. ve Dili
excel 2010 türkçe
Kod:
Sub DrawSelcukluStar()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1)
   
    Dim diameter As Double
    Dim armWidth As Double
    Dim centerX As Double
    Dim centerY As Double
 
    diameter = Application.InputBox("Desenin çapını girin:", Type:=1)
    armWidth = Application.InputBox("Kol genişliğini girin:", Type:=1)
   
    centerX = ws.Cells(1, 1).Width + diameter / 2
    centerY = ws.Cells(1, 1).Height + diameter / 2
 
    ws.Shapes.SelectAll
    Selection.Delete
 
    Dim i As Integer
    Dim angle As Double
    Dim x1 As Double, y1 As Double, x2 As Double, y2 As Double
    Dim outerRadius As Double, innerRadius As Double
   
    outerRadius = diameter / 2
    innerRadius = (outerRadius - armWidth) / 2
   
    For i = 0 To 7
        angle = i * 45 * WorksheetFunction.Pi / 180
        x1 = centerX + outerRadius * Cos(angle)
        y1 = centerY - outerRadius * Sin(angle)
        x2 = centerX + innerRadius * Cos(angle + 22.5 * WorksheetFunction.Pi / 180)
        y2 = centerY - innerRadius * Sin(angle + 22.5 * WorksheetFunction.Pi / 180)
     
        ws.Shapes.AddLine centerX, centerY, x1, y1
        ws.Shapes.AddLine x1, y1, x2, y2
    Next i
 
    ws.Shapes.AddShape msoShapeOval, centerX - innerRadius, centerY - innerRadius, 2 * innerRadius, 2 * innerRadius
   
End Sub
Bu kod, Selçuklu yıldızının sekiz köşesini çizer. Kullanıcıdan alınan çap ve kol genişliği bilgileri ile deseni çizer. VBA kodu temel geometrik hesaplamalar kullanarak her bir kolun başlangıç ve bitiş noktalarını belirler ve ardından bunları çizer.

İlk değer 250 yazdım sonraki değer 75 yazdım deseni çizdi. Denermisiniz
Sayın muhasebeciyiz arkadaşım cevabınız için çok teşekkür ederim. Bakacağım çizime
 
Katılım
12 Kasım 2019
Mesajlar
7
Excel Vers. ve Dili
excel 2010 türkçe
Kod:
Sub DrawSelcukluStar()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1)
   
    Dim diameter As Double
    Dim armWidth As Double
    Dim centerX As Double
    Dim centerY As Double
 
    diameter = Application.InputBox("Desenin çapını girin:", Type:=1)
    armWidth = Application.InputBox("Kol genişliğini girin:", Type:=1)
   
    centerX = ws.Cells(1, 1).Width + diameter / 2
    centerY = ws.Cells(1, 1).Height + diameter / 2
 
    ws.Shapes.SelectAll
    Selection.Delete
 
    Dim i As Integer
    Dim angle As Double
    Dim x1 As Double, y1 As Double, x2 As Double, y2 As Double
    Dim outerRadius As Double, innerRadius As Double
   
    outerRadius = diameter / 2
    innerRadius = (outerRadius - armWidth) / 2
   
    For i = 0 To 7
        angle = i * 45 * WorksheetFunction.Pi / 180
        x1 = centerX + outerRadius * Cos(angle)
        y1 = centerY - outerRadius * Sin(angle)
        x2 = centerX + innerRadius * Cos(angle + 22.5 * WorksheetFunction.Pi / 180)
        y2 = centerY - innerRadius * Sin(angle + 22.5 * WorksheetFunction.Pi / 180)
     
        ws.Shapes.AddLine centerX, centerY, x1, y1
        ws.Shapes.AddLine x1, y1, x2, y2
    Next i
 
    ws.Shapes.AddShape msoShapeOval, centerX - innerRadius, centerY - innerRadius, 2 * innerRadius, 2 * innerRadius
   
End Sub
Bu kod, Selçuklu yıldızının sekiz köşesini çizer. Kullanıcıdan alınan çap ve kol genişliği bilgileri ile deseni çizer. VBA kodu temel geometrik hesaplamalar kullanarak her bir kolun başlangıç ve bitiş noktalarını belirler ve ardından bunları çizer.

İlk değer 250 yazdım sonraki değer 75 yazdım deseni çizdi. Denermisiniz
Sayın muhasebeciyiz Arkadaşım zaman ayırdığınız için çok teşekkür ederim. Evet çizim yapıyor. Fakat benim dediğim desen tam olarak bu değil. sayfaya resim linkini eklemeye çalışayım. https://resimlink.com/EjhsQe1B4t
 
Katılım
12 Kasım 2019
Mesajlar
7
Excel Vers. ve Dili
excel 2010 türkçe

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,388
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bir referans noktaya göre her bir noktanın "x" ve "y" koordinatlarını önceden elle hesaplayıp Excel'de hazırlanacak makroya vermelisiniz.

Eğer doğru koordinatları verirseniz, Mona Lisa tablosu bile çizdirebilirsiniz.

.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,966
Excel Vers. ve Dili
2019 Türkçe

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,684
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Zihninize sağlık Korhan Hocam,
Harika bir çalışma. Bravo, tebrikler ...
 
Katılım
12 Kasım 2019
Mesajlar
7
Excel Vers. ve Dili
excel 2010 türkçe
Buraya eklediğiniz resmi kulansanız olmaz mı?
Sadece en boy oranı ayarlaması yapılır ve daha hızlı bir sonuç elde edilir.
Muzaffer Ali hocam size ve diğer cevap yazan bütün arkadaşlarımıza teşekkür ederim cevaplarınız için. Ben VBA bilmediğim için bir proje düşünmüştüm. excel de desen çizdirip Autocad programına dxf olarak göndersin ya da direk Autocad içine çizebilsin şeklinde düşünüyordum. Verilen cevaplardan her türlü çizimin excel vba ile çizilebileceğini anladım.
 
Son düzenleme:

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,684
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Korhan Ayhan Hocam,
Ben de hatırlamanız için yazmıştım. Konu 20 sene öncesine ait.
Saygılarımla
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,388
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Katılım
12 Kasım 2019
Mesajlar
7
Excel Vers. ve Dili
excel 2010 türkçe

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,321
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Windows gdi/gdiplus ile form üzerine veya virtual bitmap üzerine çizilerek diske kaydedilebilir. VBA uyarlamasını iki defa başlayıp zaman problemi nedeniyle devamını getiremedim. Umarım bir gün yine başlayıp devamını getiririm. Zira kapsamlı bir konu...

.
 
Üst