- ベストアンサー
マクロで半角・全角スペースと改行を削除したい
マクロ初心者です。 BookA-sheetAの「F1:F40」に入っている文字列左右(前後)の半角・全角スペースと、 改行コードを削除したいのですが、書いてみたマクロはエラーが出てしまいます。 trim関数と、改行コード削除はどう組み合わせればよいのでしょうか? 初心者で申し訳ないのですが、ご教示いただければ幸いです。
- nyan_chiki
- お礼率25% (2/8)
- その他MS Office製品
- 回答数6
- ありがとう数0
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
nyan_chikiさん こんにちは。 Trimは文字の途中の空白(全角・半角)は取り除いてくれません。 空白(全角・半角)はReplaceで取り除くことができますが、総合的(半角文字も取り除く)な観点から 単純に1文字ずつチェックした方がプログラムが分かりやすく、また今後のメンテもしやすいと思います。 Sub 文字クリア() Dim N As Integer Dim セル As Range Dim チェック文字 As String Dim 決定文字列 As String For Each セル In Workbooks("A").Sheets("A").Range("F1:F40") 決定文字列 = "" For N = 1 To Len(セル) チェック文字 = Mid(セル, N, 1) Select Case True Case チェック文字 = " " ' 全角スペース Case チェック文字 = vbCr ' キャリッジリターン Case チェック文字 = vbLf ' ラインフィード Case LenB(StrConv(チェック文字, vbFromUnicode)) = 1 ' 半角文字,スペース Case Else 決定文字列 = 決定文字列 & チェック文字 End Select Next N セル = 決定文字列 Next End Sub
その他の回答 (5)
- Wendy02
- ベストアンサー率57% (3570/6232)
質問では、単に曖昧な文章だけで、どういう状況なのか詳しく説明されていませんから、こちらの勝手な想像の範囲でしかありません。 >文字列左右(前後)の半角・全角スペース は、全角でも半角でも、Trim でも十分なはずです。 >改行コードを削除 Excelのセル内での改行は、Chr(10) = vbLf だけです。 ただし、改行した前後の空白というものがあるなら、その内容は、まったく違ってきます。 Sub TestMacro1() Dim c As Range Dim buf As String Application.ScreenUpdating = False For Each c In Workbooks("BookA.xls").Worksheets("SheetA").Range("F1:F40") If VarType(c) = vbString Then For Each n In Split(c, vbLf) buf = buf & Trim(n) Next n c.Value = buf End If buf = "" Next Application.ScreenUpdating = True End Sub
- myRange
- ベストアンサー率71% (339/472)
またまた間違い、myRangeです。(^^;;; CR、LFはひとつずつしないといけないので。。。 '---------------------------- Sub Test() Dim R As Range For Each R In Sheets("SheetA").Range("F1:F40") R.Value = Trim(Replace(R.Value, vbCr, "")) R.Value = Trim(Replace(R.Value, vbLf, "")) Next R End Sub '---------------------- または、一行にして、 R.Value = Trim(Replace(Replace(R.Value, vbCr, ""), vbLf, "")) 以上です。
- myRange
- ベストアンサー率71% (339/472)
回答1、myRangeです。 改行コードも、とはっきり書いてありますねぃ。 阿呆な回答、申し訳ないです。 tom04さんの回答がグッドです。 で、参考までに。 他のアプリからもってきたデータであれば 改行がCRかもしれませんので、 CR,LF、両方とも削除した方がいいかも知れません。 '---------------------------- Sub Test() Dim R As Range For Each R In Sheets("SheetA").Range("F1:F40") R.Value = Trim(Replace(R.Value, vbCrLf, "")) Next R End Sub '---------------------- 以上です。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! こんな感じで良いですかね? BookとSheetは指定していませんので、 操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に貼り付けてマクロを実行してみてください。 Sub test() Dim i As Long For i = 1 To 40 Cells(i, 6).Value = Trim(Replace(Cells(i, 6), vbLf, "")) Next i End Sub 外していたらごめんなさいね。m(__)m
- myRange
- ベストアンサー率71% (339/472)
>書いてみたマクロはエラーが出てしまいます。 折角自分で書いたマクロですから、それを提示し、 間違い部分を指摘してもらった方がベターだと思いますが。。。 ま、それは置いといて、、、 Trim関数は、半角、全角に拘わらず前後のスペースを削除してくれますので、 '---------------------------- Sub test() Dim R As Range For Each R In Sheets("SheetA").Range("F1:F40") R.Value = Trim(R) Next R End Sub '---------------------------- 対象ブックBookAがこのマクロの書いてあるブックでない場合は Workbooks("BookA.xls").Sheets("SheetA").Range("F1:F40") とします。 以上です。
関連するQ&A
- 半角全角スペースの削除(先頭&末尾)
やまとです。 ある文字列の先頭と末尾のスペースを取り除きたいのですが、 どのようにしたら良いでしょうか? 事前に試した事が2つあります。 1.trim を使用する。 $aiueo = " あいうえ お "; $aiueo = trim($aiueo)); とすると、スペースが削除されます。 しかし、これでは全角のスペースが削除されないようですね。 2.置換する。 $aiueo = " あいうえ お "; $aiueo = str_replace( ' ', '', $aiueo ); とすると、全角のスペースが削除されます。 しかし、文字列の先頭と、末尾以外の全角スペースも削除されてしまう ようですね。 では、文字列の先頭と末尾の半角スペースと全角スペースを削除したい場合は どのようにしたら良いでしょうか? ご教授願います。
- ベストアンサー
- PHP
- 秀丸エディタで半角や全角スペースを自動改行したい。
秀丸エディタを使っているのですが、マクロなどを使って半角や全角スペースを自動で改行するにはどのようにすればいいのでしょうか? 例えば、全角や半角のスペースを改行したい場合、 日本 アメリカ(全角スペース) 山田 太郎(半角スペース) などを 日本 アメリカ 山田 太郎 のように改行したいです。 よろしくお願いします。
- ベストアンサー
- その他([技術者向] コンピューター)
- エクセルで半角や全角スペースを自動改行したい。先ほどの質問と同様です。
エクセルで半角や全角スペースを自動で改行するにはどのようにすればいいのでしょうか? 例えば、全角や半角のスペースを改行したい場合、 日本 アメリカ(全角スペース) 山田 太郎(半角スペース) などを 日本 アメリカ 山田 太郎 のように改行したいです。 よろしくお願いします。
- ベストアンサー
- その他([技術者向] コンピューター)
- 半角スペースを全角スペースに
文字列で、半角スペースを全角に置き換える方法がわかりません。。。 正規表現が苦手で、MySQLに登録する画面を作りましたが、半角スペースがあると、それ以降が無視されてしまうため、その半角スペースを全角スペースに置き換えたいのですが、書式がわかりません。 すいませんが、ご教授お願いします。 あと、もし全角スペースに置き換える方法以外で何かいい策などもしありましたら、それもよろしくお願いします。
- ベストアンサー
- PHP
- マクロで半角を全角に
お世話になっています。 VBの中で Application.WorksheetFunction.Asc(対象)・・・・A で全角を半角にできますが、その逆のJisが使えません。 エクセル関数のJisにあたる関数を教えて下さい。 また、Aをもっと簡単に表現できるんでしょうか? マクロは超がつく位初心者ですのでよろしくおねがいします。
- ベストアンサー
- オフィス系ソフト
- 文字列に半角・全角スペースが入っているかをチェックする関数のおかしな結
文字列に半角・全角スペースが入っているかをチェックする関数のおかしな結果? 下記コードのように「文字列に半角・全角スペースが入っているかをチェックする関数」を作りました。 $textに入る文字列に半角・全角のスペースが入っているかをチェックします。 -------------------------------------------- my $text = "東 京"; if( isSpace($text) ) { print "スペースあり"; } else { print "スペースなし"; } sub isSpace{ my $str = shift || return(undef); if( $str =~ /.*[\s ]+.*/ ){ return(1); }else{ return(0); } } -------------------------------------------- しかしなぜか1行目を my $text = "メ"; とするとスペースが入っているという結果になってしまいます。 なぜ「メ」が入ると半角もしくは全角のスペースとみなされてしまうのでしょうか? また、どうすれば正しくチェックできるようになりますか? よろしくお願いします。
- ベストアンサー
- Perl
- 末尾の全角スペースの削除
SQL Server 2008環境です。 文字列の末尾の空白を一括して削除したくて、以下のようなクエリを書きました。 UPDATE TEST_TABLE SET NAME = REPLACE(RTRIM(REPLACE(StoreBranchName, ' ', ' ')), ' ', ' ') 全角スペースを一度半角スペースにして、RTRIMをかけた後、最後に 半角スペースを全角に直すというものです。 しかし、これだと、元々半角スペースが入っていた場合、そっちまで全角スペースに なってしまうため悩んでおります。 うまいやり方を教えていただけないでしょうか。 宜しくお願いします。
- 締切済み
- SQL Server
- エクセルで、【スペース除き】【半角⇒全角へ】
タイトルの件、質問します。 A1セルに、下記のように、全角と半角の文字数字及び、スペースが入っています。 これを ・全角のみ ・半角文字、半角スペース 削除 を出来ないでしょうか? あいうえお12345 アイウエオ 12345
- ベストアンサー
- オフィス系ソフト
- 改行が半角スペースに変わる
phpのメールフォームからメールを送信するとtextareaの改行した箇所が 半角スペースになってしまいます。phpはUTF-8で改行コードはLFです。 送信前の確認画面までは改行された状態で見れるので送信時に改行が 消されてるのかと思うのですがいまいち原因がわからずです。。。 似たような質問が過去ログにもあったので参照しtextareaのnameがmsgなので nl2br($msg); を試してみたのですが改行にはなりませんでした。 どのようにしたら半角スペースではなく改行されるようになるでしょうか?
- 締切済み
- PHP
- マクロのInstr()などでスペースが半角全角不明の時は?
InstrやRight関数で文字列変数内のスペースを取得するとき、半角全角どちらでもOKにするにはどう記述しますか? Instr(myStr," " Or " ")はエラーになります。
- ベストアンサー
- オフィス系ソフト