• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ワークシートに対して処理をするVBAについて)

ワークシートに対するVBA処理について

takasan_2525の回答

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

https://ydcoco.hatenablog.com/entry/2018/08/26/233246 記事として書かせていただきました、よければ確認してください

osashi
質問者

お礼

どひゃーーー!まさかブログ記事にして回答していただけるとは思いませんでした!!( ゜д゜)超ヴィックリ&ありがたみでベストアンサーにさせていただきまあああああす!!!!!ありがとうございました!!ほかの記事も参考にさせていただきます!m(_ _)m

関連するQ&A

  • VBAですべてのワークシートを処理したい

    ブック内の全ワークシートに対して同じ処理をするために、 For each ワークシート in Worksheets ~処理~ Next ワークシート を使ってみたのですが、その時にアクティブになっているシートしか処理されません。たとえば次のようなシンプルなコードでも、同様です。何が抜けているのでしょうか。 Sub allworksheets() Dim WS As Worksheet For Each WS In Worksheets Range("a1") = "123" Next WS End Sub マクロの勉強を始めたばかりで、基本的なことでつまづいてます。よろしくお願い致します。

  • エクセルVBA【ワークシートのコピー】について

    以下のVBA記述で、とあるエクセルファイルのシートをCSV化しようとしております。記述の場合、すべてのワークシートが対象となっていますが、10個くらいあるWorkSheetの【sheets(8)】のみを対象としたいのですが、どのようにしたら良いのでしょうか? お手数ですがご教授下さい。 Sub test() Dim sh As Worksheet Dim fname As String Application.ScreenUpdating = False For Each sh In ActiveWorkbook.Worksheets fname = "C:\temp\" & sh.Name & ".csv" sh.Copy With ActiveWorkbook .SaveAs Filename:=fname, FileFormat:=xlCSV .Close savechanges:=False End With Next sh Application.ScreenUpdating = True End Sub

  • エクセルVBAで、作業対象を全ワークシートか選択シートかを切り替えたい

    エクセル2000です。 VBAで、作業対象を全部のワークシートか選択されたシートかを任意で切り替えたいのです。 ためしに無理とは思いながら以下のように作ってみましたが、当然のようにエラーになります。 どうかお知恵をお貸しくださいませ。 お願い致します<(_ _)> Sub test() sc = ThisWorkbook.Worksheets.Count ssc = ActiveWindow.SelectedSheets.Count If sc <> ssc Then ans2 = MsgBox(ssc & " 枚のシートだけでいいんですね?" _ & vbCr & "" _ & vbCr & "もし全部のシート(" & sc & "枚)を対象にするなら" _ & vbCr & "いいえを選択してください。", vbYesNo + vbQuestion, " o(^-^)o") ts = IIf(ans = vbNo, Worksheets, ActiveWindow.SelectedSheets)'ここでエラー End If For Each sh In ts sh.Activate sh.Cells(1, 1).Value = sh.Name Next sh End Sub

  • シートの繰り返し処理がうまく作動せず困っています.

    3シートあるブックの繰り返し処理を行うマクロを作成したのですが、シートの情報の取得が うまく動作せず困っています。 当方macro初心者のため教えていただけませんでしょうか? (1) 以下のマクロを組んだところ1枚目のシートの情報を取得してしまい、3シートとも同様の    処理となってしまいました。(3シートともIF文がTRUEになってしまいました) Dim sh As Worksheet For Each sh In Worksheets If Range("a2").Value = "チーム" Then Call SHEETSET End If Next (2) 他の質問も確認し、シート名を設定するように変更したところ情報が取得できず(empty)、    動作がうまくいかなくなっています。(3シートともIF文がfalseとなってしまいました) Dim sh As Worksheet For Each sh In Worksheets If sh.Range("a2").Value = "チーム" Then Call SHEETSET End If Next いきづまっており、困っております。 申し訳ありませんが教えていただけませんか?

  • VBA なんですが

    VBA なんですが すべてのワークシートを順番に選択して 指定した範囲をコピーし『まとめ』と言う別のシートに貼り付けたいのですが どうしたらいいのかわかりません。 それらしいのは考えたのですが Set sh = Worksheets(sh.Name)でエラーになります。 頭がいいかた教えてください。   Dim sh3 As Worksheet Dim sh As Worksheet Dim en As Long Set sh3 = Worksheets("まとめ") For Each sh In ActiveWorkbook.Worksheets If sh.Name <> "まとめ" Then en = sh.UsedRange.Rows.Count Set sh = Worksheets(sh.Name) sh.Range(Cells(2, 1), Cells(en, 10)).Copy

  • VBAの処理が途中で止まる

    エクセル2003です。 検索してヒットしました下記のVBAなのですが、処理結果は希望した状態になるものの、VBAが途中で止まってしまう状態になります。 正常に終了させるには、どうすればいいのでしょうか。 ■全てのシート(シート名任意)のアクティブセルをA1にする Sub auto_open() Dim r As Long, sh As Worksheet For Each sh In Worksheets sh.Activate ActiveSheet.Select r = Selection.Row ActiveWindow.SmallScroll Up:=r Cells(1, 1).Select Next End Sub ※実行すると5行目で止まり、実行時エラー1004 WorksheetクラスのSelectメソッドが失敗しました  と表示されます。

  • エクセルで、特定のシートを印刷するVBA

    VBA初心者です。下記が可能か否かどなたか教えていただけませんか。 【内容】  一つのエクセルファイルに複数シートあるとします。(シート0~シート5まで)  「シート0」のトップページに選択ボタンをもうけて、それを押下したら、特定のシート「シート3」を印刷するのようなモノを作りたいと考えています。※ただし条件として、シートは「シート0」のままでその印刷処理を行いたいのです。(一度もシート3にいくことなく) 【今までの試み】 1.調べて下記のようなものを作ってみました。 Sub 特定シート印刷() Dim sh As Worksheet For Each sh In Worksheets If sh.Name Like "シート3" Then sh.PrintOut End If Next End Sub ただし、これだと、シート3のページに飛んで、印刷してしまいました。 2.次にマクロの記録で、マウス軌跡の実行を試みました。 具体的には、シート3をCtrlキーを押しながら選択し、ファイル→ 印刷→「選択したシートを印刷」を選択し実行しました。 この場合はシート0とシート3の両方が印刷されてしまい、希望通りにいきません。 そもそも、私の望んでいること自体が不可能なのか、 またそうでなければその解決方法をどなたか教えていただけないでしょうか。

  • VBAで全てのワークシートに処理するとき

    ブック内の全シートに、列を挿入しようとしたら、下の WS.Range("E1").Select の行で「Rangeクラスのselectメソッドが失敗しました」とエラーになります。 セルに入力する処理のときはこのパターンでできたのですが・・・いろいろ試してもわかりません T_T 何が必要でしょうか。 ----------------- Sub 列を挿入() Dim WS As Worksheet For Each WS In Worksheets WS.Range("E1").Select Selection.EntireColumn.Insert Next WS End Sub ----------------- よろしくお願い致します。

  • エクセルVBAでワークシート削除

    ブックの中にある、表示されているシートで、たとえば図表1~図表4(何番まであるかは不定です)という名前のシートを削除するVBAを作りました。ただの「図表」という名前のシートや、「何々図表」、「図表集計」等のシートは削除しません。 Sub 保存図表削除() Dim SN As String For Each sh In Worksheets SN = sh.Name If sh.Visible And IsNumeric(Mid(SN, 3, Len(SN) - 2)) And Left(SN, 2) = "図表" Then ans = MsgBox(SN & "を削除してよい?", vbYesNo) If ans = vbYes Then Application.DisplayAlerts = False sh.Delete Application.DisplayAlerts = True End If End If Next End Sub これでうまく作動するのですが、いちいちシートごとに削除の有無を聞かずに、削除するシート名をまとめて表示し、それらを削除するかしないかを聞くにはどうすればよいでしょうか? 「図表1,2,3,4があります。これらを削除しますか?」というような感じです。

  • [EXCEL]保護されたシートでオートフィルタ利用可能にしたいのですが

    いかのURLにも同じような質問があり、 http://oshiete1.goo.ne.jp/qa2550996.html それにしたがって、シート保護でもオートフィルタ可能にするための VBA記述を行いましたが、オートフィルタが利用可能になりません。 シートの保護はできているようですし、エラーもでません。 記述したコードは以下になります。 Sub Workbook_Open()   Dim Sh As Worksheet   For Each Sh In Worksheets    Sh.Unprotect Password:="fukuri"    Sh.EnableAutoFilter = True    Sh.Protect Password:="fukuri", userInterfaceOnly:=True   Next Sh End Sub なにか、不足している記述があるのでしょうか? もし、わかる方がいらっしゃったら是非アドバイスいただけないでしょうか? 私自身、VBAを利用するのがはじめてで勉強不足にもかかわらず 大変恐縮ですが、ご回答いただければ幸いです。 宜しくお願いいたします。