こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

excel 2007 VBA コードの記述

Excel 2007 を使用しています。

TEST.xlsm というブック内に テスト01 というシートを作成し、そのタブを右クリックして

コードの表示

を選択。

表示されたVBAコード入力シートに下記のコードを記述して使用してます。


Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Intersect(Target, Range("E3:E33,G3:G33,AH3:AH33,AJ3:AJ33,BK3:BK33,BM3:BM33")) Is Nothing Or Selection.Count <> 1 Then Exit Sub
Application.EnableEvents = False
If Target <> "" Then
If IsNumeric(Target) Then
Target = Target - 23
End If
End If
Application.EnableEvents = True
End Sub 'この行まで

この条件に新たに下記のコードを追加したいと思い
ネット検索しながらあれこれ試行錯誤してますが
まだまだVBA初心者のため上手く機能してくれません。

※上のコードだけなら思った通りに機能します。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Intersect(Target, Range("Y3:Y33,BB3:BB33,CE3:CE33")) Is Nothing Or Selection.Count <> 1 Then Exit Sub
Application.EnableEvents = False
If Target <> "" Then
If IsNumeric(Target) Then
Target = Target - 30
End If
End If
Application.EnableEvents = True
End Sub 'この行まで


どなたかこれら二種のコードを一つにまとめた記述方法を
教えて頂けますでしょうか?

投稿日時 - 2014-05-29 12:32:14

QNo.8615412

すぐに回答ほしいです

質問者が選んだベストアンサー

private sub Worksheet_Change(byval Target as excel.range)
’除外条件1,2,3
 if target.count > 1 then exit sub
 if target = "" then exit sub
 if not isnumeric(target) then exit sub

’範囲条件1,2
 application.enableevents = false
 if not application.intersect(target, range("E3:E33,G3:G33,AH3:AH33,AJ3:AJ33,BK3:BK33,BM3:BM33")) is nothing then
  target = target - 23
 elseif not application.intersect(target, range("Y3:Y33,BB3:BB33,CE3:CE33")) is nothing then
  target = target - 30
 end if
 application.enableevents = true
end sub


なにがどうならどうしたいのか、1つずつ順を追って紙に書き出してみて、その通りにマクロに書いていくと間違えずに作成できます。

投稿日時 - 2014-05-29 12:55:23

お礼

早々のご回答有難うございます。
おかげで無事問題解決に至り
大変助かりました。

投稿日時 - 2014-05-29 14:04:32

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問