• ベストアンサー

EXCEL2003 VBAでプログラミングをしています。

EXCEL2003 VBAでプログラミングをしています。 その際にセルの値をString型変数に代入すると"「「「"みたいな謎の記号が付加されてしまいます。 デバッグ中にその変数にカーソルを当てたと時にだけ表示され、 イミディエイトウィンドウでその変数を?Str~で表示させてみても可視できません。(謎の記号のスペースは存在する) Len関数を使用してみるとちょうどその謎の文字列が追加された値が出てきます。 入力元のセルを参照しても無駄なスペースはありませんでした。 こいつの正体がわかる方いれば教えていただきたいです。 ※Trim関数でも除去できませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

ゴミを消去する関数がワークシート関数にあるのでそれを使ってみてください。 '-------------------------------------- Sub test()  Dim R As Long  Dim myStr As String  For R = 1 To Cells(Rows.Count).End(xlUp).Row    myStr = WorksheetFunction.Clean(Cells(R, "A").Value)    If Len(Cells(R, "A").Value) <> Len(myStr) Then     MsgBox R & " @ " & Len(Cells(R, "A").Value) & " @ " & Len(myStr)    End If  Next R End Sub '--------------------------------------- 以上です。

関連するQ&A

  • Excel2003 データの中身?(=TRIM)

    お世話になります。 表題の件で質問が御座います。 今、CSVで取り出したデータをExcelに変更したのですが 文字列の後ろに無駄にスペースが入っていたり、“見た目空白”のセルも 実はスペースが入っていたりで「Ctrl」+「方向キー」が 端っこまで行ってしまうので 「=TRIM」でスペースを消しました。 その後「TRIM」で抽出した値を元のセルに「値で貼り付け」をしたのですが そうすると なぜか 今まで右に寄ってた「数値」までもが左に寄り、表示形式を「通貨」にしても 数値として読み取ってくれてないようで「¥マーク」が付きません。。 そこで「質問(1)」なのですが、「TRIM」で取り出して元のセルに値で貼り付けると「文字列」になってしまうのでしょうか? 数値に見える文字列(?)のセルに「F2キー」で一旦カーソルを入れると きちんと数値になるようで 「¥マーク」が付きます。 が、しかし 1列2000行程のデータがあり、しかも 10列ほどに渡って同じような現象になってしまったので 全部で「20000セル」このような状況です。 「質問(2)」としましては関数か何かで一度に「数値風文字列(?)」を「数値」に変換する方法は御座いますでしょうか? どなたか ご存知の方、宜しくお願い致します。

  • VBAで変数に改行を格納した場合

    セルA1に あああ いいい と入れて、 VBAで Dim str As String str = Range("a1") と言うコードを記述して、ステップモードでstrにカーソルを充てると あああいいい と、変数が格納されるのですが、 変数の値は改行されては表示されないのですか? うぃっちウインドウで監視すると、若干空白があるように感じます。 でも私はよくF8で変数にカーソルを充てて今の値を見るのですが 変数に改行があるかどうかは、この方法ではわからないということですか?

  • excel2007 可視セルのみグラフに表示したい

    グラフ作成時、グラフツールーデザインーデータソースの選択ーその中の「非表示および空白のセル」の項目において「空白セルの表示方法」にて可視セルのみをグラフにすることは理解できているのですが、 現在、あるセルの中に「=if(a1="","",????)」というような関数を入れており、これは可視セルではないと私は思うのですが、グラフには0(ゼロ)の値が認識されてしまいます。念のために上記の「空白セルの表示方法」においては空白というチェックリストにつけてもグラフは0(ゼロ)の値が認識されたままです。この""文字では可視セルとなってしまうのでしょうか?  ちなみにこの「=if(a1="","",????)」のセルをdeleteで消すとグラフは非表示になってくれます。 グラフは縦軸に不良金額、横軸に4月から3月と軸を取っています。 抜本的な対策等あればご教授お願い致します。

  • VBA言語プログラミング

    添付画像の問題での質問です。ong型の変数Nを宣言し、Nの値をinputbox関数で入力すると、(N,sum())および(N,sum2())を表示するSubプロシージャのプログラムが分かりません。 言語はエクセルのビジュアルベーシックです。

  • Excel2003 VBA 最大値と最小値の求め方

    自分でいろいろ調べてみたのですが、ちょっとわからなくて質問させて頂きます。 VBAのコードにMINとMAX関数を入れて日付の最大値と最小値を求めたいのですがうまくいきません。 処理の初めに、対象の列には書式をYYYY/MM/DDの書式にし、そのあと最大値と最小値を変数に入れて求めています。 値を入れる変数はデータ型にしています。 表には2008/3/12など表示されているのに、MAX,MINともに変数の値は0でした。 どうしてこうなるのか見当もつきません。 よろしければ、返答お願いします。

  • excelでの計算をaccessで実現可能か?

    excelでの計算をaccessで実現可能か? 文字列の中にスペースと+の記号があった場合、スペースを削除し、+までの文字列を抽出ということをexcelの計算式で実施しています。 例: B4のセルに ABCD+0001 という文字列があった場合、下記の計算式により、 =IF(LEN(B4)>13,LEFT(TRIM(B4),LEN(TRIM(B4))-FIND("+",TRIM(B4))-1),B4) ABCDという文字列を抽出できます。 この計算式をaccessで実現可能でしょうか? フィールド1に元の文字列、フィールド2に抽出結果を算出したいのです。

  • EXCEL関数でマイナスのとき▲表示にするに

    EXCELのTEXT関数でマイナスのときの記号は「-」ではなく「▲」をつけるようにしたいのですが、TEXT関数で以下のように記述するとエラーになってしまいできません。 いま入力しているセル値は下記です。B1の値をTEXT関数で▲100と表示させたいです。TEXT関数の表示形式には、セルの書式設定を参考にユーザー定義に記載のある「0;"▲ "0」を入力しています。以上、よろしくお願いします。  A1の値は-100  B1は=TEXT(A1,0;"▲ "0)

  • VBA セル内の改行を取り除くには?

    セルの値を Workbooks(rb).Sheets(rs).Cells(rr, rc).Value で取得しています。 読み出しているセルには、改行コードが入っています。 改行コードは vb_lf でしたっけ? これを取り除くにはどうすればいいでしょうか? trim関数じゃないし、replaceとかsubstituteとかありましたっけ?

  • VBAで変数の値をセルに表示させる

    VBAで変数の値をセルに表示させる プログラム初級者です。 配列変数を使わずに 例えば、変数a1,a2・・・a10 の10個の変数を使ってセルにその値を表示する場合に a1,a2・・・a10をfor next を使って、省略化するにはどうすればよいでしょうか? 具体的には例えば、(私が書いたのは) Sub aaa() Dim a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 as Integer Dim i as Integer a1=1 a2=2 a3=3 a4=4 a5=5 a6=6 a7=7 a8=8 a9=9 a10=10 For i = 1 to 10 ax= "a" & str(i) Cells(i, 1).value = ax Next End sub() 結果は a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 と表示されました。 a1と文字列をとってそれを変数と見なしさらにその変数の値を表示させたいのです。 ちなみにaxの値はa 1 とaと1の間に半角スペースが入ってしまいます。 どうすればいいか行き詰まっています。 解決方法はあるでしょうか?

  • 必要な文字のみに変換する場合

    Text1に入力された文字からアルファベットの大文字のみをText2へ表示させたい(つまり記号、2バイト文字などは省き、小文字は大文字に変換)と考えています。 Dim Str as String   Str = Text1.text   Str = Trim(Str)   Str = Replace(Str, " ", "")   Str = Replace(Str, " ", "")   Str = Replace(Str, vbTab, "")   Str = Replace(Str, vbCrLf, "") スペース、タブ、改行は空白文字に置き換えることができたのですが、アルファベット以外の記号や小文字への変換、2バイト文字の扱い方などが思いつきません。 何か方法がありましたら、お教えください。

専門家に質問してみよう