ここから本文です

エクセルVBAについての質問です。

Heroki.Reiさん

2016/3/2918:39:48

エクセルVBAについての質問です。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Integer
Dim d As Integer
If Intersect(Target, Range("B28,A28")) Is Nothing Then Exit Sub
For d = 1 To 26
For c = 1 To 26
If Cells(c, d).Interior.ColorIndex <> 4 Then
Cells(c, d).Interior.ColorIndex = 0
End If
Next c
Next d
If IsNumeric([A28]) And IsNumeric([B28]) And _
[A28] > 0 And [A28] < 27 And _
[B28] > 0 And [B28] < 27 Then
Cells([B28], [A28]).Interior.ColorIndex = 1
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim e As Integer
Dim f As Integer
If Intersect(Target, Range("D28,C28")) Is Nothing Then Exit Sub
For e = 1 To 26
For f = 1 To 26
If Cells(e, f).Interior.ColorIndex <> 4 Then
Cells(e, f).Interior.ColorIndex = 0
End If
Next f
Next e
If IsNumeric([D28]) And IsNumeric([C28]) And _
[C28] > 0 And [C28] < 27 And _
[D28] > 0 And [D28] < 27 Then
Cells([D28], [C28]).Interior.ColorIndex = 1
End If
End Sub
とSheet1のVBAに入力しています。標準モジュールには
Option Explicit
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As LongSubと入力しています。Subの実行をすると2個目の Private Sub Worksheet_Change(ByVal Target As Rangeに色がついてエラーが出ます。どうしたら良いですか。ふたつ同時に起動させたいのです。上のに下のことを入れてくださってもかまいませんが、正しく動く方法を教えてください。

閲覧数:
94
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2016/3/2919:44:04

とりあえずは、↓のように書きかえれば、問題ないでしょう。
効率を考えれば、根本から考え直すほうがよいでしょうね。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Integer
Dim d As Integer
Dim e As Integer
Dim f As Integer

If Not Intersect(Target, Range("B28,A28")) Is Nothing Then
For d = 1 To 26
For c = 1 To 26
If Cells(c, d).Interior.ColorIndex <> 4 Then
Cells(c, d).Interior.ColorIndex = 0
End If
Next c
Next d
If IsNumeric([A28]) And IsNumeric([B28]) And _
[A28] > 0 And [A28] < 27 And _
[B28] > 0 And [B28] < 27 Then
Cells([B28], [A28]).Interior.ColorIndex = 1
End If
End If

If Intersect(Target, Range("D28,C28")) Is Nothing Then Exit Sub
For e = 1 To 26
For f = 1 To 26
If Cells(e, f).Interior.ColorIndex <> 4 Then
Cells(e, f).Interior.ColorIndex = 0
End If
Next f
Next e
If IsNumeric([D28]) And IsNumeric([C28]) And _
[C28] > 0 And [C28] < 27 And _
[D28] > 0 And [D28] < 27 Then
Cells([D28], [C28]).Interior.ColorIndex = 1
End If
End Sub

未実行につき、不具合ご容赦。

質問した人からのコメント

2016/3/29 21:08:28

使わせて頂きました。ありがとう御座いました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる