2016-04-05 56 views
5

Herhangi bir metin değeriyle, her karakteri tek tek biçimlendirebilir ve sonra bu biçimlendirmeyi Range.Characters() Koleksiyonunu yineleyerek başka bir hücreye kopyalayabilirim. Bununla birlikte, hücre bir sayıysa (sayıların biçimlendirilmesi, örneğin tarihler gibi bir dize olarak gösterilse bile), .Characters() özelliğine sahip değildir ve aslında, basamaklı olarak biçimlendirilmiş basamak basamağı olamaz.Sayısal hücrelerin neden bir .Characters() özelliği yok?

Excel neden sayıları dizge olarak görüntüleniyor olsa da, karakter nesneleri kullanarak ancak sayıları değil dizeleri görüntüler?

+0

Eğer sayı metin olarak biçimlendirilmişse (yani * 'string olarak gösterilir * *), tek tek karakterleri/rakamları biçimlendirebilirsiniz. Bir sayı olarak biçimlendirilirse 10, 10 değil, 0A'dır. – Jeeped

+0

@Jeeped Bu yazı bir dizi karakter olarak biçimlendirilmiş olsun. Benim düşündüğüm **, Karakterler() nesneleri bir sunum katmanı olarak kullanıldı (özellikle tarihler gibi tarihler gibi görüntülenen tarihler için). Herhangi bir değer için, ama görünüşe göre sayılar için değil. Ben sadece neyin ** gerçekte olduğunu öğrenmeye çalışıyorum. – Kaz

+5

Gerçek, sizi korkutabilir. Mavi hapı alabilir ve büyülü özelliklere sahip bir 'Range' nesnesini görebilir ya da kırmızı hapı, COM ve" gerçek "Excel nesne modeli ile faceoff alabilir ve tavşan deliğinin ne kadar derin gittiğini görebilirsiniz. Mavi hapı beğendim. –

cevap

1

bu dolaşmak istiyorsanız, yapmanız olabilir: A1 hücresi put önünde '"" işareti ile 123456' in

. Sonra

range("A1").Characters(1,3).Font.Bold = true 

Değil dikkate "'" işareti alarak yalnızca ilk üç sayı alacağını yazın. Böylece, sayı bir dize olarak görüntülenir, ancak yine de hesaplamaları kullanabilirsiniz. A1 + 4 123460 verir.

+0

Öneriyi takdir ediyorum, ancak fark yaratmak için ** neden ** farklı olduklarını ve gerçekte “kaputun altında” neyin gerçekleştiğini anlamak kadar geçici çözümlerle ilgilenmiyorum. – Kaz

+0

Fikir, metne benzeyecek şekilde biçimlendiğinde bile, bir sayının hücrede her zaman bir sayı olmasıdır. VBA, bu durumda Excel'de nasıl göründüğü umurunda değil - bir sayı olduğunu ve böylece Range.Characters'ın bulunamayacağını biliyor. Benzer bir nedenden ötürü, VBA'da sayı ile başlayan bir değişkene isim veremezsiniz, ör. 123_my_variable. – Vityata