Excel VBA 実行されないのはなぜ

このQ&Aのポイント
  • VBAの練習で構文のサンプルを並べているシートでのみエラーが表示されます。
  • 新規シートでは実行されるので、なぜなのかと思います。
  • 変数名が重複しているということもありません。思い当たる点があれば教えてください。
回答を見る
  • ベストアンサー

Excel VBA 実行されないのはなぜ

いつもお世話になっております。 VBAの練習で以下のような構文を作成し実行すると 構文のサンプルを並べているシートでのみエラーが表示されます。 新規シートでは実行されるので、なぜなのかと思います。 変数名が重複しているということもありません。 思い当たる点がありましたら教えてください。 よろしくお願いいたします。 Sub InputBoxメソッドで選択した範囲を取得する() Dim myselect As Range 'On Error Resume Next Set myselect = Application.InputBox("セル範囲を選択します。", Type:=8) If myselect Is Nothing Then Exit Sub myselect.Value = "test" End Sub

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

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.2

>> 構文のサンプルを並べているシートでのみ << ということはそのシートにイベントを利用したVBAコードが書かれていて実行されてしまっているのでは? 下記の2つのどれかに・・・・・ Private Sub Worksheet_Change(ByVal Target As Range) Private Sub Worksheet_SelectionChange(ByVal Target As Range)

suzupen
質問者

お礼

早々に回答いただきありがとうございます。 そうです、まさにそうでした。 理由がわかってとても納得しました。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

>構文のサンプルを並べているシート これって何のシートですか? >エラーが表示されます。 何て言うメッセージ? そばに着いて見ているわけじゃないから 何のことだかサッパリ分かりません。 エラーが起きるシートと、起きないシートの 違い、エラーの発生場所と内容を正しく 記載してください。

suzupen
質問者

お礼

早々に回答いただきありがとうございます。 希望通り解決いたしました。

関連するQ&A

  • EXCEL VBAで空白削除のマクロを作りましたが

    削除されません。 下記のとおりですが、どう考えても動きません、どなたか修正をお願いします。 初心者です。宜しくお願いします。 Sub Ksakujyo() Dim ObjRange As Range On Error Resume Next Set ObjRange = Application.InputBox("削除範囲を選択して下さい。", "印刷範囲", Type:=8) On Error GoTo 0 If ObjRange Is Nothing Then MsgBox "キャンセルされました。" End If If Selection.Count = 1 Then Exit Sub On Error Resume Next Selection.SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftUp Exit Sub End Sub

  • Excel VBA 超初心者 困っています。

     Excelで見積書を作成しています。  マクロでページを追加できるようにしたいのですが、貼り付け先のセルを指定する方法をインターネットで探しながら作ってみると  実行時エラー1004 Range クラスの PasteSpecial メソッドが失敗しました。 となります。  ワークシートを指定すればいいのかなと思いますが、どういう風に指定するのかがわかりません。    どうか、教えてくださいませんでしょうか。宜しくお願いします。 Sub 頁追加() ActiveSheet.Unprotect ActiveSheet.Range("A42:AZ84").Copy Dim a As Range Set a = Application.InputBox( _ Prompt:="セル範囲を選択してください", _ Title:="セル選択ダイアログ", _ Type:=8) a.PasteSpecial Application.CutCopyMode = False EndSec: Set Rng = Nothing ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub

  • VBAのinputboxで何もいれずに[OK]を押した時エラーになります

    よろしくお願い致します。 EXCELのVBAで「inputbox」を使ってセルを選択させたいと考えております。 下記のコードだと「キャンセル」や「×」で閉じられた時はmsgbox「キャンセル」が出てExit subするのですが、何も入力しないで「OK」を押した場合がどうしてもエラー(入力した数式は正しくありません)になります。 いろいろ調べて試したのですがどうしてもできず困っています。 どなたか教えてください。 Sub test() Dim myAns As Range On Error Resume Next Set myAns = Application.InputBox(Prompt:="セルを選択してください。", Title:="セル選択", Type:=8) On Error GoTo 0 If myAns Is Nothing Then MsgBox "キャンセル" Exit Sub ElseIf myAns = "" Then MsgBox "最低1つは選択してください" Exit Sub Else MsgBox myAns.Address(0, 0) End If End sub

  • シートを増やすVBA

    フィルタで隠れている場合もある列の値を シート名として増やしていくVBAで以下のようなものをつくりました (値は重複している場合もある) 雛型シートがありそれをシート名だけ増やしていくというものです Sub シートを増やす() Dim target As Range Dim h As Range On Error Resume Next Set target = Worksheets("一覧シート").Range("E10:E" & Worksheets("一覧シート").Range("E65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible) If target Is Nothing Then Exit Sub 'シートを増やしていく For Each h In target On Error GoTo errhandle Worksheets(h.Value).Select On Error GoTo 0 Next Sheets("一覧シート").Select Exit Sub errhandle: Worksheets("雛型").Copy after:=Worksheets(Worksheets.Count) ActiveSheet.Name = h.Value Resume End Sub そうすると、実行エラー1004 ”シートの名前をほかのシート、Visual Basicで参照されるオブジェクトライブラリまたはワークシートと同じ名前に変更することはできません。” というエラーがたまにおきます(シート名が数字の場合におきるようです) 解決方法及び理由をご教授ください

  • excel vba 範囲をクリアーして再度表示

    お世話になります。 シートに縦方向に売上の数字が並んでいます 必要な売り上げと除外する売上をそれぞれ選択し、 まず除外する売上を消去して 必要な売り上げのみ存在している状況で印刷をかけ。 今度は 必要な売上を消去して 除外する売上のみ存在している状況で印刷をかけたく思います。 消去するのはそれぞれ myRng2.ClearContents myRng1.ClearContentsとコードを記載すると できるのですが 印刷をかけた後で 復活させる方法がわかりません。 どうやって記載したらよろしいのでしょうか? お力をお貸しください。 Dim myRng1 As Range '必要売上 Dim myRng2 As Range '除外売上 On Error Resume Next Set myRng2 = Application.InputBox("除外売上を選択して下さい", "セル選択", Selection.Address, Type:=8) If myRng2 Is Nothing Then Exit Sub  myRng2.ClearContents  印刷の処理。   myRng2を復活の処理・・・ここがわかりません     On Error Resume Next Set myRng1 = Application.InputBox("必要売上を選択して下さい", "セル選択", Selection.Address, Type:=8) If myRng1 Is Nothing Then Exit Sub  myRng1.ClearContents   印刷の処理 myRng1を復活の処理・・・ここがわかりません

  • セルの値をシート名にするエクセルVBA

    件名のVBAを以下のように書きました B列の4からずっと下までのセルの値を次々とシート「ひな型」をコピーし増やしていくものです。 Sub テスト() ' ' Macro ' ' Dim target As Range Dim h As Range '見えてるセルを取得する。「全部隠れていた」場合も考える。 On Error Resume Next Set target = Worksheets("Sheet1").Range("B4:B" & Worksheets("Sheet1").Range("B65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible) If target Is Nothing Then Exit Sub 'シートを増やしていく For Each h In target On Error GoTo errhandle Worksheets(CStr(h.Value)).Select On Error GoTo 0 Next Sheets("Sheet1").Select Exit Sub errhandle: Worksheets("ひな型").Copy after:=Worksheets(Worksheets.Count) ActiveSheet.Name = h.Value Resume End Sub これだと、一応思った通りにはなるのですが B列のセルに複数同じ名前があった時に、既に作ったシートの名前がある場合 それは無視するという風に実行したいです お知恵をお貸しくださいませ

  • VBAで実行時エラー1004が出ます

    VBAで実行時エラー1004が出ます。 「Rangeメソッドは失敗しました。Worksheetオブジェクト」です。 あらゆる可能性を調べたのですが、分かりません。誰か教えて頂けますでしょうか? 下記コードの「Cells(m, 7) =・・・」の部分がエラーになりました。 Sub ボタン1_Click() Dim 現シート As Worksheet ~ 現シート.Activate Cells(m, 7) = WorksheetFunction.VLookup(現シート.Range(現シート.Cells(m, 4)).Select, 現シート.Range(現シート.Cells(4, 104), 現シート.Cells(15, 107)).Select, 4, False) ~ End Sub 何卒宜しくお願いいたします。

  • VBAで指定したブックを前面に表示するには

    ブックAとブックBがあります。 ブックAのマクロの途中、InputBoxでブックBのセルを選択させて 処理終了後に再びブックAを前面に表示するには どうしたら良いでしょうか? 下記コードを実行したところ、 ブックBが前面になって終了してしまいます。 InputBoxの挙動が関係している気がするのですが、原因がわかりませんでした。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub テスト() '※このマクロはブックAに書かれてます Dim rng As Range On Error Resume Next Set rng = Application.InputBox( _ Prompt:="ブックBのセルを選択してください。", _ Type:=8) On Error GoTo 0 If rng Is Nothing Then Exit Sub '~ '~ ここで処理をする '~ MsgBox "処理完了" ThisWorkbook.Activate 'ここでブックAを前面に出したい End Sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ExcelはOffice365(バージョン 1902)です。 よろしくお願いします。

  • エクセルVBA/Intersect(Target,~について

    ワークシート上の名前を定義された特定の個所(結合セル)を選択すると、その部分が黄色く変わるマクロです。 一応、動くのですが、例えば印刷範囲を選択などしてしまうと印刷範囲すべてが黄色くなってしまいます。 If Target.Count >1 then Exit Sub だと、結合セルに名前を定義しているので、一ヶ所だけ選択しても色が変わらなくなります。    If Selection.Areas.Count >1 then Exit Sub だと、一遍に連続した範囲を選択してもAreasは1ですからだめです。    Range( "会社名,日付,物件,電話番号,売上高,店名,担当者")の6つの名前を定義された結合セル範囲のなかのどれか一ヶ所だけが選択された場合のみ作動するようにするにはどう書けばよいのでしょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set Rng = Range( "会社名,日付,物件,電話番号,売上高,店名,担当者") If Intersect(Target, Rng) Is Nothing Then Exit Sub Rng.Interior.ColorIndex = 2 Selection.Interior.ColorIndex = 6 End Sub

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

専門家に質問してみよう