• ベストアンサー

エクセルのマクロの制限

エクセルで以下のようなタブとスペースを削除するマクロを実行したところ Sub Tab_Clear() Selection.Replace what:=" "+Chr(9), replacement:="" Selection.Replace what:=" ", replacement:="" End Sub 上のほうは削除されるのですが後のほうの行は削除されません、制限があるのでしょうか? また全行削除する方法はないでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

ここへ質問する前に、エクセルのシートで、置換操作をしてマクロの記録を採って、勉強して、わからない点に絞って質問のこと。 >制限があるのでしょうか? どういう方面の制限を言っているのか判らない。 >全行削除する方法はないでしょうか? これも全行指定して削除(編修ー削除)の操作をマクロの記録をとり、どういうコードになるか、その後繰り返すのか 削除する行の判別はどうするのか考えて、判らない点を質問すること。 質問者はVBAの初心者と思うが、マクロの記録で勉強すると言うことを知らないようなのは、大きな損です。 またWEBにはエクセルのほとんどの疑問点の回答やヒントが有る。 本でもマクロの本やWEBでも記事があふれている。 「VBA 行の削除」でGoogleで照会すること。 例 http://www.happy2-island.com/excelsmile/smile03/capter00513.shtml http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_row_del.html

bigin888
質問者

お礼

先頭に@があるためにエラーで止まっているのが原因でした、ご迷惑をおかけしました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

特に制限ではなく対象範囲を選択してから実行すればOKです。 選択しないのであれば、以下のコードをお試しくだささい。 Sub Tab_Clear() Cells.Replace what:=" " + Chr(9), replacement:="" Cells.Replace what:=" ", replacement:="" End Sub 全行削除は、Rows.deleteで如何でしょうか。

bigin888
質問者

補足

特定の列のみ削除したいのです。

全文を見る
すると、全ての回答が全文表示されます。
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

2行目で置換対象になっているのは全角スペースのようですが、それは狙い通りですか?

bigin888
質問者

補足

半角スペースとタブが並ぶパターンと全角スペースを削除したいのですが 構文がおかしいでしょうか? これを実行すると10000~20000行くらいまでは削除されるのですが後は削除されません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル マクロ REPLACEMENT

    エクセル2010を使っています。 置換をマクロでやろうと次のような文を見つけました。 Sub データ_ボタン2_Click() Range("g2:g1000").Select With Selection .Replace What:=注 , Replacement:="", LookAt:=xlWhole End With End Sub ボタン押下後、セレクトまではやっているのですが置換してくれません、どこがいけないのでしょうか? また正しくはどうしたら良いでしょうか? やりたいのは、G列の 注半角スペースの二文字を削除したいと思っています。 くわしい方、よろしくお願いします。

  • 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

  • EXCELマクロ、ループかけるとマクロが固まる

    「フォルダ内の全てのExcelファイルに対してループを実行する」マクロを組むと、カーソルがぐるぐるして正常に起動していないように思えます。ループ無しであればさくさく動きます。ループ無しの場合は、ファイル1つ1つを自分で開けてマクロを起動。マクロは下記の通り。初心者です。 Sub NEM_Macroループ() ' ' フォント変更、記号変換、テキストボックス、全シート ' Dim myFile As String Dim myPath As String Dim myBook As Workbook Dim mySheet As Worksheet Dim myRange As Range Dim cell Application.ScreenUpdating = False 'フォントを変更するファイルが保存されているフォルダのパスを指定します。 myPath = "C:\Users\N000000\Desktop\NEM_macro" '指定したフォルダ内の全てのExcelファイルに対してループを実行します。 myFile = Dir(myPath & "\*.xlsx") Do While myFile <> "" '各ファイルを開きます。 Set myBook = Workbooks.Open(myPath & "\" & myFile) '全てのワークシートに対してループを実行します。 For Each mySheet In myBook.Sheets 'シート内の全てのセルに対してループを実行します。 Set myRange = mySheet.UsedRange For Each cell In myRange Cells.Select With Selection.Font .Name = "MS Pゴシック" .Name = "Arial" End With Selection.Replace What:="、", Replacement:="," Selection.Replace What:="※", Replacement:="*" Selection.Replace What:="①", Replacement:="(1)" Selection.Replace What:="②", Replacement:="(2)" Selection.Replace What:="③", Replacement:="(3)" Selection.Replace What:="④", Replacement:="(4)" Selection.Replace What:="⑤", Replacement:="(5)" Selection.Replace What:="⑥", Replacement:="(6)" Selection.Replace What:="⑦", Replacement:="(7)" Selection.Replace What:="⑧", Replacement:="(8)" Selection.Replace What:="⑨", Replacement:="(9)" Selection.Replace What:="⑩", Replacement:="(10)" '半角全角修正 Dim セル As Range Dim 変換文字 As String Dim 半角 As String Dim i As Long ActiveSheet.UsedRange.Select For Each セル In Selection 変換文字 = StrConv(セル.Text, vbWide) For i = 1 To Len(変換文字) 半角 = StrConv(Mid(変換文字, i, 1), vbNarrow) If Asc(半角) >= 32 And Asc(半角) <= 126 Then _ 変換文字 = WorksheetFunction.Replace(変換文字, i, 1, 半角) Next i セル = 変換文字 Next 'テキストボックスグループ化解除 Dim mySPg As Shape For Each mySPg In ActiveSheet.Shapes If mySPg.Type = msoGroup Then mySPg.Ungroup End If Next mySPg Dim mySP As Shape 'すべての図形テキストボックスをループ For Each mySP In ActiveSheet.Shapes 'テキストボックスの場合 If mySP.Type = msoTextBox Then 'フォント変更 mySP.TextFrame2.TextRange.Font.NameFarEast = "MS Pゴシック" mySP.TextFrame2.TextRange.Font.NameFarEast = "Arial" End If Next mySP Next Dim 年月 Dim ThisName, NewName Dim MojiCoA As Integer, MojiCoB As Integer 'Format,Year,Month関数を利用します 年月 = Year(Date) & "_" & Month(Date) '拡張子なしのファイル名を取得します MojiCoA = InStrRev(ActiveWorkbook.Name, ".") ThisName = Left(ActiveWorkbook.Name, MojiCoA - 1) 'ファイル名を変数へ設定します NewName = ActiveWorkbook.Path & "\" & ThisName & 年月 & ".xlsx" '作成したWorkbookを名前を付けて、移動先フォルダに保存します ActiveWorkbook.SaveAs Filename:=NewName '次のファイルに移動します。 myFile = Dir() Next Loop End Sub

  • Excelマクロ、Loopが望まぬところにかかる

    いつもお世話になってます。マクロ初心者です。 下記マクロもコピペで作りました。先日あまりに時間がかかるので相談したら 回答いただいたのですが、別の問題が出てきました。 フォルダ内のすべてのファイルに実施するLoopが、 フォント変更などのマクロを実施して保存されたファイルに、もう一度マクロがかかる仕組みになっています。 故にマクロをスタートさせると、ファイル名がどんどん長いファイルが増えていって 作業が永遠に終わりません。 既述の通り、マクロのつぎはぎで作成したので どこがどう問題なのか突き詰めることができません。 分かる方がいればご教示いただけますと幸いです。 ****** Sub NEM_Macroループ() ' ' フォント変更、記号変換、テキストボックス、全シート ' Dim myFile As String Dim myPath As String Dim myBook As Workbook Dim mySheet As Worksheet Dim myRange As Range Application.ScreenUpdating = False 'インジケーター表示 Dim j As Long Info.Show vbModeless 'フォントを変更するファイルが保存されているフォルダのパスを指定します。 myPath = "C:\Users\XXXXX\Desktop\NEM_macro" '指定したフォルダ内の全てのExcelファイルに対してループを実行します。 myFile = Dir(myPath & "\*.xlsx") Do While myFile <> "" 'インジケーター For j = 1 To 30000 With Info .ProgressBar1.Value = j .パーセント.Caption = Int(j / 30000 * 100) & "%" .Repaint End With Next j '各ファイルを開きます。 Set myBook = Workbooks.Open(myPath & "\" & myFile) '全てのワークシートに対してループを実行します。 For Each mySheet In myBook.Sheets 'シート内の全てのセルに対してループを実行します。 Set myRange = mySheet.UsedRange Cells.Font.Name = "MS Pゴシック" Cells.Font.Name = "Arial" Selection.Replace What:="、", Replacement:="," Selection.Replace What:="※", Replacement:="*" Selection.Replace What:="①", Replacement:="(1)" Selection.Replace What:="②", Replacement:="(2)" Selection.Replace What:="③", Replacement:="(3)" Selection.Replace What:="④", Replacement:="(4)" Selection.Replace What:="⑤", Replacement:="(5)" Selection.Replace What:="⑥", Replacement:="(6)" Selection.Replace What:="⑦", Replacement:="(7)" Selection.Replace What:="⑧", Replacement:="(8)" Selection.Replace What:="⑨", Replacement:="(9)" Selection.Replace What:="⑩", Replacement:="(10)" '半角全角修正 Dim セル As Range Dim 変換文字 As String Dim 半角 As String Dim i As Long Range("A1").CurrentRegion.Select For Each セル In Selection 変換文字 = StrConv(セル.Text, vbWide) For i = 1 To Len(変換文字) 半角 = StrConv(Mid(変換文字, i, 1), vbNarrow) If Asc(半角) >= 32 And Asc(半角) <= 126 Then _ 変換文字 = WorksheetFunction.Replace(変換文字, i, 1, 半角) Next i セル = 変換文字 Next 'テキストボックスグループ化解除 Dim mySPg As Shape For Each mySPg In ActiveSheet.Shapes If mySPg.Type = msoGroup Then mySPg.Ungroup End If Next mySPg Dim mySP As Shape 'すべての図形テキストボックスをループ For Each mySP In ActiveSheet.Shapes 'テキストボックスの場合 If mySP.Type = msoTextBox Then 'フォント変更 mySP.TextFrame2.TextRange.Font.NameFarEast = "MS Pゴシック" mySP.TextFrame2.TextRange.Font.NameFarEast = "Arial" End If Next mySP Dim 年月 Dim ThisName, NewName Dim MojiCoA As Integer, MojiCoB As Integer 'Format,Year,Month関数を利用します 年月 = Year(Date) & "_" & Month(Date) '拡張子なしのファイル名を取得します MojiCoA = InStrRev(ActiveWorkbook.Name, ".") ThisName = Left(ActiveWorkbook.Name, MojiCoA - 1) 'ファイル名を変数へ設定します NewName = ActiveWorkbook.Path & "\" & ThisName & 年月 & ".xlsx" '作成したWorkbookを名前を付けて、移動先フォルダに保存します ActiveWorkbook.SaveAs Filename:=NewName '次のファイルに移動します。 Next myFile = Dir() Loop Info.Hide MsgBox "処理が終了しました。" Unload Info End Sub

  • エクセル(2003) 「1900/1/0」を消したい

    セルA1に0を入力し 書式設定で日付→yyyy/m/dを選択しました。 しかし下記のマクロ実行しても 0が空白になりません。 Sub 日付置換() Cells.Replace what:="1900/1/0", Replacement:="", LookAt:=xlPart Cells.Replace what:="00/01/00", Replacement:="", LookAt:=xlPart Cells.Replace what:="0", Replacement:="", LookAt:=xlWhole End Sub なら最初から0なんか入力しなきゃいいじゃん。 と思われるかもしれませんが これはCSVファイルで出力したもので 最初から0の数値にも書式設定がかかってて「1900/1/0」となっています。 「1900/1/0」のデータをなくしたいのですが どんな方法がありますか? データ量が多いためマクロなどで一度に行ないたいです。 アドバイスよろしくお願いします。

  • Wordのマクロについて初歩的な質問です。

    初心者です。Word 2010のマクロについてお伺いします。 ルーティンで送られてくる文書に頻繁に含まれる単語について、日本語から英語に直す必要があり、これを自動化できないかと考えています。 ここでは、例として、マクロを実行することにより、「住所」を”Address”に、「青年月日」を”Date of Birth”に置換したいと思います。 1. Visual Basicタブの”Normal”の”ThisDocument(コード)”に以下を記述(コピーペースト)しています。 Sub Macro1() Cells.Replace What:="住所", Replacement:="Address" Cells.Replace What:="生年月日", Replacement:="Date of Birth" End Sub 2. ところが、Macro1()のマクロを実行しようとすると、「オブジェクトが必要です。」とエラーが表示されてしまいます。 どうすれば、目的とするマクロが実行できるのでしょうか? アドバイスお願いします。よろしくお願いいたします。

  • 置換のマクロ

    先ほど質問させていただいている件なのですが 余りにも自分が記入した内容が分かりにくいので質問形式を変更します。 「置換」をするのに ボタンで簡単にできるよう以下のマクロを記録しました。 Sub Macro1() ActiveWindow.SmallScroll Down:=-15 Range("E7:AC7").Select Selection.Replace What:="2009年度契約", Replacement:="8.24-8.29", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False Range("E14:AC14").Select Selection.Replace What:="2009年度契約", Replacement:="8.24-8.29", LookAt:=xlPart, _ このマクロの「8.24-8.29」の部分を「シート名取得」にしたいのです。出来ないでしょうか? もしくは BOXを出し任意のものを手で入力するようにコメントを出す様には出来ないでしょうか?

  • Excel VBA で 選択セルの一部を置換

    こんにちは。お願いします。 選択セルの文字列の右端が"号"、"番地"、"番"だったときに、それを消す、というマクロを作ろうとして、以下のようになりました。 Sub adrconv() Dim c For Each c In Selection If Right(c.Value, 1) = "号" Or Right(c.Value, 2) = "番地" Or Right(c.Value, 1) = "番" Then c.Replace what:="号", replacement:="", lookat:=xlPart c.Replace what:="番地", replacement:="", lookat:=xlPart c.Replace what:="番", replacement:="", lookat:=xlPart End If Next c End Sub お気づきかもしれませんが、これでは右端の"番"だけでなくどの"番"も消えてしまうのです。 右端の文字のみ消す方法をご教示願います。 よろしくお願いいたします。

  • Excel マクロ 添削お願いします

    まず下記マクロをご参照下さい Sub 置換() Range("D9:D195").Select Selection.Replace What:="D1", Replacement:="D2", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False Range("D9").Select End Sub D9からD195を選択して、文字列の置換をマクロで行うつもりで この時置換の対象は D1セルの文字列→D2セルの文字列 で 日々D2には違う文字列が入ります またD9からD195には参照式が入っており、その参照先を置換で切り替えたいのです マクロの記録を基に作ったのですが 思うように動いてくれませんでした 何がいけないのでしょうか? Excel2000 XP です よろしくお願いします

  • excel マクロ

    EXCELでデータが100行の表があるとする。 データのない行を削除し行を詰めるマクロは? イメージはこんな感じとおもうのでうが Sub Macro1() 'if文であるn行がデータがないかどうか判定YESなら Rows("n:n").Select Selection.Delete Shift:=xlUp End Sub

専門家に質問してみよう