2016-04-05 14 views
5

任意のテキスト値を使用して、各文字を個別に書式設定し、Range.Characters()コレクションを繰り返して別のセルに書式設定をコピーできます。数値セルに.Characters()プロパティがないのはなぜですか?

しかし、セルが数値の場合(たとえ数値書式が日付などの文字列として表示されたとしても)、.Characters()プロパティは公開されず、実際には数字による選択的な書式設定はできません。

数字が文字列として表示されているにもかかわらず、Excelでは文字オブジェクトを使用して文字列を表示しますが、数字は表示しないのはなぜですか?

+0

数字がテキスト(* 'が文字列' *として表示されます)でフォーマットされている場合は、個々の文字/数字をフォーマットできます。数値としてフォーマットされている場合、10は10ではなく、0Aです。 – Jeeped

+0

@Jeeped私はそのテキストを一連の文字としてフォーマットすることができます。私が考えているのは、Characters()オブジェクトがプレゼンテーションレイヤーとして使用されたケースです(特に、dateValuesのようなものは書かれた日付として表示されます)。どんな値でも、明らかに数字ではない。私はちょうど**実際に**起こっているものを見つけることを試みている。 – Kaz

+5

真実はあなたを恐れるかもしれません。あなたは青い丸薬を摂取し、魔法の性質を持つ 'Range'オブジェクトを見ることができます。あるいは、赤い丸薬、COMと"本当の "Excelオブジェクトモデルとのフェイスオフを取って、ウサギの穴がどれくらい深くなっているか見ることができます。私は青い丸薬が好きだった。 –

答えて

1

あなたはこの周りに行きたい場合は、次の操作を行うことがあります。セルA1に

は前に「"」記号で123456」を置きます。 それは考慮に「'」記号を取っていない、唯一の最初の3つの数字を取る

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

を書きます。したがって、数値は文字列として表示されますが、それでも計算を使用できます。 A1 + 4は123460を返します。

+0

私はこの提案を感謝しますが、私は、**なぜそれらが異なっているのか、実際に何が起きているのかを理解するほどの回避策には興味がありません。 – Kaz

+0

考えられるのは、数字がテキストのように書式設定されていても、数値は常にセル内の数字であるということです。 VBAは、この場合Excelでどのように見えるか気にしません。数字であることが分かり、Range.Charactersを持つことはできません。同様の理由から、VBAでnumberという変数から名前を付けることはできません。 123_my_variable。 – Vityata

関連する問題