Soru Makroda sütun genişiliği piksel olarak verilebilir mi?

klop01

Altın Üye
Katılım
19 Aralık 2016
Mesajlar
659
Excel Vers. ve Dili
2021 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
07-02-2028
Aşağıdaki kodda A sütunun piksel genişliğini 38 olarak ayarlamak istiyorum. Kodun sonundaki değer cm mi ölçüyor, nedir anlayamadım.
Bu kod parçacığı piksel değerini gösterecek şekilde ayarlanabiliyor mu?
Columns("A").ColumnWidth = 4.4
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,652
Excel Vers. ve Dili
Excel : 2010
Bu kodu bir deneyin.
Kod:
[a1] = ActiveCell.ColumnWidth / 37.795
 

Trilenium

Destek Ekibi
Destek Ekibi
Katılım
16 Eylül 2008
Mesajlar
1,290
Excel Vers. ve Dili
Microsoft Office 2019 English
Klop01 merhaba,

Dosya > seçenekleri > Gelişmiş > Görüntü > Cetvel birimlerinden örneğin milimletreyi seçtikten sonra Pixel karşılığını kolon ve hücre boylarında görebiliyorsun

COnvert etmelisin 1 Milimetre 3,77 Pixel yapar.
 

klop01

Altın Üye
Katılım
19 Aralık 2016
Mesajlar
659
Excel Vers. ve Dili
2021 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
07-02-2028
Sayın @Seyit Tiken ve @Trilenium,
Açıklamalar için teşekkürler.
Şunu yapmak istiyorum: Kodu çalıştırınca gittiğim sayfada A sütunun 38 piksel olması.
Yani üstte verdiğim kod parçacığı piksel olarak yazılabilir mi?
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,652
Excel Vers. ve Dili
Excel : 2010
Bu şekilde deneyiniz.
Kod:
Columns("A").ColumnWidth = 4.7
 

klop01

Altın Üye
Katılım
19 Aralık 2016
Mesajlar
659
Excel Vers. ve Dili
2021 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
07-02-2028
Sayın Tiken,
Soruna aslında şu kaynaklık ediyor. Bir bilgisayarda hazırladığım belge ekrana tam sığıyor. Diğer bilgisayarda A sütunu 1 piksel genişliyor ve sayfaya sığmıyor. Ben de sayfaya giderken bunu piksel olarak ayarlayayım dedim.
Sizin verdiğiniz gibi yazınca da farklı bilgisayarlarda piksel değeri değişiyor.
Columns("A").ColumnWidth = 38(Piksel) gibi bir şey olursa sorunu çözebilir diye düşündüm de sorayım dedim.
Zannediyorum kodlarda sütun genişlikleri piksel olarak ayarlanamıyor.
Benim bilgisayarda Columns("A").ColumnWidth = 4.4 olunca A 38 Piksel oluyor. Sizde 4.7 ile 38 piksel oluyor galiba.
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,652
Excel Vers. ve Dili
Excel : 2010
Böyle durumlarda pratik çözümlere başvurmak lazım, kodla pikseli azaltıp yükseltebilirsin.
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,093
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Piksel Ekran çözünürlüğüne bağlıdır. Buradaki kodu inceleyin. Bir fikir verir.


Kod:
Sub testsutgen()

Sheets("Sheet1").Activate

Ekrancoz = 96 '96/inch

Point = Sheets("Sheet1").Range("A1").Width ' 48 points

karak = Sheets("Sheet1").Range("A1").ColumnWidth ' 8.43 karekter

pixel = (Point / 72) * Ekrancoz 'pixel

MsgBox "Point:" & Point & "  " & "Karakter:" & karak & "  " & "Piksel:" & pixel

End Sub

Ayrıca buradaki dosyaya bir göz atın..



.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
İlave bilgi:

Yeni bir Excel dosyası açtığınızda; sütun genişlikleri 8,43 karakter (64 Pixel) olarak ayarlanmış olduğunu görürsünüz..... (En azından, benim Excel 2010 için böyle).

Ama, bu değerler Excel'in varsayılan Font'u "Calibri" ve Font Boyutu =11 için geçerlidir.....

Yani, başka bir Font veya Font yüksekliği olsa; söz konusu değerler değişecektir......

Dolayısıyle; bu değerlerin arasında matematiksel bir ilişki var.

96 DPI için; Font "Calibri" ve Font Boyutu =11 ise, bu ilişki;

Kod:
(7 x 8,43) + 5 = 64

Burada, "7" değeri Font "Calibri" ve Font Boyutu =11 için karakter genişliğidir. "5" ise; söz konusu Font ve Font Büyüklüğüne göre değişen bir değer olup, hücrenin marjinidir. Söz konusu Font ve Font Büyüklüğündeki bir sayfada sütun genişliğini "1" yaptığınızda bunu "12 pixel" olarak görebilirsiniz (7 + 5 = 12)

Dolayısıyle; 96 DPI için kullanılan Fonttaki gerekli karakter genişliği, marjin ve "8,43" veya "64" değerlerinden birini biliyorsak, diğerini hesaplayabiliriz.....


.
 
Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,397
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
İşe yarayabilir...
.

C#:
Sub test()
    Dim points As Double, cm As Double, pixel As Long
    
    cm = 1
    
    points = Application.CentimetersToPoints(cm)
    
    pixel = WorksheetFunction.Round(points / 0.75, 0)
    
    MsgBox pixel
    
End Sub

.
 
Üst