Özellik ikonu

Chr

İndirme izni yok

Genel Bakış

Chr (Chr function), verilen karakter kodunu o koda karşılık gelen tek karakterlik metne çeviren bir VBA işlevidir. Satır sonu, sekme ve çift tırnak gibi doğrudan yazılamayan karakterleri metne eklemek ya da kodlardan harf üretmek için kullanılır. Karşıt işlevi, karakterin kodunu veren Asc işlevidir.

Söz dizimi​

Chr işlevinin söz dizimi aşağıdaki gibidir:
VBA 2 satır
Chr(charcode)
Chr$(charcode)
  • charcode: Zorunlu. Dönüştürülecek karakter kodunu belirten, Long türünde bir sayıdır. Tek baytlı sistemlerde 0 ile 255 arasında olmalıdır; çift baytlı (DBCS) sistemlerde -32768 ile 65535 arasındaki değerler kabul edilir. Varsayılan değeri yoktur.
  • Chr$: İşlevin dolar işaretli biçimidir. Chr sonucu Variant olarak, Chr$ ise doğrudan String olarak döndürür; iki biçimin ürettiği karakter aynıdır.
İşlev her zaman tek karakterlik bir metin döndürür. Birden çok karakter üretmek için sonuçları & işleciyle birleştirmeniz gerekir.

Kod aralıkları ve sık kullanılan kodlar​

Kodların anlamı aralığa göre değişir:
  • 0 - 31: Yazdırılmayan denetim karakterleridir. Örneğin 9 sekme, 10 satır başı olmadan alt satıra geçiş (Line Feed), 13 satır başına dönüş (Carriage Return) karakteridir.
  • 32 - 126: Standart ASCII yazdırılabilir karakterlerdir. 32 boşluk, 34 çift tırnak, 65 büyük A, 97 küçük a karakteridir.
  • 127 - 255: Bilgisayarın etkin ANSI kod sayfasına bağlıdır. Aynı kod farklı bilgisayarlarda farklı karakter verebilir.
  • Aralık dışı değer: Çalışma zamanı hatası 5 (Invalid procedure call or argument) oluşur.
Bazı kodların kısa yolları, VBA sabitleri olarak hazırdır:
  • vbTab: Chr(9), sekme karakteri.
  • vbLf: Chr(10), alt satıra geçiş.
  • vbCr: Chr(13), satır başına dönüş.
  • vbCrLf: Chr(13) ve Chr(10) çifti. Çoğu zaman vbNewLine ile aynı işi görür.
  • vbNullChar: Chr(0), boş karakter.
Sabit varsa okunabilirlik açısından sabiti tercih edin; çift tırnak gibi sabiti olmayan karakterler için ise Chr(34) kullanılır.

Chr, ChrW ve Türkçe karakterler​

Chr işlevi 128 ile 255 arasındaki kodlar için bilgisayarın ANSI kod sayfasını kullanır. Türkçe Windows'ta bu kod sayfası 1254'tür ve örneğin 254 kodu ş harfini verir; ancak aynı kod başka dil ayarlarında başka bir karakter üretir. Bu yüzden Türkçe karakterleri kodla üretirken ChrW işlevini kullanmak daha güvenlidir. ChrW Unicode kodunu esas alır ve her bilgisayarda aynı sonucu verir.
Türkçe harflerin Unicode kodları şunlardır:
  • Ş: 350, ş: 351
  • İ: 304, ı: 305
  • Ğ: 286, ğ: 287
  • Euro işareti: 8364
Örnek kullanım:
VBA
Metin = "Sa" & ChrW(287) & "l" & ChrW(305) & "k"
Çalışma sayfasındaki karşılığı KARAKTER işlevidir; karşıt işlevi KOD'dur. VBA tarafında karşıt işlev Asc'tir.

1. Kodları karakterlere çevirme​

A sütununda karakter kodları var. Makro, her kodu Chr ile karakter yapıp B sütununa yazar. Kodu standart modüle (Ekle > Modül) yapıştırın ve çalıştırın.
VBA 13 satır
Option Explicit

Sub KodlariKaraktereCevir()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet

    ' 2. satırdan 12. satıra kadar her kodu karaktere çevir
    For i = 2 To 12
        ws.Cells(i, 2).Value = Chr(CLng(ws.Cells(i, 1).Value))
    Next i
End Sub
Chr
Formülünü incelemek için bir hücre seçin.
AB
1KodKarakter
265A
366B
467C
597a
698b
799c
833!
963?
1035#
1138&
1242*
Kod TablosuExcelDepo v1.0.0
Makro çalışınca B2 hücresine A, B3 hücresine B, B5 hücresine a yazılır. Büyük harfler 65'ten, küçük harfler 97'den başlar; aradaki fark 32'dir. 33, 63, 35, 38 ve 42 gibi kodlar ise noktalama ve simge karakterlerini verir.

2. Çift tırnak ve hücre içi satır sonu​

A sütunundaki ürün adı çift tırnak içine alınacak, altına fiyat yazılacak. Çift tırnak için Chr(34), hücre içinde alt satıra geçmek için Chr(10) kullanılır. Kodu standart modüle yapıştırıp çalıştırın.
VBA 18 satır
Option Explicit

Sub EtiketOlustur()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet

    For i = 2 To 7
        ' Chr(34) = çift tırnak, Chr(10) = hücre içinde alt satır
        ws.Cells(i, 3).Value = Chr(34) & ws.Cells(i, 1).Value & Chr(34) _
            & Chr(10) & ws.Cells(i, 2).Value & " TL"
    Next i

    ' Alt satırın görünmesi için metni kaydır
    ws.Range("C2:C7").WrapText = True
    ws.Rows("2:7").AutoFit
End Sub
Chr
Formülünü incelemek için bir hücre seçin.
ABC
1ÜrünFiyatEtiket
2Masa Lambası485"Masa Lambası"
485 TL
3Defter A465"Defter A4"
65 TL
4Dolma Kalem1.250"Dolma Kalem"
1250 TL
5Çalışma Sandalyesi3.890"Çalışma Sandalyesi"
3890 TL
6Klasör95"Klasör"
95 TL
7Mouse Pad120"Mouse Pad"
120 TL
Etiket MetniExcelDepo v1.0.0
C2 hücresinde "Masa Lambası"
485 TL metni görünür: ürün adı çift tırnak içindedir ve fiyat alt satırdadır. Metin birleştirilirken sayı biçimsiz eklendiği için binlik ayırıcı görünmez. WrapText özelliği kapalı olsaydı Chr(10) karakteri hücrede alt satır olarak değil, tek satırda görünürdü.

3. Asc ve Chr ile harf kaydırma​

Her kelimenin harfleri, B sütunundaki sayı kadar alfabede ileri kaydırılacak. Asc harfin kodunu verir, Chr yeni koddan harfi üretir. Kelimeler Türkçe karakter içermeyen büyük harflerle yazılmıştır. Kodu standart modüle yapıştırın.
VBA 27 satır
Option Explicit

Sub KelimeKaydir()
    Dim ws As Worksheet
    Dim i As Long, k As Long
    Dim kod As Long, kayma As Long
    Dim kelime As String, sonuc As String

    Set ws = ActiveSheet

    For i = 2 To 9
        kelime = ws.Cells(i, 1).Value
        kayma = CLng(ws.Cells(i, 2).Value)
        sonuc = ""

        For k = 1 To Len(kelime)
            kod = Asc(Mid(kelime, k, 1))
            ' Yalnızca A-Z (65-90) arasındaki harfleri kaydır
            If kod >= 65 And kod <= 90 Then
                kod = 65 + ((kod - 65 + kayma) Mod 26)
            End If
            sonuc = sonuc & Chr(kod)
        Next k

        ws.Cells(i, 3).Value = sonuc
    Next i
End Sub
Chr
Formülünü incelemek için bir hücre seçin.
ABC
1KelimeKaydırmaSonuç
2EXCEL1FYDFM
3RAPOR2TCRQT
4SATIS3VDWLV
5BUTCE4FYXGI
6FATURA5KFYZWF
7DEPO3GHSR
8STOK2UVQM
9MUSTERI1NVTUFSJ
Harf KaydırmaExcelDepo v1.0.0
C2 hücresine FYDFM, C3 hücresine TCRQT, C4 hücresine VDWLV yazılır. Mod 26 işlemi, kaydırma Z harfini aştığında alfabenin başına dönülmesini sağlar. Bu yöntem yalnızca kod mantığını göstermek içindir; gerçek bir şifreleme yöntemi değildir.

Kullanırken dikkat edin​

  • Aralık dışı kod hata verir: Chr işlevine 0 ile 255 dışında bir değer (örneğin 350 ya da 8364) verirseniz çalışma zamanı hatası 5 oluşur. 255'ten büyük Unicode kodları için ChrW işlevini kullanın.
  • Türkçe karakterlerde ChrW kullanın: 128-255 arasındaki kodlar bilgisayarın kod sayfasına bağlıdır; Türkçe Windows'ta çalışan kod başka bir bilgisayarda farklı karakter üretebilir. Ş, İ, Ğ gibi harfleri kodla yazarken ChrW(350), ChrW(304), ChrW(286) gibi Unicode kodlarını tercih edin.
  • Hücre içinde satır sonu: Excel hücresinde Alt+Enter ile eklenen satır sonu Chr(10) karakteridir. Hücreye vbCrLf yazmak çoğu zaman da çalışır, ancak hücre içinde Chr(10) yeterlidir. Alt satırın görünmesi için hücrede Giriş > Hizalama > Metni Kaydır (Home > Alignment > Wrap Text) açık olmalı, VBA'da ise WrapText özelliği True yapılmalıdır.
  • Metin içinde çift tırnak: VBA'da metin içine çift tırnak koymak için tırnağı iki kez yazabilir ("") ya da Chr(34) kullanabilirsiniz. Uzun formül metinlerinde Chr(34) kullanmak, tırnak sayısını karıştırma hatasını azaltır.
  • Yazdırılmayan karakterler: 0-31 arasındaki kodlar ekranda görünmez. Bir metindeki gizli karakterleri bulmak için karakterleri tek tek Asc ile kontrol edebilir, temizlemek için Replace işlevinde Chr(kod) ile arayabilirsiniz.
  • İlgili konular:
    • ChrW: Unicode koduna karşılık gelen karakteri verir.
    • Asc ve AscW: Karakterin ANSI ya da Unicode kodunu verir.
    • vbCrLf, vbTab, vbLf, vbNullChar: Sık kullanılan denetim karakterlerinin VBA sabitleri.
    • String: Aynı karakteri belirli sayıda yineler.
    • KARAKTER: Çalışma sayfasında kodu karaktere çeviren işlev.
    • KOD: Çalışma sayfasında karakterin kodunu veren işlev.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
9
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst