• 締切済み
  • 困ってます

コンパイルエラー Target.Range

シート上のセルに値を入力したら、 入力した値をイミディエイトに表示させたいのですが Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Debug.Print Target.Range End Sub こうすると、 コンパイルエラー 引数は省略できません。 になります。 .Range の部分がエラーになります。 原因と対策を教えてください。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数167
  • ありがとう数9

みんなの回答

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

Debug.Print Target.Range("A1").value としてみます。 セルに対するrangeは、指定のセルの中でどのセルを取得するのかしっかり指示する必要があります。 実際には debug.print target(1).value とかのようにすることでも構いません #参考 Targetには、イベントをトリガした「変更されたセル」が入ります。 複数のセルを選んで値を一斉に記入/削除したような場合でも、そのセル範囲がまとめてtargetに格納されます。 そういう状況でも「何をしたい」のかまで考えて、マクロを作成しなければいけません。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 標準モジュールで 『Sub test(ByVal Target As Range)』は動かない?

    選択されている複数のアドレスが知りたいので 標準モジュールに Sub test(ByVal Target As Range) Debug.Print Target.Address End Sub と書きました。 しかしF5ボタンを押しても何も起こりません。 デバッグ→コンパイルをしてもエラーになりません。 シートのイベントプロシージャーではなく 標準モジュールにした理由は イベント発生時ではなく、任意で起動させたいためです。 ためしに、 Sub test(ByVal Target As Range) Debug.Print Target.Address End Sub の下に、 Sub test2() Call test End Sub と書いたら、 「引数は省略できません。」 というエラーになりました。 何がダメなのかわかりません。 ご教授よろしくお願い致します。

  • マクロでシート名を変更を変更したい

    A1セルの値をシート名にするマクロは以下のとおりだと思います。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub では、E6セルの値をシート名にすることは可能でしょうか? よろしくお願いします。

  • なぜ、ByVal Sh As Objectは

    NewSheetイベントについて質問なのですが、 なぜ、ByVal Sh As Objectは、Objectなのでしょうか? Sub Workbook_NewSheet(ByVal Sh As Worksheets) や Sub Workbook_NewSheet(ByVal Sh As Worksheet) にしたら、コンパイルエラーになります。 シートの方では、 Private Sub Worksheet_Change(ByVal Target As Range) のようにrange型で宣言しているのに、なぜシートはオブジェクト型で宣言するのでしょうか?

  • エクセルvba  (ByVal Target As Range)について

    シートのイベントプロシージャーが Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub となりますが (ByVal Target As Range)部分は何なのでしょうか? 何のためにあるのかわかりません。 Private Sub Worksheet_SelectionChange() End Sub としたらエラーが返ってきました。 理由を教えてください。 よろしくお願いします。

  • 今日の日付に該当するシート名に赤色を

    いつもお世話になります。 WIN7 EXCELL2010 です。 A1に「20140721」と記入しエンターキーを押すと下記のマクロでシート名が自動で「20140721」となるようにしています。 例えば今日(7月21日)になったら自動で赤色にしていくつかあるシートの中で今日のシートを目指させたいのでご指導いただけませんでしょうか。 参考に Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub 是非ご協力をお願いします。

  • マクロで二つの構文を繋ぐには

    いつもお世話になります。 WIN7 EXCELL2010 です。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub ThisWorkbook に上記のマクロに下記のマクロを追加したいのですが、 End Sub の ところを End If End With などに変えたのですがうまくゆきません。 御指導お願いできませんでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myRange As Range Set myRange = Intersect(Target, Range("M3:V27")) If Not myRange Is Nothing Then Select Case Target.Value Case "" Target.Value = "○" Case "○" Target.Value = "●" Case Else Target.ClearContents End Select Cancel = True End If End Sub 宜しくお願いいします。

  • SheetBeforeDoubleClick

    ダブルクリックすると、選択セルが切り取り状態になるようにしたいのですが。 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Selection.Cut End Sub 上記ではダメでした。 正しい表記法を教えて下さい。 よろしくお願いします。

  • エクセルVBA イベントプロシージャに引数を渡せま

    お世話になります。 エクセル2003/XP 使用です。 イベントプロシージャに引数を渡せまるかどうか教えていただけますでしょうか? 下記のコード中の変数mysheetnameを ユーザーフォーム、→ CommandButton1のプロシージャに 引数として渡して行きたいのですが、 実行すると、一番最初のWorkbook_SheetBeforeRightClickの時点で、 コンパイルエラー:  プロシージャの宣言が、イベントまたはプロシージャの定義と一致していません。 とエラー表示されます。 イベントプロシージャに引数を渡すことはできますでしょうか? ---------- ThisWorkBook内 ---------- Public mysheetname As String Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) mysheetname = ActiveSheet.Name UserForm1.Show (mysheetname)     '←変数mysheetnameの値をユーザーフォームに渡したい。 End Sub ---------- ユーザーフォーム ---------- Private Sub UserForm_Initialize(ByVal mysheetname As String ) 処理 End Sub Private Sub CommandButton1_Click(ByVal mysheetname As String ) 処理 End Sub ’--------- ここまで 引数について少し理解し始めたばかりの者です。 よろしくお願いします。

  • VBAでセルに変更があったらユーザアカウントを取得

    こんにちは。VBA初心者です。 イベントプロシージャを使って、セルに変更があったら、その右隣のセルにWindowsのユーザアカウント名と変更時刻を取得したいと思い、以下のようなコードを書いたのですが、書き込まれたユーザアカウントも「変更」とみなされて無限ループに陥ってしまいます。 どうしたら、この問題が解決できるでしょうか。 あるいは、イベントプロシージャを使用せずに同じことが実現できるでしょうか。 どうか皆さんのお知恵をお貸しください。 よろしくお願いします。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Target.Offset(0, 1).Value = Application.UserName Target.Offset(0, 2).Value = Now End Sub

  • オープンオフィスでシート名をセルから参照するには

    マクロ初心者です。 こちらの質問(http://okwave.jp/qa/q2025849.html)と同じような内容ですが、 試行錯誤してもOpenOffice Calcでできなかったため質問させていただきます。 OpenOffice Calcで、セル「A1」に入力されてある文字を対応するシートの名前に自動で設定するには、どのようなマクロを記述すればいいのでしょうか? エクセルで使用できる Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub をVBA互換モードで試しましたが、無理そうでしたのでOpenOffice.org Basicで使えるように変換して記述したいところです。 ですが、オープンオフィスのThisWorkbookはどのように使うのかなどさっぱり理解できなかったので、どなたか詳しい方教えてください。 よろしくお願いします。