- ベストアンサー
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型の変数に入れているのでその変数を用いて実現したいと考えていますが、書き換え方が分かりませんのでご教授いただけたらと思います。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
安直な回答ですが、left関数で先頭1文字を取得し、これがシングルクォーテーションだったらMid関数で2文字以降を取得、というのはどうですか? 例) hoge = "'123" If Left(hoge, 1) = "'" Then hage = Mid(hoge, 2) End If
その他の回答 (2)
q=897306、914750 を参照。
お礼
同じ質問を探したつもりではありましたが…ありがとうございました。 そちらの方も目を通して参考にさせていただきます。
- yackle
- ベストアンサー率100% (1/1)
Mid関数を使って、変数の2文字目以降を取得するようにしてやればいいと思います。 例) hoge = "'123" hage = Mid(hoge, 2) MsgBox hage 結果)123が表示される
補足
さっそくのご回答ありがとうございます。 全てのセルについて、文字列の先頭にシングルコーテーションが付くのであればMid関数が使えるかと思いますが、付く場合・付かない場合が発生しています。 シングルコーテーションも含めて文字列として変数に取得してしまっている為困ってしまっています…。 質問が言葉足らずでした。 再度何か案がございましたらお知恵をお貸しください。
お礼
なるほど。2段階で考えればよかったんですね。 知識が浅いためか、無意識のうちに一発で処理することばかり考えていました。 大変参考になりました。 ありがとうございました。