VBA(エクセル)で、N行以上選択している場合にクリップボードコピーを禁止する方法を教えてください。

(可用性から多少は許可したいので、N指定ができるとうれしいです)
バージョンは、2000です。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/08/24 13:46:35
  • 終了:2006/08/24 19:24:32

回答(2件)

id:Kenju No.1

Kenju回答回数30ベストアンサー獲得回数22006/08/24 15:56:39

ポイント35pt

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

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:///

id:P-mako

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

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

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

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

2006/08/24 16:50:43
id:Kenju No.2

Kenju回答回数30ベストアンサー獲得回数22006/08/24 17:35:06

ポイント35pt

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

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:///

id:P-mako

ありがとうございます。

上手くいきました。

2006/08/24 19:24:13

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません