Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8494 / 13646 ツリー ←次へ | 前へ→

【32946】貼り付けられなくなってしまいました。 ろく 05/12/27(火) 21:07 質問[未読]
【32947】Re:貼り付けられなくなってしまいました。 やっちん 05/12/27(火) 21:55 回答[未読]
【32961】Re:貼り付けられなくなってしまいました。 ろく 05/12/28(水) 8:00 お礼[未読]
【32948】Re:貼り付けられなくなってしまいました。 Kein 05/12/27(火) 22:36 回答[未読]
【32949】Re:貼り付けられなくなってしまいました。 やっちん 05/12/27(火) 22:55 発言[未読]
【32962】Re:貼り付けられなくなってしまいました。 ろく 05/12/28(水) 8:04 お礼[未読]

【32946】貼り付けられなくなってしまいました。
質問  ろく  - 05/12/27(火) 21:07 -

引用なし
パスワード
   初めて質問します。
Worksheet_SelectionChange でシートのデータが書き換えられたときに特定のセル(ここでは合計ですが)の値が一定の範囲を超えた場合にセルの色を黄色、赤に変えるようにしたところ、コピー&ペーストが出来なくなりました。
一応、その部分を張っておきます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Select Case [合計]
    Case Is = 0
      With [合計].Interior
      .ColorIndex = xlNone
      .Pattern = xlSolid
      End With
    Case Is < 20
      With [合計].Interior
      .ColorIndex = 3
      .Pattern = xlSolid
      End With
    Case Is < 30
      With [合計].Interior
      .ColorIndex = 6
      .Pattern = xlSolid
      End With
    Case Is >= 30
      With [合計].Interior
      .ColorIndex = xlNone
      .Pattern = xlSolid
      End With
  End Select
End Sub

右クリックでコピーや切り取りは出来るんですが、貼り付けが出来ません。
どこに問題があるのか見当も付きません。
どなたか良い知恵があれば、教えてください。

【32947】Re:貼り付けられなくなってしまいました。
回答  やっちん  - 05/12/27(火) 21:55 -

引用なし
パスワード
   ▼ろく さん:
「Worksheet_SelectionChange」ではなくて
「Worksheet_Change」にしてはどうでしょう?

「Worksheet_SelectionChange」は選択範囲が変更された場合に呼ばれるので
コピーしようとコピー先のセルを選択した時点で
「Worksheet_SelectionChange」が実行されコピー元の選択が解除されます。
コピーできないのはそのせいです。

それから、変更されたセルが「合計」の場合のみ処理するように
した方がいいですね。

【32948】Re:貼り付けられなくなってしまいました。
回答  Kein  - 05/12/27(火) 22:36 -

引用なし
パスワード
   "合計"ということから推測すると、そのセルには SUM関数などの数式が入力されて
いるのではないでしょーか ? それなら Calculateイベント が適切と思います。
例えば・・

Private Sub Worksheet_Calculate()
  Dim Col As Long

  With Range("合計")
    Select Case .Value
     Case Is = 0: Col = -4142
     Case Is < 20: Col = 3
     Case Is < 30: Col = 6
     Case Is >= 30: Col = -4142
    End Select
    With .Interior
     .ColorIndex = Col
     .Pattern = xlSolid
    End With
  End With
End Sub

というようなコードになります。

【32949】Re:貼り付けられなくなってしまいました。
発言  やっちん  - 05/12/27(火) 22:55 -

引用なし
パスワード
   そうですね。
再計算での変更に対応できてませんでした。
まだまだ詰めが甘いです(--;

【32961】Re:貼り付けられなくなってしまいました。
お礼  ろく  - 05/12/28(水) 8:00 -

引用なし
パスワード
   やっちんさん
ありがとうございます。

そういうことですね。
Worksheet_SelectionChangeだと、そういう弊害があるとは思いませんでした。

勉強になります。

【32962】Re:貼り付けられなくなってしまいました。
お礼  ろく  - 05/12/28(水) 8:04 -

引用なし
パスワード
   やっちんさん・keinさん

ありがとうございました。
おかげさまでコピペが出来るようになりました。

あまりに素早い回答でびっくりです。

結果的にはkeinさんのソースをほぼそのまま引用させていただきました。
ちなみにやっちんさんのようにWorksheet_Changeにしても上手くいきました。

また何かありましたらお願いいたします。

8494 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free