• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定の文字(値)だけをクリアしたい)

特定の文字をクリアする方法

このQ&Aのポイント
  • VBAコードを使用して、特定の文字のみをクリアする方法をご紹介します。
  • 現在のVBAコードはシート内のすべての文字を削除しますが、保護されていない特定の文字だけを削除する方法も可能です。
  • 保護されていない文字を削除する場合は、別の方法を使用する必要があります。保護しながらクリアする方法についても解説します。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>セルを結合しているのですが(横3つ分)この場合はだめなんでしょうか…??? 結合セルに対応して見ました。 Sub クリア2() Dim C As Range ActiveSheet.Unprotect For Each C In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 23) If C.Locked = False Then If C.MergeCells Then C.MergeArea.ClearContents Else C.ClearContents End If End If Next ActiveSheet.Protect End Sub

abesi
質問者

お礼

お礼が遅くなってしまいスミマセン! 完璧でした。おかげで今は非常に助かっています。 ありがとうございました!

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

その他の回答 (2)

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

例データ aa 11 bb 22 cc 22 dd 44 CTRLを押しながらaa,bb,cc,ddのセルを指定。 書式ーセルー保護ーロックにV CTRLを押しながら11,22,33,44のセルを指定。 書式ーセルー保護ーロック欄を空白にする ツールー保護ーシートの保護ーロックされていない・・を選択 ーーーー 上記全体のセルを範囲指定して、下記を実行。 Sub test01() Dim cl As Range ActiveSheet.Unprotect For Each cl In Selection If cl.Locked = False Then MsgBox cl.Address cl.ClearContents End If Next ActiveSheet.Protect End Sub 結果 aa bb cc dd になりました。

abesi
質問者

補足

ご回答ありがとうございます。 保護の設定までは出来たのですが、以下ができませんでした。 >上記全体のセルを範囲指定して、下記を実行。 について方法が分からなかったのですが、どのようにすればよいのでしょうか。 ちなみに私はこのようにやってみました。 クリアボタンを設置したいシートに合わせて、Alt+F11 設置したいシートに合わせて右クリック→挿入→標準モジュール→教えていただいたコードをコピペ 次に設置したいシート内で四角形を作成→マクロの登録→教えていただいたコードに合わせてOK(この場合はtest01でしょうか) そうすると下の方が教えて頂いた結果と同じように「エラー1004、結合されたセルの一部を変更することはできません」が出てしまいまいました。

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

シートの保護を解除して、保護されていないセルの値を削除し、シートの保護をかけます。 Sub クリア() Dim C As Range ActiveSheet.Unprotect For Each C In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 23) If C.Locked = False Then C.ClearContents Next ActiveSheet.Protect End Sub

abesi
質問者

お礼

ありがとうございます。 やってみたのですが、エラー1004 結合されたセルの一部を変更することはできませんとでてしまいました。 セルを結合しているのですが(横3つ分)この場合はだめなんでしょうか…???

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

関連するQ&A

  • VBA 数式を残して値をクリアについて

    VBA初心者です。 数式の入った表で、数式を消さずに値のみクリアしたいのですが、、、 Sub 指定のセル範囲の値だけをクリアする() Range("A1:C5").SpecialCells(xlConstants, 23).ClearContents Sheets("Sheet1").Range("A1:C5").SpecialCells(xlConstants, 23).ClearContents End Sub とやってもうまくいきません。 どこか間違っていますか?

  • オールクリアボタン VBA どこが間違ってるの?

    VBA初心者です。 設定、部品1、部品2、部品3、部品4と4つのシートがあります。 設定シートにオールクリアボタンを設置し各シートの値だけをクリアする ようにしたいのですが、「subまたはfunctionが定義されていません」という エラーが出てしまいます。 間違ってる箇所とうまくいく方法を教えていただけませんでしょうか? 記述は以下のとうりです。 ちなみにエクセルを開くと全シート保護という設定にしているので まずその解除をしてオールクリアしてまた保護といううふうにしたいです。 Private Sub CommandButton1_Click() '全シート保護解除 Dim sh As Worksheet For Each sh In Worksheets sh.Unprotect Next sh '範囲選択 With Worksheet("部品1").Select Cells.Select 'シートの値だけをクリアする Selection.SpecialCells(xlConstants, 23).ClearContents End With '範囲選択 With Worksheet("部品2").Select Cells.Select 'シートの値だけをクリアする Selection.SpecialCells(xlConstants, 23).ClearContents End With '範囲選択 With Worksheet("部品3").Select Cells.Select 'シートの値だけをクリアする Selection.SpecialCells(xlConstants, 23).ClearContents End With '範囲選択 With Worksheet("部品4").Select Cells.Select 'シートの値だけをクリアする Selection.SpecialCells(xlConstants, 23).ClearContents End With '全シート保護 For Each sh In Worksheets sh.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Next sh End Sub 以上です、よろしくお願いします。

  • マクロ、串刺しの指定範囲のみの値をクリアー

    WINDOWS XP EXCELL 2003です。 現在値のみのクリアーを下記のマクロを使用しています。 Sub Clear() On Error Resume Next Cells.SpecialCells(xlCellTypeConstants).ClearContents End Sub 不必要ななセルの値までクリアーする不都合があります。 御指導を仰ぎたいのは下記の範囲の値のみをクリァーするには上記のマクロをどう変更すればいいでしょうか。     H2 G4 C10 C15 F15 G15 もし可能ならばご教授いたたけませんてしょうか。 よろしく御願いします。

  • アクティブでない複数のシートのセルのコンテンツを一度でクリアしたい

    エクセルVBAで、アクティブでない複数のシートの所定のセルのコンテンツを一度でクリアしたいのですが、 現在アクティブではないシートをアクティブにしないでclearcontentsするとアプリ定義、オブジェクト定義エラーになってしまいます。 それぞれのシートをアクティブにしないとclearcontentsできないのでしょうか? どなたか教えてください。よろしくお願いします。 ------------------------------------------------------------------------------- Sub CLEAR_CONTENTS() Sheets(\"1\").Range(Cells(6, 3), Cells(6, 8)).ClearContents Sheets(\"2\").Range(Cells(6, 3), Cells(6, 8)).ClearContents Sheets(\"3\").Range(Cells(6, 3), Cells(6, 7)).ClearContents End Sub

  • マクロのクリア設定がシートの保護を行うと機能しません

    マクロ、超初心者です。 どうにか、下記マクロを設定しました。 On Error Resume Next With ActiveSheet.Range("d:e").SpecialCells(xlCellTypeConstants, 23) .ClearContents End With シートの保護を行うと、上記マクロが機能しません。 ちなみに、セルの保護の状態は、 d列----「ロックなし」「表示する」 e列----「ロックなし」「表示しない」(数式が入っています) お暑いところ・お忙しいところ申し訳ありませんが、 どなたか、ご教授ください。 よろしくお願いいたします。

  • シートの移動又はコピー したシートの値のクリアー

    WINDOWS XP EXCELL 2003です。 「値のクリァー」のマクロはすでに、 ここで御指導いただいたマクロは下記です。 http://okwave.jp/qa/q6663748.html Sub Clear() On Error Resume Next range("H2,G4,C10,C15,F15,G15").SpecialCells(xlCellTypeConstants).ClearContents End Sub 上記マクロは「納請書3」にそうにして「シート追加」で「納請書4」作成したところ下記のマクロを実行すると「納請書3」のシートの値がクリアーになります。 御指導いただきたいのは既に「納請書3」値が有りこれはクリアーしたくありません。 新たにシートを追加してゆくと前のシートの値か残り追加シートの値をクリアーするにはクリアーは可能でしょうか。 もし可能ならば「値のクリアー」のマクロをどう変更すればいいのかご教授いただけないでしょうか。 よろしく御願いします。 ※ 参考で既に「納請書3」のシートには下記マクロの2点が登録しています。 1  「シートの追加」のマクロが下記です。 Sub シートの追加()    Dim NewNo As Integer   NewNo = Sheets("月請求書").Index Sheets("納請書3").Copy Before:=Sheets("月請求書")   ActiveSheet.Name = "納請書" & NewNo   ActiveSheet.Range("G4").Value = "" End Sub 2  日付とシート表示の色付け    Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If If Target.Address = "$G$15" Then ActiveSheet.Tab.ColorIndex = 49 End If End Sub

  • DeleteとClear

    シート内の全てのデータを削除して綺麗にしたい場合、 Sub Deleteの場合() Cells.Delete End Sub Sub Clearの場合() Cells.Clear End Sub どちらを使うべきなのでしょうか?

  • 【VBA】シートのコピー ~ 値に直す

    大変お世話になります。 VBAのコードについてご教示いただけませんでしょうか。 ■やりたいこと -------------------------------------------------------------------------------- (1) 【原紙】Sheetを、同ブック内の新規シートへコピー (2) 新規シートのシート名を、[セル:B5]の値に変更 (3) 新規シートにコピーされてきた数式を値に変更 ■作成してみたコード -------------------------------------------------------------------------------- Sub SheetCopy1() Worksheets("【原紙】Sheet").Copy Before:=Worksheets("【原紙】Sheet") ActiveSheet.Name = Range("B5").Value Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End Sub -------------------------------------------------------------------------------- 本日初めてVBAに触れた者が、見よう見まねで『■やりたいこと』を並べたコードのため、やはりエラーになってしまいます。 上記は、どこをどう直せばよろしいでしょうか。 もしくは、そもそも間違っておりますでしょうか。 ご教示いただきたく、何卒よろしくお願いいたします。 ◎もし可能でしたら、併せてご教示ください◎ ---------------------------------------------------------------------------- (1)の動作をさせるために、【原紙】Sheetの任意の場所に”ボタン”を設置するのですが、新規シートにもコピーされるため、そのコピー側のボタンを削除できたら…とも考えていますが、そういう動作も可能でしょうか。

  • マクロを書き変えたいのですが、

    マクロを書き変えたいのですが、 現在使用してる 下記のマクロがあるのですが、 このマクロに Sheet1~Sheet18までの セル E12・E14・F14データーを消す式を足したいのですが、 どのように書いたらよいでしょうか? Sub 打ち出しデーター削除() ' ' 打ち出しデーター削除 Macro ' 打ち出しシートの時間・判定を クリアーにする。 ' ' Sheets("打 ち 込  用 ").Select Application.ScreenUpdating = False Selection.SpecialCells(xlCellTypeConstants, 1).Select Selection.ClearContents Sheets("★スタッフ一覧").Select Range("A1").Select End Sub あと シート数を指定しない場合も知りたいのです。 どなたか 力を貸してください。

  • Ecselのシートをクリアする方法について

    Ecselのシートをクリアする方法について シートの内容をクリアしたい時、下記のような記述でクリアしてます。 Range("a1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.ClearContents ただ、これですと、オートフィルタを使って絞り込みを行ってたりしますと、セルが絞り込みされた状態のままになってしまうので、 ActiveSheet.ShowAllData を入れてからクリアしてます。でも、フィルタがかかってなかった場合に、この記述が入ってますとエラーになります。 オートフィルタを使っているか使っていないかわからなくて、その判断をした記述をするにはどのように考えたらよろしいのでしょうか? 根本的に考え方が違うのかもしれませんので、その辺も含めて教えていただけませんでしょうか。 よろしくお願いいたします。

専門家に質問してみよう