• ベストアンサー

エクセル マクロ 選択した複数シートにコメント挿入のやり方

はじめて質問させていただきます。 エクセルのマクロで選択された複数シートに順番に コメントを挿入する・・というのをしたいのですが うまくいきません。 "Exs.Range("A1").AddComment"の部分で 「実行時エラー:1004 アプリケーション定義またはオブジェクト定義のエラーです」 となってしまいます。 マクロの記録で試そうとも思ったのですが、 複数シートを選択すると、右クリックしても コメント挿入のメニューが表示されませんでした。 元々、複数シートへのコメント挿入はできないのでしょうか・・? ソースは以下です。 Sub Macro1() Dim Exs As Worksheet Dim sSheet As Long Dim i As Long '選択されたシート数を取得 sSheet = ActiveWindow.SelectedSheets.Count i = 1 '選択されたシート数分、A1セルにコメントをつけていく Do While i <= sSheet ActiveWindow.SelectedSheets.Item(i).Activate Set Exs = ActiveWorkbook.ActiveSheet Exs.Range("A1").ClearComments Exs.Range("A1").AddComment Exs.Range("A1").Comment.Visible = True Exs.Range("A1").Comment.Text Text:=Chr(10) & "てすとー" Exs.Range("A1").Select i = i + 1 Loop End Sub お解かりになる方いらっしゃいましたら、 なにとぞよろしくお願いいたします。

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

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

複数シートでもできるようです。Sheet4とSheet6うお指定しておいて 実行したら、Sheet4とSheet6のA1にコメント aaa が入りました。 Sub test01() Dim sh As Worksheet For Each sh In ActiveWindow.SelectedSheets MsgBox sh.Name sh.Select sh.Range("A1").ClearComments sh.Range("A1").AddComment Text:="aaa" Next sh End Sub

sumintyo
質問者

お礼

ご回答ありがとうございます。 シートをActiveではなくSelectにする必要があったのですね。 Excelオブジェクトの扱い方について勉強不足でした・・。 本当にありがとうございました。

その他の回答 (1)

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。 >元々、複数シートへのコメント挿入は できないようですね。なので解除する必要があるようです。 Dim Exs As Worksheet Dim Clc As New Collection '■追加 Dim ci As Variant '■追加 '選択されたシートIndexをいったんCollectionに格納 For Each Exs In ActiveWindow.SelectedSheets Clc.Add Exs.Index Next Exs 'シートグループ解除 Sheets(1).Select '選択されたシート数分、A1セルにコメントをつけていく For Each ci In Clc With Sheets(ci).Range("A1") .ClearComments .AddComment.Text Text:=Chr(10) & "てすとー" End With Next ci な感じで。Collectionではなく、配列でもいいのでしょうけど。

sumintyo
質問者

お礼

早速のご回答ありがとうございます。 お礼が遅くなってしまって申し訳ありません。 上記の方法で実現できました。 選択シートを1シートづつActiveにするのではなく Selectにするのがポイント・・だったのですね。 本当にありがとうございました。

関連するQ&A

  • 複数のシートをマクロで印刷

    印刷したい複数のシートをアクティブ状態にして以下のマクロを実行すると、余計に印刷されてしまいます。 Sub Test()  Dim ws As Worksheet  For Each ws In ActiveWindow.SelectedSheets   ActiveWindow.SelectedSheets.PrintOut _   Copies:=1, Collate:=True  Next ws End Sub 例えば、Sheet1とSheet2を選択して実行すると、Sheet1とSheet2が二部ずつ印刷されます。また、Sheet1とSheet2とSheet3を選択して実行すると、それぞれが三部ずつ印刷されます。 それぞれを一部ずつ印刷するためには、マクロをどう直せばいいでしょうか?

  • 【エクセル】 連続印刷する際のマクロの記述について。

    いつも大変お世話になっております。 エクセル2003のマクロの記述についてご教示のほど お願いいたします。 シート2にシート1の名簿から住所氏名等を落とし込み出来るように様式を作っています。 このシート3には、以下のVBAが設定してあります。 ********************************** Sub osieteinsatsu02() ' Dim start As Long Dim stp As Long Dim i As Long start = Range("a1") stp = Range("c1") For i = start To stp Range("a1") = i Sheets("Sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("sheet3").Select Next End Sub ********************************** ↑ このシートのA1の値(名簿番号)~C1の値の人のデータをシート2に落とし込み、 シート2に行き様式を一枚印刷する。 このように記述してあると思います。 ところで、様式の中に複数名をまとめたいと思いますので、例えば、A1の値を変えるときに4つ置きに変化させるにはどのように記述すれば良いのでしょうか? 1、6、11、16、、、C1の値までで止まる。 どうぞよろしくお願いします。

  • VBA セルに他セルをコピペしたコメントを挿入 

    A1~A200のセルに、D1~D200の値をそれぞれコピーしたコメントを挿入するマクロを作ろうとしています。 A1に、何も書いていないコメントを挿入することはできました。 Dim i As Long For i = 1 To 200 Range("A" & i).AddComment Range("A" & i).Comment.Visible = False Next i End Sub このコメントに、D1~D200の値を貼り付けたい場合は(A1にはD1の値を、A2にはD2の値といった具合)どのように書けばよいのでしょうか? Private Sub Worksheet_Change という記述になるのかと思いますが、うまくいかないのでどなたかご存じでしたら教えてください。 よろしくお願いします。

  • Excelマクロ/選択したシートを任意の枚数印刷

    sheet1~sheet5のワークシートがあるとします。 その中で印刷したいシート(複数)を選択し、それぞれのシートのA1セルに入力している数字の 枚数を印刷する、ということを考えています。 そのときに印刷したいシートを選択するので、もちろんシートを選択するのは手動で、 その後、マクロを実行するイメージです。 以下のマクロでいけるかと思ったのですが、仮にsheet1、sheet3、sheet5を 選択して、実行すると、それぞれのA1が、5,7,10であったとしても、3つのシートを 5枚ずつ印刷してしまいます。 (やりたいことはsheet1が5枚、sheet3が7枚、sheet5が10枚、です) Sub insatsu() Dim mySheet As Worksheet Dim m As Integer For Each mySheet In ActiveWorkbook.Windows(1).SelectedSheets m = range("A1").Value mySheet.PrintOut Copies:=m Next End Sub なにか良い解決法があればご教授ねがいます。

  • エクセルマクロ

    お世話になります。 下記の記述でどこがおかしいのでしょうか 上手く印刷できません。 Sub Macro13() ' ' 'Dim i As Long For i = 1 To 4 Range("Ai:Ei").Select Selection.Copy Sheets("カード").Select Range("G1:K1").Select Selection.Paste Range("A1:F21").Select Application.CutCopyMode = False ActiveSheet.PageSetup.PrintArea = "$A$1:$F$21" ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _ :=True Next i End Sub

  • 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 複数のシートの同一の位置にコメントを入れたい

    EXCEL2000で、BOOK内の複数のシートの同一の位置(A1など)に、同じコメントを入れたいのですが、シートを作業グループにして「挿入」→「コメント」を選択しようと思っても、コメントという文字が薄くなってしまい選択できません。 1シートずつ挿入するしかないでしょうか? たくさんのシートに入れたいので、結構手間なのですが・・・。

  • EXCEL VBA 複数シート選択の方法

    エクセルVBAのシート選択方法について教えてください。 選択対象シート数は4つで、シート名は、「101」「102」「103追加工」「104」とします。 シート名「表紙」のセルは A1:101 A2:102 A3:103追加工 A4:104となっており、 使用者はB1~B4セルに「○」「×」を入力し、 「○」となっているシートのみ選択出来るようにしたい。 下記マクロの場合、シート名が全角文字だと使えるのですが、 シート名が「101」のように半角数字だけの場合コピーできません。 どこを修正すればよいのでしょうか? Sub TestSample2() Dim c As Range Dim flg As Boolean On Error Resume Next flg = True ThisWorkbook.Activate  With Worksheets("表紙")  For Each c In .Range("B1:B4")   If c.Value Like "○*" Then     Worksheets(c.Offset(, -1).Value).Select flg     flg = False   End If  Next c End With  With ActiveWindow.SelectedSheets  If .Count > 0 Then    .Copy  End If  End With  '元のシートに戻る場合  'Application.Goto ThisWorkbook.Worksheets("表紙").Range("A1") End Sub

  • Excelシートを複数選択するvbaについて

    タイトルのvbaを作成していますが、インデックスエラーとなりうまく選択できません。 社員番号をシート名にしたシートが複数あります。 ここでは、2番目のシートから仮に060001~060100までとします。 (社員番号は6桁で整理しています。) 1番目のシートには、別途、条件に一致した社員番号リストを作成しています。 (シート名が6桁のため、セルの書式設定で"000000"をしています。) A1=060002 A2=060005 A3=060088 この社員番号リスト(A1、A2、A3)に一致するシートを別ブックにコピーするのが目的ですが、まずは、選択するところから始めたところ、インデックスエラーにより選択できません。 シート名と配列にしたリストの型がよくないと思い、文字列に直すなどを試してみましたがうまくいかず、結局どのように直していいのかわかりませんでした。 ご教示いただけないでしょうか? よろしくお願いいたします。 以下に、実行したプログラムを記載させていただきます。 Option Base 1 Sub Sample() Dim Sh As Worksheet Dim ArrShName() As String Dim i As Long ReDim ArrShName(1) For i = 1 To 3 ReDim Preserve ArrShName(i) ArrShName(i) = Cells(i, 1) Next i ' Worksheets(Array("060002", "060005", "060088")).Select Worksheets(ArrShName).Select End Sub

  • 選択したシートでマクロを実行させるには

    エクセルでシートが多数あるブックで、選択状態にあるシートのみ、ページ設定の拡大縮小印刷を70%に設定したいのですが。 Dim ws As Worksheet For Each ws In ActiveWindow.SelectedSheets   With ActiveSheet.PageSetup     .Zoom = 70   End With Next ws 例えば、シート4とシート5とシート6を選択状態にして上記のマクロを実行すると、シート4しか拡大縮小印刷の変更処理が行われません。 マクロの間違いを教えて下さい。

専門家に質問してみよう