• ベストアンサー

VBA 文字列をキレイにしたいです。

エクセルVBAでツールを作成しようとしています。 他のソフトで作成したデータなども関連するため、セルの中の文字列の先頭にシングルコーテーションが付加されてしまうケースがあるのですが、これが不要なので外したいと思います。 方法を検索した結果、以下の例を見つけました。 ---- 「'」を削除したいセルを選択してマクロを実行すると、 すべてのセルで先頭の「'」を削除します。 Sub Sample() Dim a As Range For Each a In Selection If Not a.HasFormula Then a = a Next a End Sub ---- 上記の方法だとセルを対象にしていると思うのですが、 プログラム上でセルの中身を既にstring型の変数に入れているのでその変数を用いて実現したいと考えていますが、書き換え方が分かりませんのでご教授いただけたらと思います。 宜しくお願い致します。

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

  • ベストアンサー
  • yackle
  • ベストアンサー率100% (1/1)
回答No.2

安直な回答ですが、left関数で先頭1文字を取得し、これがシングルクォーテーションだったらMid関数で2文字以降を取得、というのはどうですか? 例) hoge = "'123" If Left(hoge, 1) = "'" Then hage = Mid(hoge, 2) End If

aiching
質問者

お礼

なるほど。2段階で考えればよかったんですね。 知識が浅いためか、無意識のうちに一発で処理することばかり考えていました。 大変参考になりました。 ありがとうございました。

その他の回答 (2)

noname#7749
noname#7749
回答No.3

q=897306、914750 を参照。

参考URL:
www.okweb.ne.jp/kotaeru.php3?q=914750,www.okweb.ne.jp/kotaeru.php3?q=897306
aiching
質問者

お礼

同じ質問を探したつもりではありましたが…ありがとうございました。 そちらの方も目を通して参考にさせていただきます。

  • yackle
  • ベストアンサー率100% (1/1)
回答No.1

Mid関数を使って、変数の2文字目以降を取得するようにしてやればいいと思います。 例) hoge = "'123" hage = Mid(hoge, 2) MsgBox hage 結果)123が表示される

aiching
質問者

補足

さっそくのご回答ありがとうございます。 全てのセルについて、文字列の先頭にシングルコーテーションが付くのであればMid関数が使えるかと思いますが、付く場合・付かない場合が発生しています。 シングルコーテーションも含めて文字列として変数に取得してしまっている為困ってしまっています…。 質問が言葉足らずでした。 再度何か案がございましたらお知恵をお貸しください。

関連するQ&A