Excel VBA 質問スレッド No.5 (解決済)

2つのVBA文のつなぎ方

投稿者 : 岸本賢二     投稿日時 : 2015/10/20(Tue) 17:55:12     OS : Windows XP     EXCEL : Excel 2003
家計簿のようなものを作っています。VBAはほとんど分からないままInternet上の他の方のをコピーし下記のようなモノを作りました。E列の数字に基づき、J列に金額が入った時にセルが色づけされるようにしています。ところで質問ですが、
1Worksheetには同じ表が2個並列にあります。左の表は下記のVBAで指示どおりになっているのですが、
右表の場合、 Range("O:O") この場合下段にある Cells(c.Row20).Resize...と変わります。→(T列)

上記を変えた同じものをつなげてみましたが、左表は可動しません。
どなたかご指示いただければありがたいのですが。宜しくお願いします。

 Private Sub Worksheet_Change(ByVal Target As Range)
Dim myColor As Variant
Dim c As Range
Dim myRng As Range
Set myRng = Application.Intersect(Range("E:E"), Target)
If myRng Is Nothing Then Exit Sub
If Range("J:J") Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In myRng
Select Case c.Value
Case "1"
myColor = 36 'Light Green
Case "2"
myColor = 40 'Light Brown
Case "3"
myColor = 34 'Light Blue
Case "5"
myColor = 35 'Light Yellow
Case "6"
myColor = 37 'Light Pink
Case "7"
myColor = 2 'White'
Case Else
myColor = xlNone
End Select
Cells(c.Row, 10).Resize(1, 1).Interior.ColorIndex = myColor
Next c
Application.EnableEvents = True
   End Sub

[返信 1] Re : 2つのVBA文のつなぎ方
投稿者 : 管理人     投稿日時 : 2015/10/21(Wed) 23:03:39
> 1Worksheetには同じ表が2個並列にあります。

ということは、E列に数字を入力してJ列に色をつけ、
さらに、O列に数字を入力してT列に色をつけたいということでしょうか?
この解釈でいいなら、以下のようにするとうまく動くと思います。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myColor As Variant
Dim c As Range
Dim myRng As Range
Dim myRng2 As Range

Set myRng = Application.Intersect(Range("E:E"), Target)
Set myRng2 = Application.Intersect(Range("O:O"), Target)
If myRng Is Nothing Then
If myRng2 Is Nothing Then
Exit Sub
Else
Set myRng = myRng2
End If
Else
If Not myRng2 Is Nothing Then
Set myRng = Union(myRng, myRng2)
End If
End If

Application.EnableEvents = False
For Each c In myRng
Select Case c.Value
Case "1"
myColor = 36 'Light Green
Case "2"
myColor = 40 'Light Brown
Case "3"
myColor = 34 'Light Blue
Case "5"
myColor = 35 'Light Yellow
Case "6"
myColor = 37 'Light Pink
Case "7"
myColor = 2 'White
Case Else
myColor = xlNone
End Select
c.Offset(0, 5).Interior.ColorIndex = myColor
Next c
Application.EnableEvents = True
End Sub

[返信 2] Re : 2つのVBA文のつなぎ方
投稿者 : 岸本賢二     投稿日時 : 2015/10/21(Wed) 23:45:42
私の要望通りに稼働しました。早速のアドバイス、大変ありがとうございました。いろんな支払が毎月いつどの口座から引き落とされるか、また引き落とされた後すぐ参照できるよう色づけしたいと思っていました。全く個人的なExcelでの表ですが、毎日の電気メーターでの電気料金の推移や、見たいテレビ番組の色づけ、回数等々皆様のWebを見よう見まねで作っています。これから更に勉強していきます。また、宜しくお願いします。

■[返信 1] 管理人yasuさん(2015-10-21 23:03:39)の記事
> > 1Worksheetには同じ表が2個並列にあります。

> ということは、E列に数字を入力してJ列に色をつけ、
> さらに、O列に数字を入力してT列に色をつけたいということでしょうか?
> この解釈でいいなら、以下のようにするとうまく動くと思います。

スポンサード リンク
 
 
当掲示板について
返信入力フォーム
お 名 前  :
内  容   :
ステータス  : この質問を解決済みにする

認証コード  :
        キャプチャ画像


( 処理日時 : 2019-08-26 09:44:19 )

Page
Top