エクセルVBAでコードを実行しても動作せず、マクロが自動実行されない問題の解決方法

このQ&Aのポイント
  • エクセルVBAで作成したコードを実行しても動作しない問題が発生しています。データワン、データツー、まとめの3つのシートがあり、データワンとデータツーの情報をまとめシートにコピーする処理を行っています。しかし、データワンやデータツーの情報を変更してもマクロが自動的に実行されない状況です。
  • 問題の解決策として、まずはシートの変更イベントを使用する必要があります。Microsoft Excel Objects内のシート1とシート2にworksheet_changeイベントを設定し、macro1を呼び出すようにします。
  • 次に、標準モジュールのModule1に実際の処理を記述します。macro1内でまとめシートの内容をクリアし、データワンとデータツーの情報をまとめシートにコピーする処理が実行されます。エラーハンドリングも行っているため、エラーが発生しても処理が続行されます。
回答を見る
  • ベストアンサー

エクセル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 を入れました。 『データワン』シートと『データツー』シートの情報を書き換えても 手動でマクロを実行してみましたが、何も起こりません。 書き方が間違っているのでしょうか?

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

  • ベストアンサー
  • spar
  • ベストアンサー率46% (35/75)
回答No.2

おはようございます、かな? 分りやすい補足リンクありがとうございます コピペしてon error resume nextをコメントブロックしてマクロを実行しましたら、エラーでましたね 該当のセルがないって言われました データあ・データい・データうも出ます で、データあに適当に文字を入れるとエラーはデータい・うになり、データいにも適当に文字を入れるとエラーはデータうだけになりました 結果的にはシートに何か1つでも文字を入れないとダメなんじゃないですかね? そのエラー回避のon error resume nextだと思われます これでダメだったら分らないな~・・・ すでに解決済みでしたら、すみませんっ!

その他の回答 (1)

  • spar
  • ベストアンサー率46% (35/75)
回答No.1

こんばんは こちらEXCEL2003ですが、動きましたよ・・・? On Error Resume Next をコメントブロックして実行してみて下さい 何か分るかもしれません

tekkenman7
質問者

お礼

すみません、こちらでお願いします。 http://blog-imgs-17.fc2.com/s/k/s/sksfiosjdijf34/newfile_sample.html

tekkenman7
質問者

補足

ありがとうございます。 いろいろ試してみましたが、やはりダメでした。 ↓その作業画面を画像にして、アップロードしました。 http://blog-imgs-17.fc2.com/s/k/s/sksfiosjdijf34

関連するQ&A

  • Excelのマクロについて教えてください。

    Excelのマクロについて教えてください。 下記のマクロがあります。 With Range("A" & Rows.Count).End(xlUp) .EntireRow.Copy .Offset(1) .Offset(1).EntireRow.SpecialCells(xlCellTypeConstants).ClearContents .Offset(1).Value = .Value + 1 End With 実際にデータが入っているのはA列~E列までで .EntireRow(行全体)ではなく A?:E? と範囲を指定して上記を実行させたいのですが どのように変更するといいでしょうか。 よろしくお願いします。

  • Excel2000のマクロが上手くいきません

    はじめまして、よろしくお願いします。 仕事で下記のような条件のマクロを作っています。 全くの初心者ですが、 いろんなHPを見て例文を書き写したりしながらなんとか作ってみたのですが、 ですが、どうしても上手く実行されません。 お恥ずかしい話ですが、 ものすごく根本的な簡単なミスをしているだと思うのですが、 どの部分が間違っているかも正直分からなくなってきました。 ご教授いただければ幸いです。 「AAファイルのS1シートのA2~B10をBBファイルのS2シートA2~B10へコピーし、 BBのS2シートB2~B10までの中でデータの入っていない行は削除する」 マクロはBBファイルに書き込んでいます。 また、AAとBBの両方を開いて実行もしています。 Sub Workbooks("AA.xls").Worksheets("S1").Range("A2:B10").Copy _ Workbooks("BB.xls").Worksheets("S2").Range("A2") Application.ScreenUpdating = False On Error Resume Next With Columns("A2:A10") .SpecialCells(xlCellTypeConstants).EntireRow.Hidden = True .SpecialCells(xlCellTypeFormulas).EntireRow.Hidden = True .SpecialCells(xlCellTypeVisible).EntireRow.Delete .EntireRow.Hidden = False End With Application.ScreenUpdating = True End Sub お手数おかけいたしますが、よろしくお願いいたします。

  • エクセルVBAでエラー、Changeの使い方が×?

    エクセルVBAでBOOK1のsheet1とsheet2とsheet3があり、 sheet1とsheet2の全ての情報をsheet3にコピーしてまとめるようにしました。 マクロを実行するには、Visual Basicを開いてF5を押しています。 それをsheet1かsheet2の中身の一部分でも変更すると そのときに自動的にマクロが実行されるようにしたいです。 sheet1とsheet2とsheet3に Private Sub Worksheet_Change(ByVal Target As Range) Call マクロ() End Sub を入れ、 標準モジュールに Sub マクロ() Workbooks("BOOK.xlsm").Worksheets("sheet1").Range("C1:BE50").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C1:BE50") Workbooks("BOOK.xlsm").Worksheets("sheet2").Range("C1:BE100").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C51:BE150") Dim UsedCell As Range Dim Max_Row, RowCount As Integer Set UsedCell = ActiveSheet.UsedRange Max_Row = UsedCell.Cells(UsedCell.Count).Row Application.ScreenUpdating = False For RowCount = Max_Row To 1 Step -1 If Application.WorksheetFunction.CountA(Rows(RowCount)) = 0 Then Rows(RowCount).Delete End If Next Application.ScreenUpdating = True End Sub をやって、sheet1かsheet2のセルを変更すると エクセルが固まってしまいます。 デバックでは最初の Workbooks("BOOK.xlsm").Worksheets("sheet1").Range("C1:BE50").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C1:BE50") がよくないようです。 書き方が間違っているのでしょうか?

  • シート間のコピー時の列幅と行の高さ

    マクロ初心者です。下記はシート間のコピーですが、列幅と行の高さも一緒にコピーするにはどのように書いたらよいでしょうか。マクロは"sheet1"に入っています。よろしくお願いいたします。 Sub macro1() Worksheets("sheet2").Activate Cells.Clear Worksheets("sheet1").Activate Worksheets("sheet1").UsedRange.Copy ActiveSheet.Paste Destination:=Worksheets("sheet2").Range("A1") End Sub

  • Execl2007のVBAの質問です

    度々申し訳ありませんが、何卒またお教えください。 下記の様なコードを書いたのですが、 オートフィルタの解除ができません。 何故なんでしょうか? ちなみに、ある任意の日付の行だけを抽出して 別のシートにコピー・プリントアウト を自動化するマクロを作りたいと思っています。 他にもコードに問題などありましたら 指摘いただけると幸いです。 よろしくお願いします。 ---------------------------------------------------------------- Sub macro2() 'macro test 2 Dim yyyymmdd As Date yyyymmdd = InputBox("印刷したい日付を入力して下さい。", "印刷日入力") With Worksheets("結果") .ListObjects("リスト1").Range.AutoFilter Field:=1, Criteria1:=yyyymmdd .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Worksheets("貼り付け用紙").Range("A1") End With 'ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)" Worksheets("結果").AutoFilterMode = False Application.CutCopyMode = False Worksheets("貼り付け用紙").Range("A1:AM100").ClearContents End Sub

  • ExcelのVBAについての質問です。

    ExcelのVBAについての質問です。 計測機器をつないでsheet1に数値が書き込まれていってる状況です。下記のプログラムを特定の時間内に複数回ループされるように設定したいのですが、そのようなプログラムを加えればいいのでしょうか? Sub Macro1() ' ' Macro1 Macro ' ' Dim iRows As Integer Dim sRows As String ' 最終行の調査: iRows = Worksheets("Sheet1").UsedRange.Rows.Count ' 最終行をシート3にコピー Worksheets("Sheet1").Rows(iRows).Copy Destination:=Worksheets("Sheet3").Range("1:1") ' CH1 の最新データをシート3にコピー Worksheets("Sheet3").Range("B4").Value = Worksheets("Sheet1").Cells(iRows, 3).Value ' CH2 の最新データをシート3にコピー Worksheets("Sheet3").Range("B5").Value = Worksheets("Sheet1").Cells(iRows, 4).Value End Sub

  • エクセル2007のマクロ、2動作ができない

    Okwaveで教えていただいたマクロを一つのボタンで動かそうとしています。 ステップインで動かすと希望の動作をするのですが実行すると途中で止まります。 点検用紙をコピーして日付と曜日を入れようとしています。 Sub macro1() Dim s As String s = Format(Date, "e年m月") On Error GoTo errhandle Worksheets(s).Select  With Range("A7:D7") Value = Date NumberFormatLocal = "ggge年m月d日" End With With Range("E7") Value = Date NumberFormatLocal = "aaa曜" Select End With Exit Sub errhandle: Worksheets("月次点検用紙").Copy before:=Worksheets(2) ActiveSheet.Name = s End Sub

  • ExcelのVBAについて質問です。Excelは2003です。

    ExcelのVBAについて質問です。Excelは2003です。 コマンドボタン1で下記のプログラムを実行するようにしています。 Sub Macro1() ' ' Macro1 Macro ' ' Dim iRows As Integer Dim sRows As String Dim i As Integer For i = 1 To 100 Application.Wait Now + TimeValue("00:00:05") ' 最終行の調査: iRows = Worksheets("Sheet1").UsedRange.Rows.Count ' 最終行をシート3にコピー Worksheets("Sheet1").Rows(iRows).Copy Destination:=Worksheets("Sheet4").Range("1:1") ' CH1 の最新データをシート3にコピー Worksheets("Sheet3").Range("B9").Value = Worksheets("Sheet1").Cells(iRows, 3).Value ' CH2 の最新データをシート3にコピー Worksheets("Sheet3").Range("C9").Value = Worksheets("Sheet1").Cells(iRows, 4).Value Next i End Sub これをコマンドボタン2で途中でも強制的に終了するようにしたいのですがコマンドボタン2にはどのようなプログラムを入れればいいでしょうか?

  • エクセルVBA:コピーの貼り付け先

    VBA初心者です。よろしくお願いします。 あるデータベースをセルB2に入力されている値で絞込み、 シート2に貼り付けるとき、下記の(1)がおそらく正解だと思いますが、 ★(質問1) (2)でも同じ結果が得られました。コピー先の目的地を示す「Destination:=」の部分は省略して全く問題なしと考えてよろしいのでしょうか? ★(質問2) (3)で試してみても同じ結果が得られました。range("sheet2!A1") なんて書き方は、たまたま、試してみたらできちゃった(同じ結果が得られた)のですが、使い方として問題ありませんか? ------------------------------------------------------------- (1) Sub test01() With Range("A1") .AutoFilter field:=2, Criteria1:=Range("B2") .CurrentRegion.Copy Destination:=Sheets("Sheet2").Range("A1") .AutoFilter End With End Sub -------------------------------------------------------------- (2) Sub test01() With Range("A1") .AutoFilter field:=2, Criteria1:=Range("B2") .CurrentRegion.Copy Sheets("Sheet2").Range("A1") .AutoFilter End With End Sub -------------------------------------------------------------- (3) Sub test01() With Range("A1") .AutoFilter field:=2, Criteria1:=Range("B2") .CurrentRegion.Copy Range("Sheet2!A1") .AutoFilter End With End Sub

  • エクセルのマクロ記録を他のシートでも実行したい

    エクセル2010を使用しています。 シート1でマクロ記録を使用しデータの並び替えをし、 同じブック内にシート1をコピーしてシート2としました。 このシート2でもシート1で行ったデータの並び替えをしたいのですが シート2ではマクロは実行されませんでした。 わからないながらもVBAを見たところ下記のように 記述されおりましたが、どのような修正をすればよいかご教授いただけると助かります。 ちなみに、シート1でマクロを記録し、そのシートを同ブック内に複数コピーして それぞれのシートでマクロを実行させるということを考えています。 Sub Macro1() ' ' Macro1 Macro ' ' Range("A11:Q17").Select ActiveWorkbook.Worksheets("1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("B11:B17"), _ SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="日,月,火,水,木,金,土" _ , DataOption:=xlSortNormal ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("A11:A17"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("1").Sort .SetRange Range("A11:Q17") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub

専門家に質問してみよう