• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:値の貼り付けマクロが出来なくなりました。)

マクロで値の貼り付けができなくなった理由は?

このQ&Aのポイント
  • 値の貼り付けマクロが突然動作しなくなりました。昨日までは問題なく使用できていたのに、なぜか今日からうまく動かない状態です。他のマクロやコピーアンドペーストは正常に動作していますが、このマクロだけがうまくいきません。何度か再作成してみましたが、改善されませんでした。セキュリティ設定も下げた状態で試しています。なぜマクロが動作しないのでしょうか?
  • マクロを使って値の貼り付けを行おうとしたところ、なぜかうまくいきません。昨日までは正常に動作していたのに、突然動かなくなりました。他のマクロやコピーアンドペーストは問題なく使えているので、このマクロに何か問題があるのか疑っています。セキュリティ設定は下げた状態で試していますが、改善されません。マクロが動作しない原因は何でしょうか?
  • 値の貼り付けを行うマクロが正常に動作しなくなりました。昨日までは問題なく使用できていたのに、なぜか今日からうまくいきません。他のマクロやコピーアンドペーストは問題なく行えているので、このマクロに何か問題があるのか疑っています。セキュリティ設定は下げた状態で試していますが、改善されません。マクロの動作が停止する原因は何でしょうか?

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

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

#2の回答者です。 >一体全体、何が原因なのでしょうか? >私はVBA自体はこれまでにかなり経験があり、PERSONAL.xls上にも どのぐらいの技術を持っているか分かりませんが、方法としては、ブレイク・ポイントを設けたり、以下のようにしてみたら良いと思います。 Sub tPasteMacro()   If Application.CutCopyMode = False Then    MsgBox "CutCopyModeがTrueになっていません。",48    Exit Sub   End If   If TypeName(Selection) = "Range" Then    Selection.Cells(1).PasteSpecial Paste:=xlPasteValues, _    Operation:=xlNone, _    SkipBlanks:=False, _    Transpose:=False   Else    MsgBox "貼りつけはセルに限ります。"   End If End Sub コピーモードが外れているのでは? これで分かるはずです。うまく行かない理由は、イベントの SelectionChangeやCalculateが走っているようです。 当面、今までの登録しているマクロを、一つずつ、すべて調べなくてはなりません。この種のマクロは、本当は直したほうが良いのですし、直せば、当然、今回のような問題は発生しないのですが、この機に、とりあえず、今回の問題の大元の部分は、クリアしないとコードを直しても、おそらく他の問題に派生します。たぶん、個別のブックに登録してよいものと、そうでないPersonal.xlsに入れるものとが一緒になっているような気がします。

その他の回答 (4)

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

Excel2003まではヘルプメニューからバージョン情報,Excel2007以降ではOfficeボタンからExcelのオプションのアドインの管理の項目,で「使用できないアイテム」を確認し,もしPERSONAL.xlsが捕らわれていたら使用できるようにしてからエクセルを再起動して試してみてください。

YURUE
質問者

お礼

皆さん回答ありがとうございます。 書くのを忘れていましたが、バージョンは2003です。 No1さんへのお礼にも書いていますが、 最初はPERSONAL.xlsにマクロを登録したのですが、その状態ではなぜか Selection.PasteSpecial Paste:=xlPasteValues の記述が動作しないことが分かりました。 そこで個々のブックに登録してみたところ普通に使えることが判明しました。 No.2さんが書かれているコードも個々のブックに登録すれば使用することが出来るのですが PERSONAL.xlsに登録した場合だとPERSONAL.xlsのシート上であっても使うことが出来ません。 また、No.4さんが仰っている「使用できないアイテム」も確認してみましたが、 特に何も登録されていませんでした。 PERSONAL.xlsで、例えば、 Sub Macro2() ActiveCell.FormulaR1C1 = "r" End Sub のような簡単なコードが書いて実行してみましたが、こういうものなら普通に実行出来るようです。 理由は分かりませんが、PERSONAL.xls上では Selection.PasteSpecial Paste:=xlPasteValues のコードだけが無効化されているように思います。 もちろん、マクロを使わずに編集⇒形式を選択して貼り付け は普通に実行出来るため、マクロ側だけの問題のようです。 また、ちなみに私はVBA自体はこれまでにかなり経験があり、PERSONAL.xls上にも 既に他にいくつかプログラムを登録してあります。 しかし、基本的に数値計算にしか使わないので、 今回のようなExcelの動作を記述するのは初めてでした。 一体全体、何が原因なのでしょうか?

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

操作のところで何もしないで、記録を終了し、空のマクロの記録を採る。Ctrl+tが関連付けられた空のマクロである。 その際に、マクロの保存先を「マクロの記録」ダイアロウグで「個人用マクロブック」にする。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2011/1/19 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+t ' End Sub となる。 ーー ここに1行追加して Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2011/1/19 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+t ' 値の貼り付け End Sub とする。 すなわちコード作成済みの、質問のマクロを呼び出す「値の貼り付け」の一行を挟む。 そして「値の貼り付け」のコードを「個人用マクロブック」に入れる。 それには、VBAProjectの「Personal.xls」の標準モジュールModule1に「値の貼り付け」のコードを貼り付ける。 マクロの記録で「個人用マクロブック」を指定したから、VBAProjectで「Personal.xls」が現れると思うからそこの Module1に「値の貼り付け」のコードも入れる。 ーー これで新しい白紙のブックを開いても、既存のブックを開いてでも、値だけをコピーしたいセル範囲をコピーし、何処かのセルを選択して、CTRL+tで値だけ張り付くと思う。 ーー 保存時に個人用マクロブックについて、注意コメントが出るかもしれないが、「はい」ですすむ。 ーー 参考 http://allabout.co.jp/gm/gc/297809/ http://allabout.co.jp/gm/gc/297809/2/ http://kokodane.com/mini_macro4.htm

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

それだけの情報では、はっきりとしたことは言えませんが、もともと、そのお書きになっているマクロは、練習用のものだと思います。リンク先のWebサイトのマクロコードは、記録マクロによるもので、本格的なマクロとは言えません。 #1さんのご指摘のように、個々のブックに貼りつけた可能性があります。 その登録したブックを開かないと動かない可能性が強いです。 他にも、原因はありますが、まだ、マクロの練習中で、そのような問題は発生する可能性は少ないです。 例えば、常時使う場合は、個人用マクロブックの「標準モジュール」に以下のようなものを登録する必要があります。以下は。サンプル・マクロです。最初に、Copy(Ctrl + C)をしないと、貼りつけしないようになっています。Auto_Openは、起動時に設定されるマクロです。 '標準モジュール Sub Auto_Open()  'Shortcut: Ctrl+t  Application.OnKey "^t", "tPasteMacro" End Sub Sub tPasteMacro()   If Application.CutCopyMode = False Then Exit Sub   If TypeName(Selection) = "Range" Then    Selection.Cells(1).PasteSpecial Paste:=xlPasteValues, _    Operation:=xlNone, _    SkipBlanks:=False, _    Transpose:=False   Else    MsgBox "貼りつけはセルに限ります。"   End If End Sub なお、キーの設定を外す場合は、 Application.OnKey "^t" このようにすると外れます。

回答No.1

回答ではありません。m(_ _)m ユーザー設定のコマンドボタンでテキストを表示させると[Alt]+[P]で値の貼り付けができます。 添付図参照 >今日やってみるとなぜかうまくいきません。 うまくいかないとは、 ・エラーが出る ・何も起こらない。 ・意図する結果にならない ・その他 また、そのマクロは、どこに保存したのでしょうか? (たぶん、「個人用マクロ ブック」だったら良さそうなんだけど) 実行方法もいくつかありますが、どのようにして実行したのでしょうか? 具体的にお願いします。

YURUE
質問者

お礼

ありがとうございます。 何も起こらない。 が返答です。 保存した場所はPERSONAL.XLSのマクロブックです。 これは、「個人用マクロ ブック」と同じことですよね? PERSONAL.XLSではなく、現在開いているファイルのマクロブックに保存すると なぜかうまく実行できます。 PERSONAL.XLSのマクロを動作させるためにはどこかの設定を変える必要があるということなのでしょうか?

関連するQ&A