人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBA(エクセル)で、N行以上選択している場合にクリップボードコピーを禁止する方法を教えてください。
(可用性から多少は許可したいので、N指定ができるとうれしいです)
バージョンは、2000です。

●質問者: P-mako
●カテゴリ:コンピュータ インターネット
✍キーワード:VBA エクセル クリップボード コピー バージョン
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Kenju
●35ポイント

以下のような記述でできそうです。

NはMAX_ROWで指定してください。


[Workbook]

Private Sub Workbook_Open()

 With Application.CommandBars("Cell")
 .Reset
 .Controls("コピー(&C)").OnAction = "copyMethod"
 End With

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

 Application.CommandBars("Cell").Reset

End Sub

[Module1]

Const MAX_ROW As Long = 10

Sub copyMethod()

 If MAX_ROW < Selection.Rows.Count _
 Then
 Exit Sub
 End If

 Selection.Copy

End Sub

http:///

◎質問者からの返答

ご回答ありがとうございます。

[Workbook]の2メソッドをThisWorkbook、[Module1]の1メソッドを同様に[Module1]にコピーしましたが、コピー&ペースト可能な状態です。

実際に実績のあるご回答をお願いします。

※再回答可能なように設定変更します。


2 ● Kenju
●35ポイント

以下の環境でテスト済みですが、確かにちょっと説明が足りませんでした。

Windows2000 Professional + Excel2000

[注意事項]

Workbook_Openはブックオープンイベントで実行されますので、保存して開きなおしてください。

また、コードに不足点があったことも否めませんね。。。申し訳ありません。

ThisWorkbookのマクロを以下に書き換えてください。


[Workbook]

Private Sub Workbook_Open()

 With Application.CommandBars("Cell")
 .Reset
 .Controls("コピー(&C)").OnAction = "copyMethod"
 End With

 With Application.CommandBars("Row")
 .Reset
 .Controls("コピー(&C)").OnAction = "copyMethod"
 End With

 With Application.CommandBars("Column")
 .Reset
 .Controls("コピー(&C)").OnAction = "copyMethod"
 End With

 Application.OnKey "^c", "copyMethod"

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

 Application.CommandBars("Cell").Reset
 Application.CommandBars("Row").Reset
 Application.CommandBars("Column").Reset

End Sub

http:///

◎質問者からの返答

ありがとうございます。

上手くいきました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ