Excelを使用していてよく分からない現象に遭遇しました。
原因をご存じの方がいらっしゃいましたら教えてください。
とりあえず業務上での問題は、後述の「確認した内容2-3」で解決しましたので
興味からの質問となります。
また異なるバージョンのExcelでも同様かも知りたいです。
環境
Windows7(32bit) 月例のセキュリティパッチ適用済
Office2010のExcel
現象(再現率100%)
ブック間でセルの値のコピー後、ペーストができない
(セルを右クリックメニューで貼り付けのオプションがグレーになっている)
再現手順
1. a.xlsxおよびb.xlsmを新規作成
2. a.xlsxのSheet1上のA1:A10に適当な数値を入れ保存終了
3. b.xlsmのThisWorkBookモジュールに以下のマクロを記述し保存終了
-----
Private Sub Workbook_Activate()
With Worksheets("Sheet1")
.Activate
.Range("A1:A10").ClearContents
End With
End Sub
-----
4. a.xlsxおよびb.xlsmを開きウィンドウの整列で並べる
・両ブックともSheet1が選択されている)
5. a.xlsxのSheet1のA1:A10をコピーし、b.xlsmの同位置にペーストができない
・セルを右クリックメニューで貼り付けのオプションがグレーになっている
・マクロによるセルの値クリアは行われている
確認した内容
1. コピー後、a.xlsxを閉じると、b.xlsmへ貼り付けはできる
2-1. b.xlsmのマクロを削除した場合はペーストできる
2-2. 同マクロの .Range("A1:A10").ClearContents 行を削除した場合はペーストできる
2-3. 同行を .Range("A1:A10").Value = "" に変更した場合はペーストできる
Workbook_Activateイベントの処理中にRange.ClearContentsが存在するとNGの様です。
No.3ベストアンサー
- 回答日時:
こんにちは。
回答の趣旨が間違っていましたら、スルーしてください。
◎ブック間でセルの値のコピー後、ペーストができない
かなり前から、この件は気づいていました。バージョンは2007から上は、ずっと変わらないと思います。Copyモード(点線で囲まれている状態)が消えてしまう原因は、ご質問上で掲げている内容だと思いますが、これは、別のシート(b.xlsmのSheet2)でも同様に起こります。
対処法としては、
クイックアクセスツールバーに、「デザインモード」のアイコンで、これをクリツクして、「デザインモード」にするというのは、マクロ自体を加工しないでできる方法です。
しかし、これは、B.xlsm ブック上でないと、デザインモードがオフになりません。
あまり良いアイデアではありませんよね。
ただ、クリップボードのペインを表示してみると、クリップボードにはコピーしたデータが残っていますから、これを再利用すればよいのですが、今の所、マクロからでは操作は分かりません。
クリツプボードオブジェクトを使う方法もありますが、これは多少の制限があります。フォーマットなどはコピー&ペーストされません。
今回試したコードです。(下記参照)
私自身の場合、もうずいぶん前にあきらめてしまいましたが、今回は、複雑でないなら、まあまあだとは思いますが……。
下記のコードは、クリップボードオブジェクトは、共有すればよいのかもしれませんが、今の段階では別々にしました。
'//ThisWorkbook モジュール
Dim cbDat As Variant
Const CLSID As String = "1C3B4210-F441-11CE-B9EA-00AA006B1A69"
Private Sub Workbook_Activate()
Dim rng As Range
Dim CBf, CB
Application.EnableEvents = False
CBf = Application.ClipboardFormats
If CBf(1) = False And Application.CutCopyMode = xlCopy Then
Set CB = CreateObject("new:" & CLSID)
CB.GetFromClipboard
cbDat = CB.GetText
End If
With Worksheets("Sheet1")
.Activate
.Range("A1:A10").ClearContents
End With
'-------------
If CBf(1) = False Then
Application.OnKey "^v", "ThisWorkbook.keyPaste" 'ショートカットを設定
Set CB = Nothing
End If
Application.EnableEvents = True
End Sub
Sub keyPaste() 'マクロによる貼付けとショートカット解除
Dim CB As Object
If IsEmpty(cbDat) = False Then
Set CB = CreateObject("new:" & CLSID)
CB.SetText cbDat
CB.PutInClipboard
ActiveSheet.Paste
End If
Application.OnKey "^v"
Set CB = Nothing
End Sub
趣旨に沿ったご回答をいただきまして、ありがとうございました。
2007以降で発生とのこと、補足でも書きましたが自宅の2016でも同じでした。
つまりExcelのバグということなのかな?
「デザインモード」にする方法、2016の環境でも使用できました、来週2010の環境でも試してみます。
ただ仰るとおり解決方法をしては現実的ではありませんね。
ご提示いただいたコードも2016の環境で動作しました。
あまり目にすることの無い知識をご提示いただき、いつも勉強させていただいています。
今後ともよろしくお願いいたしますね。
No.2
- 回答日時:
貼り付け時に、形式を選択して、テキストを指定してください。
計算式が入っていると、そのまま貼り付けでは、計算式がコピーされます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
エクセルの2ページ目の作り方
-
可視セル設定をデフォルトにしたい
-
エクセルで勝手に「折り返して...
-
フォームのテキストボックスの...
-
エクセルで、選択範囲の数値全...
-
「選択範囲を解除してアクティ...
-
Excelでコピーした行の挿入を繰...
-
エクセルで値だけコピーして背...
-
Excelのコピー・切り取り機能が...
-
EXCELで「行と列を入れ替える」...
-
エクセルのコピペでクリップボ...
-
エクセル 別シートへのコピー...
-
EXCELのオートフィルの設定を変...
-
Excelの日付をコピーし、貼り付...
-
EXCEL数値が存在する列の項目名...
-
エクセルオートフィルで書式を...
-
【Excel】【VBA】空白のセルに...
-
VBAでセルがコピーされているか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルの2ページ目の作り方
-
エクセルのアポストロフィを一...
-
Excel 行の連続データを列に参...
-
エクセルで勝手に「折り返して...
-
Excelでコピーした行の挿入を繰...
-
EXCELのオートフィルの設定を変...
-
EXCELシートをPowerPointにきれ...
-
エクセルで、選択範囲の数値全...
-
Excel)軽いデーターのはずなの...
-
メールソフト「サンダーバード...
-
エクセルでの行数・列数を指定...
-
「選択範囲を解除してアクティ...
-
Excelに、ダブルクォーテーショ...
-
エクセル 別シートへのコピー...
-
エクセルオートフィルで書式を...
-
エクセルで値だけコピーして背...
-
EXELで複数のとびとびのセルを...
-
Excelで、横並べのデータを縦並...
-
エクセル・数値が変化したらカ...
おすすめ情報
自宅のWin10(64bit)/Excel2016でも同様でした。
ただし、「確認した内容1」ではテキスト値のみ張り付け可能でセルそのもの、式の貼り付けなどはメニューの選択肢として登場しませんでした。