Excel VBA質問箱 IV

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

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


7561 / 13644 ツリー ←次へ | 前へ→

【38239】自シートのイベント ぺた 06/5/30(火) 14:13 質問[未読]
【38240】Re:自シートのイベント Jaka 06/5/30(火) 14:36 回答[未読]
【38242】Re:自シートのイベント Kein 06/5/30(火) 15:04 回答[未読]
【38252】Re:自シートのイベント ハト 06/5/30(火) 16:58 回答[未読]

【38239】自シートのイベント
質問  ぺた  - 06/5/30(火) 14:13 -

引用なし
パスワード
   Sheet1のA1セルに値が変更されたらSheet2からSheet6までのセルA1にもその値を反映させたいと思い、以下のようなコードをSheet1のコードに記述しました。

Public Sub Worksheet_Change(ByVal target As Range)
  Worksheets("Sheet1").Range("A1").Value = Range("A1").Text
  Worksheets("Sheet2").Range("A1").Value = Range("A1").Text
  Worksheets("Sheet3").Range("A1").Value = Range("A1").Text
  Worksheets("Sheet4").Range("A1").Value = Range("C4").Text
  Worksheets("Sheet6").Range("A1").Value = Range("A1").Text
End Sub

しかしこれを実行すると「再計算100%」と左下に表示されたままフリーズします。
何かいい対処法、または別の方法はありませんか?
よろしくお願いします。

【38240】Re:自シートのイベント
回答  Jaka  - 06/5/30(火) 14:36 -

引用なし
パスワード
   >Public Sub Worksheet_Change(ByVal target As Range)
   Application.EnableEvents = False
>  Worksheets("Sheet1").Range("A1").Value = Range("A1").Text
   Application.EnableEvents = True
>  Worksheets("Sheet2").Range("A1").Value = Range("A1").Text
>  Worksheets("Sheet3").Range("A1").Value = Range("A1").Text
>  Worksheets("Sheet4").Range("A1").Value = Range("C4").Text
>  Worksheets("Sheet6").Range("A1").Value = Range("A1").Text
>End Sub

【38242】Re:自シートのイベント
回答  Kein  - 06/5/30(火) 15:04 -

引用なし
パスワード
   こんな感じでしょーか ?

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
   If .Address <> "$A$1" Then Exit Sub
   If .Count > 1 Then Exit Sub
   If IsEmpty(.Value) Then Exit Sub
  End With
  With Application
   .EnableEvents = False
   Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet6")) _
   .FillAcrossSheets Range("A1"), xlFillWithContents
   Sheets("Sheet4").Range("A1").Value = Range("C4").Text
   .EnableEvents = True
  End With
End Sub

【38252】Re:自シートのイベント
回答  ハト  - 06/5/30(火) 16:58 -

引用なし
パスワード
   ▼ぺた さん:
>Sheet1のA1セルに値が変更されたらSheet2からSheet6までのセルA1にもその値を反映させたいと思い、以下のようなコードをSheet1のコードに記述しました。

Sheet2からSheet6へ反映となっているのに
Sheet5への反映がなく
Sheet1への反映があります

>  Worksheets("Sheet1").Range("A1").Value = Range("A1").Text

>しかしこれを実行すると「再計算100%」と左下に表示されたままフリーズします。
>何かいい対処法、または別の方法はありませんか?
>よろしくお願いします。

その為、処理がループしてます
>  Worksheets("Sheet1").Range("A1").Value = Range("A1").Text

  Worksheets("Sheet5").Range("A1").Value = Range("A1").Text
へ変更してみてください

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