• ベストアンサー

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

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

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

変更前: Cells.SpecialCells(xlCellTypeConstants).ClearContents 変更後: range("H2,G4,C10,C15,F15,G15").SpecialCells(xlCellTypeConstants).ClearContents また対象のそれらセルに,最初からそもそも値しか入っていないことが判っているなら range("H2,G4,C10,C15,F15,G15").clearcontents でも出来ますね。

dorasuke
質問者

お礼

早速ご回答いただきありがとう御座いました。 うまくいきました。

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

関連するQ&A

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

    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

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

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

  • 特定の文字(値)だけをクリアしたい

    現在、以下のようなVBAコードを使ってシート内にクリアボタンを作っています。(先日こちらでご教授いただきました) Sub クリア() ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 23).ClearContents End Sub このコードはシート内のすべての文字(値)を削除します。 管理番号   ←セルの保護をしています ****  ←保護していません 型番     ←保護をしています ****  ←保護していません ****の部分だけを削除したい場合、似たようなやり方では可能でしょうか? ちなみにこの時点で上記コードのクリアボタンを押すと、保護を解除しなさいという、メッセージが出てきます。 保護をしつつ、クリアしたいのですが恐縮ですがご教授ください。

  • 指定した範囲内が空白なら行削除するマクロ

    エクセルで指定した範囲内(A列からC列まで)で何も文字が入っていなければ(空白)、行を削除する、というマクロを教えてください。 いくつか調べて、以下を試しましたが、何も動作しませんでした。 どなたかアドバイスをいただければ助かります。 よろしくお願いします。 Sub DeleteBlankRows2() Application.ScreenUpdating = False On Error Resume Next With Columns("A:C") .SpecialCells(xlCellTypeConstants).EntireRow.Hidden = True .SpecialCells(xlCellTypeFormulas).EntireRow.Hidden = True .SpecialCells(xlCellTypeComments).EntireRow.Hidden = True .SpecialCells(xlCellTypeVisible).EntireRow.Delete .EntireRow.Hidden = False End With Application.ScreenUpdating = True End Sub

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

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

  • セルの値が0はクリアするマクロ

    エクセル2003です。 ある集計表において 4行目のH列からAM列まで 数値データがあります。 最終行は常に変化します この表内にてセルの値が0のセルは セル内を空白にしたいです。 以下のマクロを作成しましたが If Cells(処理行, 8).Value = 0 Then Cells(処理行, 8).ClearContents をあと(処理行, 13)から(処理行,31) まで記述しなければなりません。 構文的にも処理的にも不利? と思うので、なにかいい方法を教えてください。 Sub 数字0クリア() '2012年2月3日節分 Dim 最終行 '最終列をG列で求めます 最終行 = Cells(Rows.Count, 7).End(xlUp).Row Application.ScreenUpdating = False For 処理行 = 4 To 最終行 If Cells(処理行, 8).Value = 0 Then Cells(処理行, 8).ClearContents End If If Cells(処理行, 9).Value = 0 Then Cells(処理行, 9).ClearContents End If If Cells(処理行, 10).Value = 0 Then Cells(処理行, 10).ClearContents End If If Cells(処理行, 11).Value = 0 Then Cells(処理行, 11).ClearContents End If If Cells(処理行, 12).Value = 0 Then Cells(処理行, 12).ClearContents End If If Cells(処理行, 13).Value = 0 Then Cells(処理行, 13).ClearContents End If Next 処理行 Application.ScreenUpdating = True MsgBox "終了しました" 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 以上です、よろしくお願いします。

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

    マクロを書き変えたいのですが、 現在使用してる 下記のマクロがあるのですが、 このマクロに 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 あと シート数を指定しない場合も知りたいのです。 どなたか 力を貸してください。

  • エクセルVBAで作ったコードを実行しても動作しない

    エクセルVBAで『データワン』シートと『データツー』シートと『まとめ』シートがあり、 『データワン』シートと『データツー』シートの全ての情報を 『まとめ』シートにコピーしてまとめるようにしました。 マクロを実行するには、Visual Basicを開いてF5を押しています。 それを『データワン』シートか『データツー』シートの中身の一部分でも変更すると そのときに自動的にマクロが実行されるようにしたいです。 Microsoft Excel Objectsのsheet1とsheet2(sheet3は空白のまま)に Private Sub worksheet_change(ByVal Target As Excel.Range) Call macro1 End Sub を入れ、 次に、標準モジュールのModule1に Sub macro1() With Worksheets("まとめ") .Cells.ClearContents On Error Resume Next Worksheets("データワン").Range("C1:BE50").SpecialCells(xlCellTypeConstants).EntireRow.Copy _ Destination:=.Range("A1") Worksheets("データツー").Range("C1:BE100").SpecialCells(xlCellTypeConstants).EntireRow.Copy _ Destination:=.Range("A" & .UsedRange.Rows.Count + 1) End With End Sub を入れました。 『データワン』シートと『データツー』シートの情報を書き換えても 手動でマクロを実行してみましたが、何も起こりません。 書き方が間違っているのでしょうか?

  • セルを結合するマクロ

    マクロ初心者です。 Aセルをブランク領域で選択してマクロを実行しますとセルが結合します。 最後の空白がどこまでかは、何か指定がないといけないので、仮にエンドと名付けます。 このコードはA列のみです。A列からM列またはL列までと指定するにはどうすれば良いですか? ご教鞭をお願いします。 Sub test() Set Rng = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) Set blanks = Rng.SpecialCells(xlCellTypeBlanks) For Each ar In blanks.Areas Union(ar(1).Offset(-1), ar).Merge Next Cells(Rows.Count, 1).End(xlUp).ClearContents End Sub

専門家に質問してみよう