
行番号1から12の任意のセルをコピーして貼り付ける場合ですが、
行番号13以降への貼り付けをしようとしても「制御されています。」というメッセージボックスが出て、しかも貼り付けが実行されない設定をしたいと思います。
また、
行番号13以降の任意のセルをコピーして貼り付ける場合も、
行番号1から12への貼り付けをしようとしても「制御されています。」というメッセージボックスが出て、しかも貼り付けが実行されない設定をしたいと思います。This Workbookにどんなマクロ記述をしたらよいですか?
教えてください。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
ThisWorkbookに記述するということは、特定のシートではなくそのBOOKのすべてのシートに適用させるのですね?
こんなのはどうでしょう?
http://www2.aqua-r.tepm.jp/~kmado/kvba.htm
のE03M121 切り取り又はコピーされたセル範囲を取得する を参考にさせていただきました。
標準モジュールに
Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function RegisterClipboardFormat Lib "user32" Alias "RegisterClipboardFormatA" _
(ByVal lpString As String) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)
Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Function kGetRangeCopyCut() As Range
Dim mem&, sz&, lk&, vv As Variant, buf$
If Application.CutCopyMode = False Then Exit Function
OpenClipboard 0&
mem = GetClipboardData(RegisterClipboardFormat("Link"))
CloseClipboard
If mem = 0 Then Exit Function
sz = GlobalSize(mem)
lk = GlobalLock(mem)
buf = String(sz, vbNullChar)
CopyMemory ByVal buf, ByVal lk, sz
GlobalUnlock mem
vv = Split(buf, vbNullChar)
buf = "'" & vv(1) & "'!" & Application.ConvertFormula(vv(2), xlR1C1, xlA1)
Set kGetRangeCopyCut = Range(buf)
End Function
ThisWorkbookに
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Application.CutCopyMode <> xlCopy Then Exit Sub
If kGetRangeCopyCut.Row < 13 Then
If Target.Row > 12 Then buf = True
Else
If Target.Row < 13 Then buf = True
End If
If buf Then
MsgBox "制御されています。"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub
ご挨拶がおそくなり失礼しました。完璧でした。心よりお礼申し上げます。作成中の「万年予定出納日記帳」もこれを以て完成となりそうです。助かりました。このマクロがないとどうしても条件付き書式のセルが移動してしまったりで悩んでおりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル:マクロ「Application...
-
Excelに、ダブルクォーテーショ...
-
Excel 行の連続データを列に参...
-
メールソフト「サンダーバード...
-
エクセルで隣接していない複数...
-
エクセルのアポストロフィを一...
-
エクセルでの行数・列数を指定...
-
Excel 結合されたセルへの貼り...
-
エクセルで「コピーしたセルの...
-
エクセルで勝手に「折り返して...
-
エクセルで値だけコピーして背...
-
行数の違う表に複数行をコピーする
-
Excelでコピーした行の挿入を繰...
-
EXCELで「行と列を入れ替える」...
-
アクセスからエクセルへコピー...
-
エクセルのシートに他のシート...
-
EXCEL数値が存在する列の項目名...
-
エクセルで勝手にコピー・・・
-
エクセルの2ページ目の作り方
-
EXCEL VBAでセルのコピー&ペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
エクセルで隣接していない複数...
-
エクセルで勝手に「折り返して...
-
メールソフト「サンダーバード...
-
Excel 行の連続データを列に参...
-
エクセルの2ページ目の作り方
-
Excelに、ダブルクォーテーショ...
-
エクセル 別シートへのコピー...
-
エクセルで、選択範囲の数値全...
-
エクセルで値だけコピーして背...
-
「選択範囲を解除してアクティ...
-
MacBookのnumbersでの表作成に...
-
エクセルでの行数・列数を指定...
-
エクセルで「コピーしたセルの...
-
エクセル コピーしたデータを1...
-
Excelでコピーした行の挿入を繰...
-
エクセルオートフィルで書式を...
-
【Excel】複数セルにまたがる文...
-
エクセル・数値が変化したらカ...
おすすめ情報