• DİKKAT

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

Metin hizalama hakkında..

Katılım
10 Kasım 2006
Mesajlar
1,288
Excel Vers. ve Dili
Excel-2016
Saygıdeğer Arkadaşlar..!

Eklediğim örnek için gecenin bu vaktinde kimseyi yormak istemiyorum.. Uygun zamanda bir el atabilecek arkadaşımız için şimdiden teşekkürlerimi bildiririm.. (olurmu olmazmı... paralel iki metni yaslama yapmadan sağ uclarını aynı hizaya getirme konusu)
 

Ekli dosyalar

Merhaba,

B1, B2 hücreleri için dir. Diğer hücrelere göre kendiniz düzenlersiniz.

Kod:
Sub Hizala()
 
[B1:B2].Font.Name = "Courier New"
[B1:B2].HorizontalAlignment = xlCenter
[B2] = WorksheetFunction.Rept(" ", Len([B1]) - Len([B2])) & [B2]
 
End Sub
.
 
Saygıdeğer hocam.. çok güzel olmuş.. sadece,şöyle bir küçük pürüz çıkartıyor.. B2 hücresindeki kelimenin karakter sayısını artırınca hata veriyor, sol boşluğunu aldıktan sonra tekrar makro çalıştırınca işlemi gerçekleştiriyor. Şöyle düşündüm..makroyu her çalıştırırken B2 deki kelimenin sol tab boşluğunu temizlersek olur mu?
 
Bu şekilde deneyiniz.

Kod:
Sub Hizala()
 
[B1:B2].Font.Name = "Courier New"
[B1:B2].HorizontalAlignment = xlCenter
[B2] = Trim([B2])
[B2] = WorksheetFunction.Rept(" ", Len([B1]) - Len([B2])) & [B2]
 
End Sub
.
 
Sayın Ömer
çalışmanız çok güzel bunu sayfanın change olayına nasıl uygulayabiliriz.

Private Sub Worksheet_Change(ByVal Target As Range)
[B1:B2].Font.Name = "Courier New"
[B1:B2].HorizontalAlignment = xlCenter
[B2] = WorksheetFunction.Rept(" ", Len([B1]) - Len([B2])) & [B2]
End Sub

Ben bu şekilde uygulamaya çalıştım excel kilitlenip kendini kapatıyor.
Saygılarımla
 
Bu şekilde deneyiniz.

Kod:
Sub Hizala()
 
[B1:B2].Font.Name = "Courier New"
[B1:B2].HorizontalAlignment = xlCenter
[B2] = Trim([B2])
[B2] = WorksheetFunction.Rept(" ", Len([B1]) - Len([B2])) & [B2]
 
End Sub
.
Ömer bey..! çok teşekkür ediyorum, elinize sğlık..
 
Sayın Ömer
çalışmanız çok güzel bunu sayfanın change olayına nasıl uygulayabiliriz.

Private Sub Worksheet_Change(ByVal Target As Range)
[B1:B2].Font.Name = "Courier New"
[B1:B2].HorizontalAlignment = xlCenter
[B2] = WorksheetFunction.Rept(" ", Len([B1]) - Len([B2])) & [B2]
End Sub

Ben bu şekilde uygulamaya çalıştım excel kilitlenip kendini kapatıyor.
Saygılarımla
Sn. cebelitarık.. bence; Change değil de, SelectionChange olayını denemeniz daha doğru olabilir.
 
Sayın Ömer
çalışmanız çok güzel bunu sayfanın change olayına nasıl uygulayabiliriz.

Merhaba,

Bu şekilde deneyiniz.

Kod:
Public deg
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B2]) Is Nothing Then Exit Sub
 
Application.EnableEvents = False
 
[B1:B2].Font.Name = "Courier New"
[B1:B2].HorizontalAlignment = xlCenter
deg = Target

On Error GoTo atla
Target = WorksheetFunction.Rept(" ", Len([B1]) - Len(deg)) & deg
 
GoTo atla1
atla:
 
[B1] = Trim([B1])
[B1] = WorksheetFunction.Rept(" ", Len(deg) - Len([B1])) & [B1]
atla1:
 
Application.EnableEvents = True
End Sub
.
 
Ömer bey..! çok teşekkür ediyorum, elinize sğlık..

Ekrem bey,

B1 hücresini kontrol etmemiştim, sizde kodları aşağıdakilerde değiştirirsiniz.

Kod:
Sub Hizala()
 
[B1:B2].Font.Name = "Courier New"
[B1:B2].HorizontalAlignment = xlCenter
 
[B2] = Trim([B2])
 
On Error GoTo atla
[B2] = WorksheetFunction.Rept(" ", Len([B1]) - Len([B2])) & [B2]
 
GoTo atla1
atla:
 
[B1] = Trim([B1])
[B1] = WorksheetFunction.Rept(" ", Len([B2]) - Len([B1])) & [B1]

atla1:
End Sub
.
 
Ömer bey..! söz konusu "B2" deki veri şayet formül ise, formülü bozmadan sonuca gidebilir mi..Çünkü şu durumda formül olsa bile metne çeviriyor.

No: Uğraştıracak ise elleme kalsın.. bu kadarı da işimizi görür..
 
Formül varsa ve formüllü hücre hizalanacaksa, bu işlemi makrosuzda yaparsınız. Formüllü olan örnek eklermisiniz.
 
B2:

Kod:
=YİNELE(" ";UZUNLUK(B1)-UZUNLUK(BÜYÜKHARF(DÜŞEYARA(BAG;Veritabanı;7;
DOĞRU))))&BÜYÜKHARF(DÜŞEYARA(BAG;Veritabanı;7;DOĞRU))

Yalnız B1 ve B2 hücrelerinin yazı tipini "Courier" olarak değiştirmeniz gerekir.

.
 
Ömer bey..! gerçekten harikulade bir çözüm oldu.. Ancak formülün çalışmasının yazı tipine bağlı olduğu hususunu bir türlü çözemedim.. Şayet yazı tipini değişmek gibi bir durum olsa, bu durumda ne yapmalıyım.. Örneğin; resmi yazışma söz konusu olunca, resmi yazışma yönetmeliğinde "Times New Roman" olarak isteniliyor..
 
Kod yada formül, iki kullanımda da karakterleri eşit genişlikte yazı tipi kullanmanız gerekir. Aksi takdirde hizlama alamazsınız.

Örnek,

XXXXX
IIIII

İki metnin uzunluğuda 5 dir, fakat aynı hizada değildir. Çünkü karakterlerin genişliği eşit değildir. Bunu aşmanın yolu da karakter genişliği eşit olan yazı tipi kullanmaktan geçer.

Bu durumu kapsamayan yazı tipi kullanacaksanız hizalama da orta değil sağa yanaşık yapmanız gerekir.

.
 
Evet..Doğru.... Karakterlerin işgal ettiği alan eşit değil... Ömer bey.! çok meşgul ettim, her şey için çok teşekkürler...
 
Yazı Karakteri

Sayın Ömer Hocam;
Yukarıdaki kodlar çok güzel ancak, yazı fontu "Times Nev Roman" olarak değiştirilince hizalama bozuluyor. nasıl yapabiliriz.
 
Merhaba,

Konuyla ilgili açıklamayı #17 numaralı mesajda yapmıştım. Bu yol ile eşit aralıklı yazı tipi kullanmanız gerekir.

.
 
Geri
Üst