• ベストアンサー

2つのマクロを挿入すると動作せず

現在、C10に値が入力されるとG4に発行日が表示される 下記のマクロを入力しています。 1 発行日の日付 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If End Sub この上のマクロのみは上手く作動しています。 ファイル名を自動で保存するために下記のマクロをしたいので追加しました。 2 ファイル名の自動保存   Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub 3  上記の1+2で下記の如くし、いろいろトライをしていますが 上手くゆきません。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If End Sub ブック内は次のようなファイルです。 Sheet1(納品請求書1)~Sheet3(納品請求書3) Sheet4(月請求書) Sheet5(顧客登録) Sheet6(設定) Sheet7(領収書) Sheet8(file)  ここのA1に保存したいファイル名を入れています。 上手く表示されません。 困っています。 ここでご教授いただきたいのは 2のみのマクロだと問題なく「ファイル名とシート名」が自動的に表示され保存ができます。 私のやり方に何か問題があると思います。 上記の1(発行日の日付け)+2(ファイル名の自動保存)したときにはうまくいかず何かいい方法がないでしょうか。 お知恵をお貸し下さい。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.10

n-junです。 #4の補足にある、 >2は新たにエクセルを起ち上げシート1 A1 (仮にABCを)に値を入れるとすぐに シート名がSheet1名とファイル名がABC になり変わります。 >1と2にするとなりません。 と言う事から、今いじっているブックではなく他の原因なのかな?って感じがします。 ただその原因を突き詰める方法はわかりません。 私はOS:Win Excel:2002で元々の質問で提示されているコードでも 問題なく動いている感じです。 ⇒それが質問者さんの希望とあうのかどうかはわかりませんが、セルに入力した データを基にシート名変更とファイル保存は出来てます。

dorasuke
質問者

お礼

自分で何とか試行錯誤の上、解決策を見いだしました。 スマートでない方法かも知りませんがご報告します。 従来のブック内容が、 Sheet1(納品請求書1)~Sheet3(納品請求書3) Sheet4(月請求書) Sheet5(顧客登録) Sheet6(設定) Sheet7(領収書) Sheet8(file)※ここのA1に「付けたいファイル名」をまとめました。 で自動保存のマクロを挿入したSheet9、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub を追加してそのA1にSheet8のA1の値をコピーしてSheet9のA1に値のみを貼り付けしたら解決しました。 大変忙しいところをご迷惑を掛けながらご協力をいただいたことに心から感謝します。 本当に有難うございました。 今後ともよろしくご指導重ねて宜しく御願いします。

dorasuke
質問者

補足

おっしゃるように元々作成しているブックに新たに自動保存するシートを追加するとだめです。 ここで言う追加部分を先にして元々のファイルを追加してゆくと1回だけはA1 (仮にABCを)に値を入れるとすぐに シート名がSheet1名とファイル名がABC になり変わります。 2回目からは何の反応もなくだめです。 このブックは元本として残し使います。 テストはコピーを作成しています。 言葉としての説明は難しいですね。 本当にご協力いただき有難うございます。 いつ保存したいのですか? 提示したコードだとセルの値を変えるたびに保存する事になりますが、 そうではなく最終的に保存する時にと言う事ですか? Sheet1(納品請求書)からは注文の数だけSheet(納品請求書)数は増えますが保存はSheet1の納品請求書に必要な事項を入力したときにブックとして「名前を付けて保存」します。 これはブックで色んなシートがふくまれています。 1つの会社で毎月このブックを作成しています。 因みに OSはXP エクセル2003です

その他の回答 (9)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.9

#6 の回答者です。 >最初にSheet1で保存のマクロを作成してその後に納品 請求書等を作成すればいいみたいです。 さっぱり分からなくなりました。 「最初にSheet1で保存のマクロを作成」 私は、ActiveSheet と Sheet8 と区別を書いているはずです。こちらの書いたものはどうなってしまったのでしょう。こちらがダメだったので、他人に頼るということなのでしょうか。何がどうなったのか、私には分かりません。 #1のn-jun様のご質問は、まだ生きています。 >・この様にしたいけど、実際はこの様になってしまう。 >・この様なはずではないが、こうなってしまう。 >・シートが複数あって、1と2が同じシートイベントで良いのか、違うのか。 >等具体的にされた方がいいかもですよ。 今になって条件が変わるということですと、もともと、マクロ全体の設計にも疑問を感じるところにきて、書き直させられるのは、もうできません。 >ただし上にも書かせていただきましたが1回のみが良くて複数回がだめです。 こちらの条件にあっているなら、ダメだということはありえません。ただし、ある程度のマクロ経験者は、そのようなコードは、作らないと思います。 最初から、どこのシートのどこのセル何を書いて、そのブックを保存したいとか、「マクロ作成依頼」ならともかく、今だ、どこのシートのイベントでさえ、こちらは分かりませんから、その上で、「ダメだった」と繰り返されても、こちらでは意味が分かりません。どうやら、#5で書いたデバッグの方法は試されていないようです。 おそらく、こちらが書いたものを書き直しているのか、それとも、セルやシートの位置関係を自分なりの解釈で、そのまま使っているのか、それとも、シート名とオブジェクト名の意味を理解していないままに使っているのか、いずれかだと思います。 発想だけでここに質問されたものだと思います。もう少し、前提となる条件をきちんとまとめたほうがよろしいのではありませんか。これ以上は、このままでは無理だと思ったほうがよいと思います。少なくとも、今回の初心者用のマクロとは言えない上に、無理がありますから、ご自身でなんとかしようと思わず、ゲタを預けて、きちんとした要件を書いて「マクロ作成依頼」に切り替えたほうが良いように思います。

dorasuke
質問者

お礼

自分で何とか試行錯誤の上、解決策を見いだしました。 スマートでない方法かも知りませんがご報告します。 従来のブック内容が、 Sheet1(納品請求書1)~Sheet3(納品請求書3) Sheet4(月請求書) Sheet5(顧客登録) Sheet6(設定) Sheet7(領収書) Sheet8(file)※ここのA1に「付けたいファイル名」をまとめました。 で自動保存のマクロを挿入したSheet9、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub を追加してそのA1にSheet8のA1の値をコピーしてSheet9のA1に値のみを貼り付けしたら解決しました。 大変忙しいところをご迷惑を掛けながらご協力をいただいたことに心から感謝します。 本当に有難うございました。 今後ともよろしくご指導重ねて宜しく御願いします。

dorasuke
質問者

補足

最初のブックの構成は次のようにしていました。 Sheet1(納品請求書1)~Sheet3(納品請求書3) Sheet4(月請求書) Sheet5(顧客登録) Sheet6(設定) Sheet7(領収書) この時に入れていたマクロはC10に件名を入力すると発行年月日が表示されるものです。 ここまでは順調に作動していました。 その上にできるだけ省力化したくファイル名が自動的に入力されるマクロを見つけたのでそれを新たなシーに追加しました。 それが下記です。                         Sheet8(file)  この追加したマクロのみは反映されず上手く作動せず皆様方にご指導を求めています。 ご多分に漏れずあなたのアドバイスや他の人のアドバイスを受けながら試しています。 いずれも何の変化もなく作動しません。 だからどういう結果になったかという報告ができないでいます。 知識不足いや未熟な小生なりにいろいろとトライして判明したのが1つあります。 上記の作成方法を逆にしてみたら一度だけですがファイル名が  ファイル(F) 名前を付けて保存 ファイル名(N)  に上記のFileのA1に入力された値が適用されました。 但し2回目の保存には適用はだめでした。  ここのところをどういうマクロにすればいいかが今のアドバイスが  いただきたいところです。  ご迷惑を掛けていることに誠に申し訳なく思っています。  これ以上ご回答をいただくのが困難であればあきらめます。

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

1つのシートChangeイベント・プロシが2つあるのはおかしい。 やれるなら Private Sub Changeイベント IF A条件の場合(IF文 EndIF)  日付設定のコード End If ’ーーー IF B条件の場合(If文 EndIF)  ファイル保存のコード End If End Sub としてAの場合とBの場合が共通条件がなければ、上記のように、一旦同じ1つのChangeプロシで受けて、処理を条件を判別して分ける方法で、コードをかけると思う。 しかし、ファイル保存をChangeイベントと関連づけるような 実際の場合はありえないのでは。一度条件などを文章で表現してよく考えてご覧。

dorasuke
質問者

お礼

自分で何とか試行錯誤の上、解決策を見いだしました。 スマートでない方法かも知りませんがご報告します。 従来のブック内容が、 Sheet1(納品請求書1)~Sheet3(納品請求書3) Sheet4(月請求書) Sheet5(顧客登録) Sheet6(設定) Sheet7(領収書) Sheet8(file)※ここのA1に「付けたいファイル名」をまとめました。 で自動保存のマクロを挿入したSheet9、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub を追加してそのA1にSheet8のA1の値をコピーしてSheet9のA1に値のみを貼り付けしたら解決しました。 大変忙しいところをご迷惑を掛けながらご協力をいただいたことに心から感謝します。 本当に有難うございました。 今後ともよろしくご指導重ねて宜しく御願いします。

dorasuke
質問者

補足

いつも御世話になり感謝しています。 難しいことが分からない小生をいつも暖かくご指導有難うございます。 折角ご指導いただいていますが私にはレベルが高すぎて消化不良です。 本当に済みません。 もっともっと努力するように頑張りますので今後ともよろしく御願いします。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.7

n-junです。 >>#3 JUNさんえ(ごめんなさい。 ここで失礼とは思いますがお借りします)。 >>いつ保存したいのですか? >>提示したコードだとセルの値を変えるたびに保存する事になりますが、 >>そうではなく最終的に保存する時にと言う事ですか? >「提示したコードだとセルの値を変えるたびに保存する事になります」 >に変更させてください。 >最初にSheet1で保存のマクロを作成してその後に納品 請求書等を作成すればいいみたいです。 >ただし上にも書かせていただきましたが1回のみが良くて複数回がだめです。 ・Sheet1(納品請求書1)~Sheet3(納品請求書3) ・Sheet4(月請求書) ・Sheet5(顧客登録) ・Sheet6(設定) ・Sheet7(領収書) ・Sheet8(file) これらのシートのうち、 ”どのシートのセルを変更するたびに、どのシート名を変更し且つ保存作業を行ないたいのか?” と言うが不明です。 ようはセル値でそのシート名を、ころころ変える必要な項目が検討つかない。 考えられるのが”納品請求書”と言うシートが1つあり、そのシートのA1に 「納品請求書1」と入れたら”納品請求書1”と言うシートが、 「納品請求書2」と入れたら”納品請求書2”と言うシートが、 作成されそれぞれのシート名を変更する。 と言うような1つのシートイベントではなく、複数にまたがるイベントが必要なのでは? と感じましたけど、違っていたらごめんなさい。

dorasuke
質問者

補足

最初のブックの構成は次のようにしていました。 Sheet1(納品請求書1)~Sheet3(納品請求書3) Sheet4(月請求書) Sheet5(顧客登録) Sheet6(設定) Sheet7(領収書) この時に入れていたマクロはC10に件名を入力すると発行年月日が表示されるものです。 ここまでは順調に作動していました。 その上にできるだけ省力化したくファイル名が自動的に入力されるマクロを見つけたのでそれを新たなシーに追加しました。 それが下記です。                         Sheet8(file)  この追加したマクロのみは反映されず上手く作動せず皆様方にご指導を求めています。 ご多分に漏れずあなたのアドバイスや他の人のアドバイスを受けながら試しています。 いずれも何の変化もなく作動しません。 だからどういう結果になったかという報告ができないでいます。 知識不足いや未熟な小生なりにいろいろとトライして判明したのが1つあります。 上記の作成方法を逆にしてみたら一度だけですがファイル名が  ファイル(F) 名前を付けて保存 ファイル名(N)  に上記のFileのA1に入力された値が適用されました。 但し2回目の保存には適用はだめでした。  ここのところをどういうマクロにすればいいかが今のアドバイスが  いただきたいところです。  私なりには今一歩の所にきているような気がしますが。  ご迷惑を掛けていることに誠に申し訳なく思っています。  これ以上ご回答をいただくのが困難であればあきらめます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんばんは。 >Sheet名が 「File」 で指定してマクロを作動させたらいけないでしょうか。 >もしいいのならどういうマクロにすればいいですか。 そうするには、その前の前提があります。 Private Sub Worksheet_Change(ByVal Target As Range) まず、このマクロは、どこにあるかによって違います。 たぶん、Sheet8 にあるのだとすれば、ActiveSheet でよいのですが、 そうでないのかもしれません。そうでないことを前提として書きます。 これは、プロジェクトウィンドウを確認して書いたものだと思います。 Sheet6(設定) Sheet7(領収書) Sheet8(file) ←この名前が常に変わるという意味だと思います。 "file" という名称は使えませんから、  Sheet8.Name = Target.Name とします。 ただし、間違えないでほしいのは、Sheet8 というのは、Sheets("file")というようなものではないということです。Sheet6, Sheet7, Sheet8 というのは、オブジェクト名といって、特別に指定しない限りは、この部分は変わりません。

dorasuke
質問者

補足

この場お借りして皆さんに御願い。 #3 JUNさんえ(ごめんなさい。 ここで失礼とは思いますがお借りします)。 いつ保存したいのですか? 提示したコードだとセルの値を変えるたびに保存する事になりますが、 そうではなく最終的に保存する時にと言う事ですか? 「提示したコードだとセルの値を変えるたびに保存する事になります」 に変更させてください。 最初にSheet1で保存のマクロを作成してその後に納品 請求書等を作成すればいいみたいです。 ただし上にも書かせていただきましたが1回のみが良くて複数回がだめです。 ご面倒を承知でご協力していただけないでしょうか。 何卒宜しく御願いします。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 #1さんの三点のご質問は、要点をついているようです。 ブックの保存のマクロは、Worksheet_Change イベントには、ちょっと厳しいです。コマンドボタン程度にしたほうが確実です。また、日付を入れるだけのイベントは、ひとつだけなら、Workbook_Openイベントぐらいで十分のような気がします。 それと、#2のお礼の中の、 >取りあえず Private Sub ~ >をエディターにいれました。 >上手くゆきません。 よほど自分のマクロのスキルに自信があるならともかく、#2さんのコードをそのまま全部入れ替えるべきだと思います。挿入のようなことをしたら、エラーを出す部分で読み落としてしまいます。自分のコードを消したくないのなら、コメントブロック(')を、デバッグツールバーのコマンドボタンか、デバッグでつけてください。また、コードが通らない場合、ステップモードや、ブレイクポイントを置いて、途中で流れを調べて、エラーの発生ポイントを煮詰めてください。VBAの質問では、 「上手く行きません」だけというのは、良い回答ではありません。 元のコードには、単純なミスがあるようですが、質問する場合は、どこが上手く行かないか、エラーメッセージなどが出ていたら、それを出してください。変数や戻り値を調べる場合は、MsgBox でも良いと思います。 今回は、私もコードを書いてみましたが、実は、あまり自信がありません。もう少しレベルの高い問題で、二つの内容があまりにもかけ離れているので、上手くいくかどうかは、なんともいえません。別々では可能なことが、一緒にすると解決しないこともあります。 それに、ブック名が変わってしまいます。 違うセルに書き入れる場合は、イベントの発生を防ぐために、以下を入れますが、  Application.EnableEvents = False 今回は、なんとなく、これを最初の行に持ってこないほうが良いような気がします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myPath As String If Target.Value = "" Then Exit Sub   If Target.Address = "$A$1" Then     ActiveSheet.Name = Target.Value     myPath = ThisWorkbook.Path & "\"     ThisWorkbook.SaveAs myPath & Target.Value   ElseIf Target.Address = "$C$10" Then     Application.EnableEvents = False     Range("E4").Value = Date     Application.EnableEvents = True   End If End Sub

dorasuke
質問者

補足

1つ質問させてくだい。 ActiveSheet.Name = Target.Value でSheet名が 「File」 で指定してマクロを作動させたらいけないでしょうか。 もしいいのならどういうマクロにすればいいですか。 ご指導下さい。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

#3です。 例えば閉じる時に実行するとしたら。 Workbook_BeforeClose プロシージャを使用する http://support.microsoft.com/kb/213639/ja などが参考になるかもです。 あくまでイベントの発生の参考です。 ボタンを押したらとか、他のイベントの場合は違いますので。

dorasuke
質問者

補足

質問の番号   作動する 作動しない No 1のみ(発行日の日付) ○     No 2のみ(ファイル名の自動保存)        ○ No 1+2(発行日の日付+ファイル名の自動保存)1は○  2はX 2は新たにエクセルを起ち上げシート1 A1 (仮にABCを)に値を入れるとすぐに シート名がSheet1名とファイル名がABC になり変わります。 1と2にするとなりません。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#1です。 >保存するときに ファイル/名前を付けて保存(F)/ファイル名(N) (にA1の値が表示)/保存ボタン クリック >で保存ができるように。 と >Private Sub Worksheet_Change(ByVal Target As Range) ってかみ合ってないような感じですけど。 いつ保存したいのですか? 提示したコードだとセルの値を変えるたびに保存する事になりますが、 そうではなく最終的に保存する時にと言う事ですか?

dorasuke
質問者

補足

保存は一回だけです。 おっしゃる最終的です。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

どういう結果が得たいのか、イマイチ理解できません。 どうされたいのですか? 取りあえず Private Sub Worksheet_Change(ByVal Target As Range)   'If Target.Row = 1 And Target.Column = 1 Then   If Target.Address = "$A$1" Then     Range("E4").Value = Date     ActiveSheet.Name = Target.Value     ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value   End If   If Target.Address = "$C$10" Then     'Target.Offset(-6, 2).Value = Date     Range("E4").Value = Date   End If End Sub

dorasuke
質問者

お礼

自分で何とか試行錯誤の上、解決策を見いだしました。 スマートでない方法かも知りませんがご報告します。 従来のブック内容が、 Sheet1(納品請求書1)~Sheet3(納品請求書3) Sheet4(月請求書) Sheet5(顧客登録) Sheet6(設定) Sheet7(領収書) Sheet8(file)※ここのA1に「付けたいファイル名」をまとめました。 で自動保存のマクロを挿入したSheet9、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub を追加してそのA1にSheet8のA1の値をコピーしてSheet9のA1に値のみを貼り付けしたら解決しました。 大変忙しいところをご迷惑を掛けながらご協力をいただいたことに心から感謝します。 本当に有難うございました。 今後ともよろしくご指導重ねて宜しく御願いします。

dorasuke
質問者

補足

取りあえず Private Sub Worksheet_Change(ByVal Target As Range)   'If Target.Row = 1 And Target.Column = 1 Then   If Target.Address = "$A$1" Then     Range("E4").Value = Date     ActiveSheet.Name = Target.Value をエディターにいれました。 上手くゆきません。 私は Sheet8(file) を新たにシートを追加してA1にファイル名したいものを表示させて見たのですが。 Sheet1(納品請求書1)~Sheet3(納品請求書3) Sheet4(月請求書) Sheet5(顧客登録) Sheet6(設定) Sheet7(領収書) Sheet8(file) の何処にマクロを挿入するのかがあるのですか。 私はSheet8(file)に下のですがここの場所がいけないのでしょうか。 よく分かりませんがマクロの中でシート名を指定しなければなりませんか。 恐れ入りますが知識不足の小生をご指導宜しく御願いします。 ご質問に答えていますか。 ごめんなさい。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

うまくいかないとはどういう事なのでしょう? ・この様にしたいけど、実際はこの様になってしまう。 ・この様なはずではないが、こうなってしまう。 ・シートが複数あって、1と2が同じシートイベントで良いのか、違うのか。 等具体的にされた方がいいかもですよ。

dorasuke
質問者

補足

3  上記の1+2で下記の如くし、いろいろトライをしていますが 上手くゆきません。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If End Sub でマクロを追加して A1の値をそのまま ファイル名 として保存をしたいのです。 保存するときに ファイル/名前を付けて保存(F)/ファイル名(N) (にA1の値が表示)/保存ボタン クリック で保存ができるように。

関連するQ&A

  • セルの値をファイル名にするには

    現在下記のマクロを入力しています。 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If End Sub この時 ファイル名を SHEET1のA1 セルの値を利用してファイル名にするために下記の内容を入れてブックを保存したいと考えています。 上記のマクロが入っていないときは上手く行くのですが下記を追加するにはどうすればいいかご指導いただけませんでしょうか。 宜しく御願いします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub

  • シート及びファイル名の付け方

    Windows XP EXCELL2003です。 いつもお世話になります。 すでに下記でご指導いただきました。 http://oshiete1.goo.ne.jp/qa5331087.html ご教授を仰ぎたいのは  マクロを実行 した時この場合は アクティブなシートに名前がつきますが これをアクティブなシートに関係なく、シート「FUKU」に名前が付くようにしたい野ですがご教授いただけないでしょうか。 マクロは下記のように入っています。 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub よろしく御願いします。

  • エクセルでマクロを使って新規シートを作成する方法を教えてください!(条件あります)

    初めて質問するのですが、エクセルで原紙シートのマクロまで全てをコピーして新規のシートを作成させるにはどうしたらいいですか? 新規のシートの特定のセルに入力した時に新規シートが作成されるようにできますか? 原紙は Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Address = "$A$1" Then ActiveSheet.Name = Target.Value End If End Sub のマクロが現在できあがってます。これを残しつつできますか?よろしくお願いします!

  • Excelでシート名と最終更新日を自動表示したい

    Excelを使って (1)セルA1に入れた名目をシート名にし (2)セルH1には、最終更新日を自動で入れたいです。 調べた結果、 シート名を右クリックして「コードの表示」から (1)は Private Sub Worksheet_Change(ByVal Target As Range) Sheets(1).Name = Range("B1") End Sub を入れてうまくいきましたが、 (2)は Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  If ThisWorkbook.Saved = False Then   Worksheets("Sheet1").Range("H1").Value = Date  End If End Sub を入れてみましたが(←調べましたもの) うまくいきませんでした。 単純に、 Private Sub Worksheet_Change(ByVal Target As Range) Sheets(1).Name = Range("B1") End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  If ThisWorkbook.Saved = False Then   Worksheets("Sheet1").Range("H1").Value = Date  End If End Sub とつなげて入れるのではだめなんでしょうか? それとも、(2)の何かが間違っていますか? ご教授願います。

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

    いつもお世話になります。 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 宜しくお願いいします。

  • エクセル マクロ 初心者です

    エクセルマクロ初心者です。 以下の2つの Private Sub Worksheet_Change(ByVal Target As Range)を1つのシートで実行させたいのですが、 当方、初心者なので組み合わせ方が分かりません。 よろしくお願いします。 ===No1=== Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target = StrConv(Target, vbUpperCase) Application.EnableEvents = True End Sub ===No2=== Private Sub Worksheet_Change(ByVal Target As Range) Dim Ans As Integer If Target.Count = 1 Then Ans = MsgBox("コピーは禁止!!", vbCritical) MsgBox "データを消去します。" With Application .EnableEvents = False .Undo .EnableEvents = True End With End If If Target.Count = 1 Then Exit Sub Else MsgBox “複数セルのコピー禁止!" With Application .EnableEvents = False .Undo .EnableEvents = True End With End If End Sub ------------ 上記の2つを1つのシートで動作させたいのですが、うまくいきません。 単体では、動作します。

  • エクセルのマクロ

    セルの値が変わったら動くマクロですが、2つ書くとエラーが出ます。 どのように直したらいいでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address If Intersect(Target, Range("EK22")) Is Nothing Then Exit Sub Else Range("EK24:EM28").Select Selection.ClearContents End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("EK24")) Is Nothing Then Exit Sub Else Range("EK27:EM28").Select Selection.ClearContents End If End Sub

  • EXCELマクロでのシート間のデータ同期方法

    質問させていただきます。 EXCELにて、"シート1"のA1~C3と"シート2"のD4~F6を 同期化したく考えております。 ・いわゆる一方のシートが「読み取り専用」になってしまうリンク貼り付けではなく、シート1、シート2相互が書き換え可能の同期化です。 ・A1とD4、B3とE6、のように互いに照合箇所のセル同士を同期反映させたいと考えております。 なお、他の質問を参照したところ、 シート1のA1とシート2のD4の単一セルを同期かする方法は確認できました。(以下参照) ***************************************************************** シート1のコードは Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Worksheets("シート2").Range("D4") = Target End If End Sub シート2のコードは Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$4" Then Worksheets("シート1").Range("A1") = Target End If End Sub *************************************************************** これを参考にVBAの シート1のコードエディターに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" Then Worksheets("シート2").Range("D5") = Target End If End Sub シート2のコードエディターに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$5" Then Worksheets("シート2").Range("A2") = Target End If End Sub というように追記していったのですが、エラーとなってしまいます。 お詳しい方がおられましたらお願いいたします。

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

    こんにちは。マクロ初心者です。 エクセル(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列セルに、コピー&ペーストで複数セルを貼り付けた場合、 「○○会社」があっても、マクロが効いてきません。 複数セルの貼り付けにも対応させるには、 どのようにすればよろしいでしょうか? 基本的なところが理解できていないのだと自覚しておりますが、 どうかご教授願います。 長々とわかりづらい文章ですみません。よろしくお願いします。

  • ファイル名を半自動から自動化に

    いつも御世話になります。 現在は下記のようにしてファイル名を半自動で保存しています。 ご指導をいただきたいのは可能ならばもう一歩進めて完全に自動化できないかを仰ぎたく考えています。 全然無知な私が考えるに、マクロを何らかに変えれば可能性があるような気がするのですが如何でしょうか。 もしなんらかの方法で可能ならばご教授いただければ幸です。 現在の半自動とは  A4 にある値を  コピー 編集 形式を選択して貼り付け 値 A1(FUのところに)に貼り付けるとそのままファイル名てとして保存されます。 当然「シートFU」にも名前がつきます。 シート「FU」には次のように マクロ Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub 数式 A4 = A5 & " " & B5 A5 =IF(A7="","",TEXT(A8,"mm")&A7) A7 =納請書1!A2 A8 =納請書1!G4 B5 =納請書1!B6

専門家に質問してみよう