• ベストアンサー

vbaで全シートのある列のスペースを消したい

vba修行中の初心者です。 シートをすべて選んだ状態である列(ここではI列)を選び、セルの中のスペースをすべて消すということをしたいのですが、 Worksheets.Columns("i:i").Select.Replace What:=" ", Replacement:="", Matchbyte:=False にすると、コンパイルエラーが出ます。 どのように書き直せばよいのでしょうか? どうぞお助けください。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.1

WorksheetsにColumnsはありませんよね。 ForEachなどを使って、各ワークシートに対して処理を行う必要があるのでは?

four_knight
質問者

お礼

m-take0220 様 ご回答ありがとうございます。 for next で各シートに連続処理をしたらうまくいきました! 貴重なお時間をいただいてご回答いただきまして本当にありがとうございました。

その他の回答 (1)

  • mesihuro
  • ベストアンサー率34% (23/66)
回答No.2

Worksheets.Select Columns("I:I").Select Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart で出来ないかな?

four_knight
質問者

お礼

mesihuro 様 私の前後の構文がよくなかったのか、ご回答いだだきましたものを書いてみたのですが、エラーが出てしまいました。 私にはまだまだ敷居が高いのですがfor next でやってみましたらなんとかうまくいきました。 貴重なお時間をいただいてご回答いただきまして本当にありがとうございました。

関連するQ&A

  • vba シートの選択後列の選択

    VBA初心者中の初心者です。 vbaでシート全体を選択後、全シート共通でI列全体を選択したいのですが、 Worksheets.Select Columns("i:i").Select と書くと、なぜかB列からI列全体が選択されてしまいます。 I列だけ(全シート共通)を選択したいのですが、どのようにすればよいのでしょうか? よろしくお願いいたします。

  • エクセルVBAの修正をお願いいたします。

    下記VBAをご教授受けて何とか作りましたが、一行指定で作成したのですが、その時によりデータ数にばらつきがありますので、現状データがあるセルだけを拾ってきてデータのあるなしを、JのセルとKのセルに2種類表示するように作成したつもりですが、データがないセルにも延々と Jのセルには 1040272 Kのセルには * が表示されますのでデータが現状ないセルには何も表示されないようにしたいと思います。 自分でいろいろ調べながらしてみるのですが埒が明かない状態になっておりますので、なにとぞお助け、ご教授をお願いいたします。 わかりにくい説明で申し訳ございませんがなにとぞよろしくお願いいたします。 Range("H2").Select ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-5],RC[-4])" Selection.AutoFill Destination:=Range("H2:H10000") Range("H2:H10000").Select Columns("H:H").Select Selection.Copy Columns("I:I").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.Replace what:="-", Replacement:="", lookat:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace what:="_", Replacement:="", lookat:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Sheets("登録商品リスト").Select Columns("C:C").Select Application.CutCopyMode = False Selection.Copy Columns("E:E").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.Replace what:="_", Replacement:="", lookat:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace what:="-", Replacement:="", lookat:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("F2").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=UPPER(RC[-1])" Selection.AutoFill Destination:=Range("F2:F10000") Range("F:F").Select Columns("F:F").Select Selection.Copy Columns("G:G").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet2").Select Range("J2").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=COUNTIFS(登録商品リスト!C[-3],C[-1])" Selection.AutoFill Destination:=Range("J2:J1500") Range("J:J").Select Dim i As Long, endRow As Long, str As String, c As Range, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("登録商品リスト") Set wS2 = Worksheets("Sheet2") endRow = wS2.Cells(Rows.Count, "K").End(xlUp).Row Application.ScreenUpdating = False If endRow > 1 Then Range(wS2.Cells(2, "K"), wS2.Cells(endRow, "K")).ClearContents End If For i = 2 To wS2.Cells(Rows.Count, "I").End(xlUp).Row str = Left(wS2.Cells(i, "I"), 5) Set c = wS1.Range("G:G").Find(what:=str, LookIn:=xlValues, lookat:=xlPart) If Not c Is Nothing Then wS2.Cells(i, "K") = "*" End If Next i Application.ScreenUpdating = True End Sub

  • VBAで実行時エラー '1004'の解決方法

    VBA初心者です。 文字列を置換しようと思い、マクロを記録したところ下記ソースになりました。 Sub Macro1() Columns("D:D").Select Selection.Replace What:="エリア:", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub このマクロを単体で動かすと問題なく動作するのですが、他シートにおいてあるボタンに登録して一番最初に実行すると「実行時エラー '1004'」が出てしまいます。 ネットで色々調べましたが、解決方法が分かりません。 宜しくお願い致します。

  • エクセルVBA 別シート間の列のコピー&ペースト

    列のコピー&ペーストができません。 i, j は変数で、Integerで定義しており、省略はしていますが、期待通りの値がi, j には代入されています。 Sheet1のi列からj列をコピーし、Sheet2のC列(これは固定)に貼り付けたいのですが、うまくいきません。 私の書いたコードは下記の通り。 下記は改行されていますが、実際のVBAでは1行で書かれています。 Worksheets("Sheet1").Range(Columns(i), Columns(j)).Copy Worksheets("Sheet2").Range(Columns("C")) 貼り付け先(Destination)の記述がいけないのでしょうか? 行き詰っておりますので、どなたかお助けください!

  • マクロエラ-

    初心者です。win2000,エクセルでマクロが途中で止まってしまいます。時々に、最後までいくことがありますが、8割がたは、同じところでストップします。 マクロ言語は理解できていません。 うまく完了のケ-スは、デ-タの中身次第かなと思います。 記憶では、”0”があれば、何かをするようにしたと思います。 想定外のデ-タで、とまるのなら、回避方法を教えてください。 黄色反転して、ストップする部分は、以下です。 mcr3 Range("A1").Select ActiveCell.SpecialCells(xlLastCell).Select Columns("C:C").Select Selection.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate いつもここで止まります。 ActiveCell.Replace What:="0", Replacement:="", LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False Selection.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate -----------→つずく。

  • excelのvbaを使って日付を置換したいのです

    こんにちは。いつも質問ばかりですみません。 今、excell の VBAの勉強をしているのですが、たとえば、B列に2004/5/3 とか、2004/5/5とか、5月の日付ばかりはいっていたとして、その2004/5の部分を2004/6に置換したいとします。 それを、マクロでやらせてみて、VBAを見ると Sub Macro9() Cells.Replace What:="2004/5", Replacement:="2004/6", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub のようになるのですが、このプロシージャーを実行しても、うまく置換できません。 どのように記述したら、できるのか、教えていただけるとうれしいです。 よろしくお願いいたします。

  • Excel2003 VBA 「*」を含む文字列の置換方法は?

    セルに「あいうえお あい*うえお」という文字列がある場合 そのセルに対して Cells.Replace What:="あい*うえお", Replacement:="" の処理を実行するとすべて消えます この場合「あいうえお」だけを残すには どのようにすればいいのでしょうか?

  • Excel2010 VBAでスペース区切り

    はじめて質問させて頂きます。 VBA初心者ですが、宜しくお願いします。 CSVデータをエクセルにコピペしてから処理することを考えています。 CSVのデータはエクセルで開くと以下の様に入力されています。     |      A列      |  B列 |  C列 | 1行目|   日付 時刻    |データ1|データ2| 2行目|2014/5/14 13:00:01|  ○  |  △  | 3行目|2014/5/14 13:00:14|  ○  |  △  | 時刻は24h制で入力されています。 A列の日付と時刻の間にはスペースがあり、これをVBAでスペース区切りをしたいのです。 B列に列を追加し、スペース区切りの処理をしようと思い、自動記録すると以下のようになりました。 Sub Macro1()     Columns("B:B").Select     Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove     Columns("A:A").Select     Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _      TextQualifier:=xlNone, ConsecutiveDelimiter:=True, Tab:=True, Semicolon _      :=False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Array( _      Array(1, 5), Array(2, 1)), TrailingMinusNumbers:=True End Sub ところが、このマクロを実行すると「コピーまたは移動先のセルの内容を置き換えますか?」のメッセージが表示されます。(記録する際には表示されませんでした。) 原因を探ったところ、自動記録のマクロを実行すると時刻が12時間制に変更されB列に、 C列にAM/PMが書き込まれます。(A列の日付は問題なく処理されます。) B列に24時間制の時刻が書き込まれるようにしたいのですが、 何か不足してるとことがあるのでしょうか? 方法を教えて下さい。 お手数ですが、宜しくお願いします。

  • Excelマクロ 置換について教えてください。

    A列の,10を,15に置換したいので下記マクロを記録しました。 ほかに,10を,16などにしたい場合もあるため、 入力画面を表示して初期値は,10から,15ですが、ほかを入力した場合は他の値で置換するマクロを教えてください。 Sub Macro1() Columns("A:A").Select Selection.Replace What:=",10", Replacement:=",15", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub

  • vba 離れた列を選択するには?

    Range(Columns(5), Columns(10)).Select これだと5列目から10列目の全てが選択されてしまいます。 荘ではなく、5列目と10列目のみ選択状態にするにはどうすればいいでしょうか? 列はアルファベッドではなく数値で指定したいです。

専門家に質問してみよう