Excel VBA質問箱 IV

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

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


55257 / 76738 ←次へ | 前へ→

【26259】Re:マクロの暴走について
回答  Kein  - 05/6/29(水) 19:18 -

引用なし
パスワード
   入力したい値には一定のパターンが見られるので、数式で処理することが出来ます。
とうぜん手入力でも出来ますが、あえてVBAマクロでやるとしたら

With Range("E7:E100")
  .Formula = "=IF(OR($D7<1,$D7>3),0,$D7)"
  .Offset(, 1).Formula = "=IF(OR($D7<1,$D7>3),0,$D7*10)"
  .Resize(, 2).Copy
  .PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False

というコードで出来ます。ただし、これは既にD7:D100の全てのセルに数値が入力済み
のときに、イベントではなく普通のマクロとして実行する場合のコードです。
もしセル入力イベントにしたいなら

Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("D7:D100")) Is Nothing Then Exit Sub
  With Target
   If .Count > 1 Then Exit Sub
   If IsEmpty(.Value) Then Exit Sub
   If Not IsNumeric(.Value) Then Exit Sub
   Application.EnableEvents = False
   Select Case .Value
     Case 1 To 3
      .Offset(, 1).Value = .Value
      .Offset(, 2).Value = .Value * 10
     Case Else
      .Offset(, 1).Value = 0
      .Offset(, 2).Value = 0
   End Select
  End With
  Application.EnableEvents = True
End Sub

ぐらいで出来るでしょう。
0 hits

【26257】マクロの暴走について いのっち 05/6/29(水) 18:41 質問
【26259】Re:マクロの暴走について Kein 05/6/29(水) 19:18 回答
【26289】Re:マクロの暴走について いのっち 05/6/30(木) 16:30 発言
【26317】Re:マクロの暴走について Kein 05/7/1(金) 11:54 発言
【26328】Re:マクロの暴走について いのっち 05/7/1(金) 14:42 お礼
【26266】暴走の理由 [名前なし] 05/6/29(水) 23:10 発言
【26290】Re:暴走の理由 いのっち 05/6/30(木) 16:31 お礼
【26300】Re:暴走の理由 [名前なし] 05/6/30(木) 22:26 回答
【26307】Re:暴走の理由 いのっち 05/7/1(金) 9:43 お礼

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