• ベストアンサー

エクセル(VBE)について

コードウィンドウにてThisWorkbookにマクロをはりつけして その次シート1をクリックしてら別の画面になって続けて入力してみましたが最後にエラー表示がでてしまいました。シート1のセルF9(終了)から終了できるようにしたいのですが、

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

『QNo.187139 エクセルについて(セルから終了にする)』 の続きですか? そうだとすると、どのような操作をした時にエラーが起きるかよく分かりませんが・・・ 今回の質問は、『シート1のセルF9』と特定されているので、エラー回避を込みで書き換えてみました。 シート1(VBE画面のプロジェクトエクスプローラのSheet1)のコードウインドウに貼り付けます。 貼り付けた後、シートに戻って、『シート1のセルF9』をクリックする前に、『名前を付けて保存』で一旦保存して下さい。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   On Error GoTo ErrorHandler  'エラー対応   If Target.Address = "$F$9" Then     '保存・終了の確認     If MsgBox("保存して終了します。", vbOKCancel, "確認") = vbCancel Then       'キャンセルなので保存・終了はしない       Exit Sub     Else       '保存・終了を行う時にメッセージを出さないようにする       ActiveWorkbook.Saved = True       'Bookを保存       ActiveWorkbook.Save       'Excelを終了       Application.Quit     End If   End If   Exit Sub ErrorHandler: End Sub

sena33
質問者

補足

よかった~。また教えてもらって・・ 実は、エクセルで数枚のシートを作成して、作業の最後にシート1(表紙)に戻ってきてセル(終了)をクリックしてウィンドウズの画面になる様に作成したいのですが、終了と同時に保存ができれば・・・複数のシートをシート1に戻ってくるように作成できましたが、その先が出来ないのです。 今回、トライしてみたのですが、ひたすら入力が終わって確認のため教えてgooでを開いたらバッシと画面が真っ暗電源が切れました。何度立ち上げても切れてしまい、一晩寝かしたら起動しましたが、作成したファイルはエラーが出てます。 エラー内容は”コンパイルエラープロシージャの外では無効です”と出てきます。 それと、End Ifからのづれて入力してあるのは意味がありますか? sena3はそのまま、そろえ入力してしまいました。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

>If MegBoxのMegのところに・・・ If MsgBox ではないですか? 入力間違いでしょうか。 回答をコピーして貼り付ければ、スペルミスはなくなると思いますが。 コードウインドウの最初に Option Explicit と入力して『変数の宣言を強制する』ことにすればスペルミスが事前に分かります。ツール→オプション→編集の変数の宣言を強制するにチェックを入れておけば最初から Option Explicit が書きこまれます。

sena33
質問者

補足

あけましておめでとうございます。まだ、出来上がっていません。なんとかできてるみたいなのですが、表紙(sheet1)の”保存をして終了”セルをクリックしてもコントロールパネルに戻りません、方法がありますか? すいませんいつまでも・・・

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

実際動かしても何もエラーはでませんが・・・ >ひたすら入力が終わって・・・ 回答を入力されたんですかね。入力ミスがあるかも知れないので、回答の Private Sub から End Sub までをマウスで選択して、右クリックしてコピー、それをSheet1のコードウインドウに貼り付けてみてください。 >エラー内容は”コンパイルエラープロシージャの外では無効です”と出てきます。 Private Sub から End Sub や Sub から End Sub 以外の場所に、例えば『A = 1』のような式が入力されていませんか。 >End Ifからのづれて入力してあるのは意味がありますか ズレは見やすくするためですが、コードは全て必要です。 何かあれば補足してください。

sena33
質問者

お礼

ありがとうございます。が!まだ出来ませ~ん(’~’)。 セルをクリックしても終わらないし、Sheet1コード[Weekbook]のPrivateのところに黄色のラインがはいっていて If MegBoxのMegのところに青いラインがあるのですが    すいません、忙しいのに教えてください。

sena33
質問者

補足

ありがとうです。(^ー^)。 もう一度,確認してみます。入力終了後どうすればいいですか?そのままエクセルを保存でいいですか?

関連するQ&A

  • エクセルマクロのコードを隠す

    とあるExcel2003で開けるxlsファイルを貰いました。 セルに値を入力すると、セルの背景の色が変わります。 そういうマクロを組んでいるんだと思ったのですが、 シートに対して「コードを表示する」で見ても何も書かれていません。 プロジェクト欄にはこのシートと[ThisWorkbook]しかなく、 [ThisWorkbook]にも何も書かれていません。 組んだマクロのコードを何かして隠しているのでしょうか? それともエクセルの設定でそのようなことが可能なのでしょうか。

  • エクセルのマクロについて

    エクセルのマクロ初心者です。 マクロを使用して印刷プレビューが見れるようにしたいです。 vlookup関数を使いsheet1に入力し、sheet2,sheet3,sheet4、sheet5へデータを反映させています。 sheet1に入力画面を作成してあり、セルA2~A13に入力すればsheet2へ、セルA17~A28はsheet3へ、セルF2~F13はsheet4へ、セルF17~F28はsheet5へデータを反映する作りです。 sheet2~sheet5はフォーマットを作成してあり、印刷するとA4で2枚印刷されるようになっています。 入力画面で入力した内容によってはA4用紙1枚ですむこともあります。(A1~M15でA4用紙一枚、A1~M31でA4用紙2枚) 教えて頂きたいことは。 ・入力画面にマクロのボタンを設置し、ボタンをクリックすると印刷プレビューが表示されるようにしたいです。 ・sheet2用、sheet3用、sheet4用、sheet5用、とボタンを設置したい。 ・印刷プレビュー後に、(実際には印刷後)に入力画面を表示したい。 ・印刷プレビューが見たいのはsheet2,sheet3,sheet4,sheet5です。 以上です。 説明が下手ですみません><

  • 【Excel VBA】ThisWorkbook モジュールのマクロ

    Excel2003を使用しています。 39枚のシートから成るBook1のThisWorkbook モジュールに、C列に“○月計”と入力されたら、その行のE列、F列、G列へ数式を入力するコードを書いています。 現在は、それぞれのシート(39枚のシートのうち3枚を除く36枚)のC列最終行から2行下のセルへ“○月計”と手入力していますが、マクロで“○月計”と入力されるようにすれば、ThisWorkbook モジュールに書いているコードも実行されて、数式の入力までマクロで処理できるのかな?と思い、試しに、36枚それぞれシートのC列最終行から2行下のセルへ“○月計”と入力されるようコードを書いてみました。 …が、そうではないのか、それぞれのシートのC列最終行から2行下のセルへ“○月計”と入力されるものの、E列、F列、G列へ数式は入力されません。 せっかくなので、できることなら数式の入力までマクロで処理したいのですが、どのようにしたらThisWorkbook モジュールに書いているコードまで実行されるのでしょうか? よろしくお願いします。

  • エクセルのマクロ実行後にカーソルが見えなくなった

    ThisWorkbook内に以下のコードを記述し、Sheet1に保護をかけています。 Worksheets("Sheet1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True Worksheets("Sheet1").EnableSelection = xlUnlockedCells マクロで、 1.保護しているSheet1をコピーし、シートを新たに作成。 2.そのシートを「Sheet2」にリネーム。 3.Sheet2を保護。 という操作をしています。 Sheet2への保護に使っている記述は上に挙げたコードと同じです。 このマクロを実行すると、 作成したSheet2においてセルに載るカーソル(黒枠)が見えなくなっていまいます。 クリック後にキー入力をすると文字は入るので見えなくなっているだけのようです。 同じ記述で保護しているSheet1は普通にカーソルは見えています。 マクロの「3.Sheet2を保護」をコメントアウトすると、普通にカーソルが見えるようになります。 何故カーソルが見えなくなってしまうのでしょうか。

  • ★「フォルダ内の全エクセルシートを一括処理」★

    ★「フォルダ内の全エクセルシートを一括処理」★ エクセルのマクロのコードを教えていただけますでしょうか。 ★VBAの初心者です★ どなかた詳しい方、下記の内容を実行するためのコードを教えていただけませんでしょうか。 あるフォルダ内に入っている全エクセルシートの「sheet1」セルA1、B1、C1にある値を、デスクトップ上に保存されている別のエクセルシート”X” のF2、G2、H2、にそれぞれ貼り付けたい。 フォルダ内のエクセルシートは複数あるので、エクセルシートXのセルF2、G2、H2の次はF3、G3、H3、F4、G4、H4とそれぞれ1番ず つ下に貼り付けていきたい。 フォルダを検索するところから、全てのコピーが終了するところまで教えていただけると幸いです。 お忙しいところ恐れ入りますが、よろしくお願いいたします。

  • エクセルのマクロ記録について

    エクセル2007でマクロ1の記録を行い「更新」ボタンにマクロ1を設定しています。Sheet1からSheet12迄の入力データを「更新」ボタンクリックで 削除するように記録しています。 Sheet1からSheet12をシート保護した場合マクロ1は実行エラーになり 各シートを保護解除すると正常に実行します。 Sheetがまたがるマクロの記録はシート保護をするとだめなのでしょうか? 各Sheet共入力セル以外をロックしたい為、シート保護をかけようと思います。

  • エクセル 月毎に出席名簿を作成 教えてください。

    エクセル2010を使用。 月毎に出席名簿を作成してます。どうしてもわかりません・・・詳しく教えてください。 サイトを調べていますが、圧倒的にマクロの方が良いらしいです。 マクロは初心者なのでできれば詳しくお願いします。 Sheet1で、その月毎に出席者へ○印を付けます。 Sheet1の名前は、最初から入力済み。 Sheet2では、Sheet1で○印を付けた名前が、IF関数ででるようにしてます。 A1セル =IF(A1>0,入力画面!A1,0)~A5セル =IF(A5>0,入力画面!A5,0)関数を用いてます。      Sheet1 名前 4月・・・ Aさん ○ Bさん ○ Cさん Dさん ○     Eさん Fさん ○ A1セル =IF(A1>0,入力画面!A1,0)~A5セル =IF(A5>0,入力画面!A5,0)関数を用いてます。 今の状況 Sheet2 4月 名前 Aさん Bさん 0 Dさん 0 Fさん        下記のようにしたい Sheet2 4月 名前 Aさん Bさん Dさん Fさん 0 0

  • セル移動マクロについてご教示下さい。

    市町村別の住所録を作成していますが、次のようなマクロが出来れば新たな住所の入力を するのに便利になると、質問させていただきました。 シート1に市町村名を、シート2に市町村毎の住所録を入力しています。 シート1のB列に入力している市町村名をクリックすれば、シート2のC列に入力している 市町村名にセル移動するようなマクロは可能でしょうか。 マクロはコードの張り付け程度しか出来ない超初心者です。 どなたか、よろしくお願いいたします。

  • Excelのスピンボックスについて

    ユーザフォームではなくワークシート上にスピンボックスを配置した場合の話です。 例えばセルB3に入力されている値をスピンボックスを使って、上矢印をクリックすればB3の値が1づつ上がる。逆に下矢印をクリックすればB3の値が1づつ下がる。というようなものにしたいのですが、以下のように値を増やすコードと値を減らすコードを作成しても右クリック->マクロの登録では1つのマクロしか登録できません。 どうすればそれぞれのボタンにマクロを登録することができるのでしょうか。 Dim up As Integer up = Range("F5").Value up = up + 1 Range("F5") = up Dim down As Integer down = Range("F5").Value down = down - 1 Range("F5") = down

  • エクセルのマクロについて教えてください。

    わかりにくい説明になって申し訳ないのですが、1枚のシートにひとつの市の町名を入力しています。 1つのセルに1つの町名を入れていて、ダブルクリックをすると、 別のシートに近隣7都道府県の市町村一覧を用意していて(全現場というシート名にしています) そのシートのE列に入っている町名をソートして表示しています。 シート見出しの上で右クリックし、「コードの表示」画面を出して(VBの画面です) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox (Target) Sheets("全現場").Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:=(Target) End Sub というマクロを書いています。 町名の入ったセルをダブルクリックして町名をメッセージボックスで表示し、OKを選択するとソートするという動きになっています。 この動きには今のところ問題はありません。 ですが、別々の市に同じ町名があり、検索したときに、いろんな市が混じってしまうことがあり困っています。 それぞれの市のシート内には町名のみを入力しており、市の名前はシートの見出しに書いているのみなのですが、 どのようにマクロを書けば、市と町名で検索できるのかわかりません。 それぞれの市のシートのセル(例えばA1など)に新たに市の名前を入力するなどの手を加える事はできます。 エクセル&マクロ超初心者なので、説明が悪くて申し訳ありませんが、お分かりになる方是非教えてください。 宜しくお願いします。

専門家に質問してみよう