2016-08-17 1 views
0

これを使用して、文字列型のcombox値を変更し、セルに貼り付けます。'for Cstr(combox1.value)を削除するには

cells(i,1)=Cstr(combox1.value) 

Excelの列Aでは、データ型をStringに設定しました。例えば

、I入力017``123098065

しかし、私は、細胞に置く正確な値は(iは、1)'017'098'056123であることを見つけます。 0で始まるコードには、最初に'が含まれています。

* 0 *

+0

あなたが見ている '' 'はおそらくセルの内容の一部ではありません。たとえば、 '= LEN(A1)'と書かれたセルB1に数式を書くと、間違いなく、セルA1に3文字(すなわち、 '017')が4ではなく、セルA1に実際に '' 017'が含まれている場合に取得します)。 ''は、フィールドを数値ではなくテキスト文字列として扱うようExcelに指示するだけです。代わりに '' abc''をタイプしなければならないので、セルに '' abc ''が含まれていれば迷惑になります。 – YowE3K

+0

@ YowE3Kこの問題は修正できず、合理的ですか? – evabb

+0

私は、より詳細な説明を与えるために "答え"を追加しました。 – YowE3K

答えて

1

'は、おそらく我々が意味する大手'を使用ロータス1-2-3から二日酔いでのフォーマット文字、で左揃えと右揃え意味する"をリードします。

フォーマット文字の場合(そうであれば、それはLENによって返された文字数には含まれません)、無視しても問題ありません。

審美的な理由からこのセルを削除するには、セルの現在の内容を削除し、セルを一般形式で書式設定し、セルをテキスト形式で書式設定し、セルに新しい値を挿入する必要があります。

注:セルをテキストとして書式設定し、内容を削除してから、新しい値を挿入することはできません。 'は引き続きその状況で表示されます。一般形式に変更する手順は、既にその形式になっていない場合は重要です。 (たぶん一般的にそれを設定すると同じようにうまく動作しますいくつかの他の非テキスト形式に設定するが、私は一般的に動作することを知っています。)

幸いにも、.Clearは、細胞セットの内容を削除します形式は一般に戻っていますので、プログラム的に2つのことをすぐに行うことができます。

私は、したがって、次のコードは、あなたが望む何をすべきと考えている。

Cells(i, 1).Clear 
    Cells(i, 1).NumberFormat = "@" 
    Cells(i, 1).Value = combox1.Value 

最初の行が現在存在する問題を取り除くために、単にそこにあります。完全に新しいワークブックで作業していた場合、それは必要ないでしょう。

+0

私は仕事を試みた。しかし、元のセルフォーマット '.Horizo​​ntalAlignment = xlCenter'は' Cells(i、1).Clear'の後に追加されます。 Btw、なぜCStrが動作しないのか、CStrとあなたのメソッドの違いは何ですか?ありがとう – evabb

+0

'CStr'は、可変型の値を単に文字列に変換します。したがって、 'CStr(4.56)'は '4.56'の文字列を生成します。あなたの操作の結果は '017'の文字列だったので、' combox1.Value'は既に '017'の文字列であると仮定できます。 (combox1.Valueが17の場合、 'CStr(combox1.Value)'は '17'になります。)CStrの使用は、あなたが持っていた問題とは関係ないと思います。 – YowE3K

1

で始まるこれらのコードのため、正確な細胞に'を表示せずに私のコードを改善する方法は、数値を設定する前に、Textにセルの番号の形式を変換します。

cells(i,1).NumberFormat = "@" 
cells(i,1)=combox1.value 
+0

私は 'cell(i、1)= Cstr(combox1.value)'を追加する必要はありません。 – evabb

+0

は必要ありません。いったんあなたがテキストにセルフォーマットを設定したら、それ以後何を置くかは文字列/テキストだけです。 – cyboashu

+0

は機能しません。現在、すべてのコード:S26、S34、S23,059,103には '' 'が含まれています。 – evabb

関連する問題