VBA複数シート選択で数式以外削除

このQ&Aのポイント
  • Excel2013で複数のシートを選択して数式以外を削除する方法について質問です。
  • 数式を追加した際に見直す必要があり、誤って数式を削除する可能性があるため、指定したシートの数式以外を削除したいです。
  • グループ化した状態でも数式以外を削除する方法があるか教えてください。
回答を見る
  • ベストアンサー

VBA複数シート選択で数式以外削除

Excel2013です。 下記コードのように、シートを何枚か選択して、セルを削除するのですが、セルに打ってある、('最初の数式以外を削除)するコードでは1ページ目しか削除されません。その下に書いてある('セルクリア)のコードだときれいに消えるのですが、数式を追加した時見直さないといけないのと、指定まちがいで数式まで消してしまう可能性が高くなります。 グループ化した状態でも選択しているシートの数式以外を削除する方法がありますか? Sub データ消去() 'Sheets(Array("Sheet1", "Sheet2", "Sheet3)).Select ' 数式以外は削除(グループ化した時1ページしか削除できない?) Range("C8:Z85,AC8:AF85,Q1:X3").SpecialCells(xlCellTypeConstants, xlNumbers + xlTextValues). 'セルクリア 'Range("C8:E85,G8:I85,K8:M85,O8:Q85,S8:U85,W8:Y85,AC8:AE85,Q1:X3").Select 'Selection.ClearContents End Sub

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

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

折角マクロを使ってるのですから、出来ることでさくっと片づけてしまいます。 例: dim w as worksheet on error resume next for each w in worksheets(array("Sheet1", "Sheet2", "Sheet3")) w.Range("C8:Z85,AC8:AF85,Q1:X3").specialcells(xlcelltypeconstants).clearcontents next >グループ化した状態でも選択しているシートの数式以外を削除する方法 もしかすると「グループ化」してることに、いったいぜんたいどれほどのコダワリがあるのかによっては、もうちょっと違う手もあるかもしれません。が、上述のように「対象のシート」をふつーに操作していけば、大概の事は素直に片付きます。

hinoki24
質問者

お礼

できました。もう少し勉強してみます。ありがとうございました。

関連するQ&A

  • VBA 選択したセルが空白であったらシートを削除

    こんばんは!いつもお世話になっています。 選択したシート1のセル(C9)が空白であったら、選択したシートを削除するマクロ(VBA)を作りましたが、上手く作動しなくて困っています。 どうしたらよいのかよろしくお願い致します。 'シート1のセルC9を選択し、空白か判断する Sub セルの選択()   Worksheets("Sheet1").Activate   Range("C9").Select  If Len(Application.Trim(ActiveCell)) = 0 Then   MsgBox("空白セル")  End If End Sub '現在アクティブなシートを削除する Sub DeleteWorksheet() Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True End Sub

  • VBAで、複数の離れたセルを選択したい

    複数の離れたセルを選択したいのですが、うまくいきません。 A1とA4を選択する場合、通常は、 Range("A1,A4").select なのでしょうが、変数Qを使いたいのです。 セルA1はCells(Q,1)、セルA4はCells(Q,4)となり、 Range(Cells(Q, 1), Cells(Q, 4)).select なのかと思ったのですが、これだと、 Range("A1,A2,A3,A4").select になってしまいます。 離れたセルを変数を使い選択するには、どうしたらよいでしょうか?

  • VBA2003: 選択された複数シートを削除したい

    複数のワークシートを選択した状態で、次のマクロを動かすと1つのシートしか削除されません。 選択した全てのワークシートを削除したいのですが、コードのどこが間違っているのでしょうか。 Sub TOOL1() Dim objWs As Worksheet Application.DisplayAlerts = False For Each objWs In ActiveWindow.SelectedSheets objWs.Delete Next Application.DisplayAlerts = True End Sub

  • アクティブでないシートのセルを選択

    Excel VBAでアクティブでないシートのセルをSelectすることはできないのでしょうか。 Selectメソッドというのは,もともとそういうものなのでしょうか。 エラー: 「RangeクラスのSelectメソッドが失敗しました。」 コード Sub aaa() With Worksheets("Sheet2") .Range(.Cells(44, 1), .Cells(48, 21)).Select End With End Sub

  • エクセルVBAでセル選択するコードが変

    エクセルのワークシートでVBAでセル選択するコードで理解に苦しむことがあります。 通常、Cells(2, 1)はセル番地で言えばA2セル Cells(4, 1)はセル番地で言えばA4セルです。 しかし、 With .Range("B5:B15")でくくれば  .Cells(2, 1)はセル番地で言えばB6セルだと思います。 .Cells(4, 1) はセル番地で言えばB8セルだと思います。 ところが下記のコードを動かすと、なぜかC10:C12が選択されてしまいます。 この理屈がわかりません。 Sub test02()   With Sheets("Sheet1")     With .Range("B5:B15")       .Range(.Cells(2, 1), .Cells(4, 1)).Select     End With   End With End Sub なお、 .Range(.Cells(2, 1), .Cells(4, 1)).Selectを .Range(“A2:A4”).Selectに書きかえると、希望のB6:B8が選択されます。

  • エクセルVBA 1つのシートで出来ますか?

    説明が下手で申し訳ございませんが、宜しくお願い致します。 sheet(1)に20個のボタンがあります。 ボタンをクリックすると、別のシートが開きます。 開いたシートにも複数のボタンがあり、そのうちの任意のボタンをクリックすると、そのボタンの値がsheet(1)のそれぞれのボタンに対応したセルに入力される、という動作を実現したいと思っています。 現状、下記のようなコードで目的の動作は実現できてはいるのですが、各ボタンそれぞれにシートを作っているような状況です。(データ自体は全く同じ内容のものが、計20シート) たぶん、もの凄く頭の悪い事をやっているんだろうと思います。 sheet(1)を除いた各シートの入力データ自体は全く同じなので、シート一枚で出来るんじゃないのかなと思い、ネットや本で調べながら色々試してみたのですが、どうも上手く行きません。データが同じでも、sheet(1)のクリックしたボタンによって入力するセルを変えなければならないのが問題です。 sheet(1)のボタンとセルの関連付けや、sheet(1)のどのボタンを押したのかの判別ができればいいのかなと思って調べてみても、初心者にはよく理解できず、もう何週間もチャレンジしているのですがお手上げです。 上級者の方の知恵をお借りできれば幸いです。 Sub sheet2を開く() Worksheets(2).Select End Sub Sub 入力1() Worksheets(1).Range("F8") = "データ1" Worksheets(1).Select End Sub Sub 入力2() Worksheets(1).Range("F8") = "データ2" Worksheets(1).Select End Sub Sub 入力3() Worksheets(1).Range("F8") = "データ3" Worksheets(1).Select End Sub Sub sheet3を開く() Worksheets(3).Select End Sub Sub 入力1() Worksheets(1).Range("H8") = "データ1" Worksheets(1).Select End Sub Sub 入力2() Worksheets(1).Range("H8") = "データ2" Worksheets(1).Select End Sub Sub 入力3() Worksheets(1).Range("H8") = "データ3" Worksheets(1).Select End Sub Sub sheet4を開く() Worksheets(3).Select End Sub Sub 入力1() Worksheets(1).Range("M8") = "データ1" Worksheets(1).Select End Sub Sub 入力2() Worksheets(1).Range("M8") = "データ2" Worksheets(1).Select End Sub Sub 入力3() Worksheets(1).Range("M8") = "データ3" Worksheets(1).Select End Sub    ・    ・    ・    ・    ・

  • エクセルVBAでジャンプ(セル選択)?

    いつもお世話になっております。 エクセル(2000)の特定のセル選択の方法について教えてくださいませ。 Sub TEST01() Range("A1:A20").SpecialCells(xlCellTypeBlanks).Select End Sub これで、指定範囲内の空白セルをSelectできますね。 Sub TEST02() Range("A1:A20").SpecialCells(xlCellTypeFormulas, 1).Select End Sub これで、指定範囲内で、数式により数値が表示されたセルをSelectできますね。 質問1 では、指定範囲内で、数式により何も表示されないセルをSelectできますか? 空の文字列( ="" )だから、SpecialCells(xlCellTypeFormulas, 2)でSelectできますが、これでは他にも数式により文字が表示されたセルもSelectされてしまいます。 質問2 数値がマイナスのものだけをSelectする方法があるでしょうか? 別に、「ジャンプ」にはこだわりませんが、データ件数が多いので For NextでLoop 以外の方法をご教示いただけたら幸いです。

  • エクセル VBA シートの選択 

    windows XP でエクセル2000を使っています。 Sub aaa() Sheets("Sheet1").Select Dim a As String a = Cells(2, 4) Sheets(a).Select Range("A1").Select End Sub というマクロだと セルに入っている値のシート名を探してくれます。 ですが Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Intersect(Target, Range("B11:b683")) Is Nothing Then Exit Sub Worksheets("Sheet1").Range("C2").Value = Target.Value Dim b As String b = Range("C2).value (←ここをcellsにしてもダメ) Sheets(b).Select Range("A1").Select End Sub これだとsheets(b)を選びません。Sheets(b).Selectのところが黄色くなります。 何処が間違えているのでしょうか。 全くの素人ですが、仕事で必要に迫られています。 わかりやすく回答・解説くれると助かります。

  • [Excel97]VBA:セルに入っている数式を別のシートのセルに文字列としてセットする

    「ExcelVBAマクロ500連発」という技術評論社の本(青のカバー)のNo.277に 「式を文字列として表示する」というサンプルマクロがあります。 「ワークシートのセルに入っている数式を、(同じシート内の)別のセルに文字列としてセットする」 ここのコードを参考にして、 「数式を、(同じブック内の別のシートの)セルに文字列としてセットする」コードを考えています。 以下のコードを作りましたが、実行すると最後から2行目の「.Formula」のところで 実行時エラー1004:'Range'メソッドは失敗しました。'_Global'オブジェクト というエラーが出てきます。なぜでしょうか? 正しいコードの記述を教えて下さい。 (Sheet1のD3セルの計算式をSheet2のD10セルに文字列としてセット) Option Explicit Dim 調査セル As Variant Dim 報告セル As Variant Sub 式の抽出() Worksheets("Sheet2").Select 調査セル = Worksheets("Sheet1").Cells(3, 4) 報告セル = "D10" Range(報告セル).Value = "" Range(報告セル).Value = "'" + Range(調査セル).Formula End Sub

  • エクセルVBA/SpecialCellsで特定文字列のセルを選択

    いつもお世話様です。 Sub test() ActiveSheet.Range("C1:C200").SpecialCells(xlCellTypeConstants).Select End Sub で検索範囲内の「定数」のセルをいっぺんに選択できますが、これを例えば、「AAA」という文字列のセルだけを一度に選択するにはどうすればいいでしょうか? (また、あるいは「123」という数値のセルの場合には?) よろしくお願いします。

専門家に質問してみよう