[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『リンク貼り付けができなくなりました』(ヨッシー)
出席簿と連絡票の「出欠の記録」をリンクして貼りつくように以下のマクロを教えてもらいました。新しい出席簿を作ったので、まず連絡票のブック内の「出席簿」シートにリンクして貼りつけました。リンクするのは確認済みです。ただ、以下のマクロを実行すると、止まってしまい、デバックすると
「 ActiveSheet.Paste Link:=True」のところにマーカーが引かれます。何か問題があるのでしょうか。
Option Explicit
Sub リンク貼り付けマクロ(コピーセル As Range, 貼り付けセル As Range)
コピーセル.Worksheet.Select コピーセル.Select Selection.Copy 貼り付けセル.Worksheet.Select 貼り付けセル.Select ActiveSheet.Paste Link:=True
End Sub Sub test9() Dim データWS As Worksheet Dim 氏名WS As Worksheet Dim 書式WS As Worksheet Dim m As Long, n As Long, i As Long, j As Long Dim 貼付開始行 As Long
Set データWS = Worksheets("出席簿") Set 書式WS = Worksheets("書式")
貼付開始行 = 書式WS.Cells.Find(What:="出欠の記録").Row + 4
Application.ScreenUpdating = False
For m = 4 To データWS.Cells(Rows.Count, 2).End(xlUp).Row
Set 氏名WS = Worksheets(データWS.Cells(m, 2).Value) n = 3
For i = 貼付開始行 To 貼付開始行 + 4 Step 2
For j = 9 To 39 Step 6 Call リンク貼り付けマクロ(データWS.Cells(m, n), 氏名WS.Cells(i, j)) n = n + 1 Next Next Next
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows8 >
回答ではありません。
元トピを
[[20161230111936]] 『リンクして貼り付けられるようにしたい』(ヨッシー)
このようにリンクしておくほうが回答者にとってはわかりやすいです。
ところでエラーになった時に出ていたエラー番号とエラーメッセージの内容はどんなものでしたか?
(β) 2017/03/30(木) 09:04
前トピには参加していなかったので、コードを読んでシートを想像で作り上げて、このまま実行しましたが 結果が正しいかどうかは別にして、問題なく各氏名シートにリンク貼り付けができています。 (XL2016は持っていないので xl2013 での検証ですが)
メッセージがシート保護に関するものなら・・とちょっと期待(??)したんですが、そうじゃないんですね。
『データを貼り付けできません』を、そのまま検索語にしてネット検索しますといろいろでてきます。 中には、この学校内の過去トピもでてきますね。
それらの中に、あてはまるものがないか探してみられてはいかがでしょう。
( β) 2017/03/30(木) 10:19
これはリンク貼り付けを実行している部分です。
リンク貼り付けができているセルはありますか。
それとも、ひとつもリンク貼り付けできていない
つまり、最初の生徒の最初のデータでエラーとなるのでしょうか。
(マナ) 2017/03/30(木) 23:19
Sub リンク貼り付けマクロ(コピーセル As Range, 貼り付けセル As Range)
コピーセル.Worksheet.Select コピーセル.Select Selection.Copy 貼り付けセル.Worksheet.Select 貼り付けセル.Select DoEvents ActiveSheet.Paste Link:=True
End Sub
(名無し) 2017/03/31(金) 15:58
>>Call リンク貼り付けマクロ(データWS.Cells(m, n), 氏名WS.Cells(i, j))
のところを
Worksheets("書式").Cells(i, j) = "=" & Worksheets("出席簿").Name & "!" & Cells(m, n).Address
に変えるとかでもいいような(たぶんもっといい書き方があるハズ)。貼り付け先の書式が標準であればですが。
これならリンク貼り付けマクロ自体いりませんし、クリップボードを使わないので件のエラーは起きません。
エラーの原因はクリップボードへの格納が完了する前にpaste処理に入ってしまうためであると推測します。
PCスペックによって動作したりしなかったりは起きると思います。
(名無し) 2017/03/31(金) 16:38
>>貼り付け先の書式が標準であれば」ではなかったからですか?
何も記入されなかったのですか?エラーですか?どのようにダメだったのか教えて下さい。
記入自体はできているのならですが、文字列とかになってるとダメです。座標ではなくそういう文字として扱われるかと思います。どうせ転記するわけですから、全部標準にしては?
>>「DoEvents」を入れても、職場のパソコンでは動きませんでした。
入れても 「実行時エラー 1004」「データを貼り付けできません」が出るということですか?
うーん、DoEventsを複数入れてみるか、以下のような形でSleepも入れてみるかですかねぇ・・・
DoEvents
Sleep 75 DoEvents
現時点ではどのように動かないのかわかりませんのでこんなもんしか言えませぬ
(名無し) 2017/04/03(月) 10:53
あ、これ動かんわ
氏名WS.Cells(i, j) = "=" & データWS.Name & "!" & Cells(m, n).Address
こうですかね
普段setが煩わしくてsheet名の変数立ててごり押しなんかしてるからこういうことに・・・反省
(名無し) 2017/04/03(月) 11:10
もともとのコードがこれですよね
Call リンク貼り付けマクロ(データWS.Cells(m, n), 氏名WS.Cells(i, j))
渡す先がこれだった
リンク貼り付けマクロ(コピーセル As Range, 貼り付けセル As Range)
つまり
氏名WS.Cells(i, j) :貼り付け先
データWS.Cells(m, n):コピー元
氏名WS.Cells(i, j) = データWS.Cells(m, n):しかしこれだとリンク貼り付けではなく貼り付けになる
→氏名WS.Cells(i, j)に「=○○!××」で入れてやる必要がある
○○:シート名
××:セル名(A1とかG4とか)
データWSのシート名を吐かせる場合
データWS.Name
Cells(m, n)からA1とかG4という形にする場合
Cells(m, n).Address
「=○○!××」の形に繋げる
"=" & データWS.Name & "!" & Cells(m, n).Address
繋げたのを氏名WS.Cells(i, j)に入れる
氏名WS.Cells(i, j) = "=" & データWS.Name & "!" & Cells(m, n).Address
こんな感じですかねー他にもっといいやり方ありそうだけれどようわからんので
.Nameとか.Addressについてはぐぐったほうがわかりやすい情報がでるかと思うのであまり言及しませんがご容赦下さい。
(名無し) 2017/04/04(火) 09:47
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.