• ベストアンサー

No.277098 質問:エクセルでできるでしょうか? の回答マクロを使いたいのですが

お世話になっています 私も同じ様に A列に同じ日付が在り、これを効率よく削除したいと思っていました 以前、「No.277098 質問:エクセルでできるでしょうか?」での 回答マクロを使わせて頂こうと思い[Visual Basic エディター] に コピー・ペーストして実行したところ コンパイルエラー:End Sub が必要です。  と叱られました マクロ文の最後にはちゃんと End Sub があるのですが どうしてもうまく実行されません [Visual Basic エディター] にコピー・ペーストする詳しい方法と コンパイルエラーの原因を教えて下さい

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

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

>このマクロの先頭行に >Sub Macro1()・・・・・を書き加えなければいけない >ですよね 。 「Sub Macro1()」= これは必要ないのでは。 イベントプロシージュアーとして、先頭行に既に、Sub ・・・が有るのに、更に「Sub Macro1()」を 外側に、かぶせたように書いておられるが、本当にソウしたのですか。Macro1という別のプロシージュアーを創るものと解釈して、そのEndSubがないといっているわけです。 

JOX
質問者

お礼

ありがとうございます ようやく解決できました。エクセルマクロの基礎が出来ていないのに このような難しい構文を使おうとして、恥ずかしいかぎりです。 ボチボチと勉強してゆきますので、これからも宜しくお願いいたします

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

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

nishi6さんが回答されたコードのことですね? 貼り付けする先はSheet1です。 何か、余分なコードが残っていませんか? 「Option Explicit」以外の余分なコードが記述されていないことが前提でしょう。 > コンパイルエラー:End Sub が必要です。   は「対応する End Subが無いよ」といってるのでしょうから、 思っていない "Sub"があるように思います。 新規に作成したBookに貼り付けてから、データをコピーしてみてはいかがですか?

JOX
質問者

補足

あれから随分イジクッテみましたが、 解決できません Const CheckArea = "C1:C30" 'チェックする範囲 Private Sub Worksheet_Change(ByVal Target As Range)   Dim rgArea As Range '変更セルとチェックする範囲の共通部分   Dim rg As Range '単一セル   Dim Txt(30) As String 'チェックする範囲の内容(文字列で取得)   Dim rw As Integer '行カウンタ   Dim c As Integer 'チェック用行カウンタ   On Error GoTo ErrorHandler 'エラー対応        :        :  End Sub このマクロの先頭行に Sub Macro1()・・・・・>を書き加えなければいけないんですよね これがいけないのかなアー

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

関連するQ&A

  • エクセルでマクロを実行するとコンパイルエラー

    エクセルでVBエディタでソースコードを記述し、マクロを実行すると、コンパイルエラー、「SubまたはFunctionが定義されていません」とエラーが出ます。これはどういうエラーですか?何が間違っているのですか?

  • Wordのマクロについて初歩的な質問です。

    初心者です。Word 2010のマクロについてお伺いします。 ルーティンで送られてくる文書に頻繁に含まれる単語について、日本語から英語に直す必要があり、これを自動化できないかと考えています。 ここでは、例として、マクロを実行することにより、「住所」を”Address”に、「青年月日」を”Date of Birth”に置換したいと思います。 1. Visual Basicタブの”Normal”の”ThisDocument(コード)”に以下を記述(コピーペースト)しています。 Sub Macro1() Cells.Replace What:="住所", Replacement:="Address" Cells.Replace What:="生年月日", Replacement:="Date of Birth" End Sub 2. ところが、Macro1()のマクロを実行しようとすると、「オブジェクトが必要です。」とエラーが表示されてしまいます。 どうすれば、目的とするマクロが実行できるのでしょうか? アドバイスお願いします。よろしくお願いいたします。

  • エクセルマクロでコピーの質問です。

    エクセルマクロでコピーの質問です。 こんにちわ^^; よくわからないエラーが起こっているため困っています。 1.xlsという別のエクセルを開いて指定のセルをコピーし、貼り付けるということで下記のマクロを作ってみました。 ちなみにマクロを書いたファイルはsum.xlsで、1.xlsのコピーしたいセルには数値のみ入っています(書式は会計)。 Sub before() Workbooks.Open Filename:="c:¥aaa¥1.xls" Range("a1:a5").Copy ActiveWindow.Close Range("a1").PasteSpecial End Sub しかし、このマクロをThisWorkbookに貼り付けると文字列として保存されてしまいます。 そこで最後の行を Range("a1").PasteSpecial Paste:=xlValues にするとエラー400が出ます。 一応、sheet1(sheet1)に貼り付けて実行してみたところ、コピー自体ができませんでした。 まだ余りエクセルマクロを理解していないため、なぜなのかが良くわからないのでアドバイスをお願いいたします。 ちなみに使っているのはoffice2003のエクセルです。

  • excelでセルクリックした時、マクロ起動

    office2003です。 sheet1のC3,C4,C5セルに、ある文字列をコピーペーストするマクロがあります。…(1) マクロ文は省略 下記は、それぞれC3,C4,C5セルが選択(クリック)された時、実行するマクロ…(2)です。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 3 And Target.Row = 3 Then personC3 If Target.Column = 3 And Target.Row = 4 Then personC4 If Target.Column = 3 And Target.Row = 5 Then personC5 end sub やりたい内容は、C3,C4,C5に文字列を表示させ、その文字列がクリックされたら、 別のマクロを起動(例.C3クリックされたら、personC3マクロ起動)させたいのです。 しかし(1)(2)の順に実行すると、C3,C4,C5セルには文字列のコピーペーストが出来ません。 (2)のマクロは、セルが変化したら実行ですから当然なのは分かっているのですが、 ここが困っている所です。 もともとC3,C4,C5に文字列が入っている場合は、(2)のマクロだけでよいのですが、 (1)を実行した後に(2)のマクロが有効とするには、どの様にしたらよいのでしょうか? 尚、やりたい内容が実現できれば、他のやり方でも可です。 条件: C3~C5までのどれかをクリックする動作は必須です。 C3からC5までに設定される文字は、固定(同一)ではありません。

  • 【エクセル VBA マクロ】

    シートAの日付を確認してデータをコピーし、シートBの該当する日付の列に売り上げを貼り付けるというマクロを組みたいです。 他の方達のを参考にしながら作成しましたが、実行をすると「エラー1004」 Matcheプロパティが見つからないというエラーが出ます。 どなたか原因と対策を教えてください。 Sub() Sheets("シートA").Select Range("J3:J10000").Select ※売上データ Selection.Copy 検査値 = Range("R2").Value ※日付データ Sheets("シートB").Select Set 検索範囲 = Range("J4:AN4") ※日付データ 列 = Application.WorksheetFunction.Match(検査値, 検索範囲, 0) Cells("4, 9" + 列).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,SkipBlanks:False, Transpose:=True End Sub

  • EXCEL マクロにて

    EXCELにて質問があります 別シートのピンクという文字列をB列から探すマクロを作成しました Private Sub CommandButton1_Click() Set aaa = Sheets("sheet1写真").Columns(2).Find("ピンク").Address(False, False) MsgBox aaa Application.Goto Sheets("Sheet1写真").Range(aaa) End Sub このマクロを実行しても型が一致しませんと言うエラーが出てしまいます 何がいけないのかさっぱりわかりませんどうかご教授お願いします

  • エクセル2010 マクロで値のみコピー

    こんばんは、エクセル2010を使っています。 マクロでデータを値のみをコピーしたいのですが、うまくいきません。 文は 以下の様なものです。 Sub ボタン1_Click() Worksheets("Sheet4").Range("e1").Copy Worksheets("sheet2").Range("b1").PasteSpecial Paste:=xlValues End Sub マクロの画面を閉じようとした時に、Pasteの部分が選択され  コンパイルエラー 修正候補:ステートメントの最後 と言うダイアログボックスが出てしまいます。 ご存知の方教えて頂けないでしょうか、よろしくお願いします。 ※ ちなみに Worksheets("Sheet4").Range("e1").Copy Worksheets("sheet2").Range("b1")  ならちゃんとコピーされるのですが、コピー元の数式がコピーされるので、値のみをコピーしたいのです。

  • メッセージボックスを表示させるエクセルマクロ

    こんにちは。マクロ初心者です。 エクセル(Excel2003)でメッセージボックスを 表示させるマクロが思うようにいかず困っています。 B列に「○○会社」と入力されれば、 「取引先です。」 とメッセージボックスを表示させたいと思い、 次のとおりマクロを作成しました。 -------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 And Target Like "*会社" Then MsgBox "取引先です。" End If End Sub -------------------------------- しかし、コピーなどで複数のセルを貼り付ける(入力)行為をすると、 「実行エラー'13': 型が一致しません」と出てしまいます。 Worksheet_Change(ByVal Target As Range)を使っているので、 -------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Column = 2 And Target Like "*会社" Then MsgBox "取引先です。" End If End Sub -------------------------------- と、「If Target.Count > 1 Then Exit Sub 」を入れれば、 メッセージは出なくなるのですが、 これだと、A列セルに、コピー&ペーストで複数セルを貼り付けた場合、 「○○会社」があっても、マクロが効いてきません。 複数セルの貼り付けにも対応させるには、 どのようにすればよろしいでしょうか? 基本的なところが理解できていないのだと自覚しておりますが、 どうかご教授願います。 長々とわかりづらい文章ですみません。よろしくお願いします。

  • 同じマクロ名でも、違うモジュールならエラーにならな

    同じマクロ名でも、違うモジュールならエラーにならない? エクセルVBAについてご教授ください。 標準モジュールに ――――――――― Option Explicit Sub CommandButton1_Click() MsgBox "" End Sub Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― と同じマクロ名を2つ作ったら、コンパイルエラーになりますが、 上記のコードは一度消して、フォームモジュールに ――――――――― Private Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作り、 標準モジュールに ――――――――― Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作った場合は、エラーにならずにマクロを実行できました。 これは、フォームモジュールがPrivate Subだからでしょうか? フォームモジュールに1つ、 標準モジュールに1つ なら同じマクロ名を使っても、エラーにならないという事でしょうか? よろしくお願いします。

  • エクセルの個人用マクロブック

    「個人用マクロブック」に abc というマクロが登録されています。 コマンドボタンをクリックして abc を実行できるようにしたいのですが。 Sub abc () 処理内容 End Sub Private Sub CommandButton1_Click() Call abc End Sub コマンドボタンをクリックするとエラーになってしまいます。エラー内容は「SubまたはFunctionが定義されていません」です。 VBE画面から直接 abc を実行した場合はエラーになりません。 どこを直せばいいのでしょうか。

専門家に質問してみよう