Ads By Google
VBAでセルに値が入ったときにイベントを起こしたいのですが、躓いています・・・
Private Sub Worksheet_Change(ByVal Target As Range)Dim i As Long
' 変更したセルに値が入った場合条件成立
If Trim(Target.Value) <> "" Then
' 行番号が10以上65530以内のとき条件成立
If Target.Row >= 10 And Target.Row <= 65530 Then
' BCD列で、5の倍数の行のとき条件成立
If (Target.Column = 2) And (Target.Row Mod 5) = 0 Then
If Target.Value <> "" Then
For i = 0 To 4
Target.Copy
Target.Offset(i, 10).PasteSpecial Paste:=xlPasteValues
Next
Worksheets("Sheet4").Range("A2:K6").Copy Target.Offset(5, -1)
End If
ElseIf (Target.Column = 3) And (Target.Row Mod 5) = 0 Then
If Target.Value <> "" Then
For i = 0 To 4
Target.Copy
Target.Offset(i, 10).PasteSpecial Paste:=xlPasteValues
Next
End If
ElseIf (Target.Column = 4) And (Target.Row Mod 5) = 0 Then
If Target.Value <> "" Then
For i = 0 To 4
Target.Copy
Target.Offset(i, 10).PasteSpecial Paste:=xlPasteValues
Next
End If
Else
Exit Sub
End If
End If
End If
End Sub
ここまでは何とか出来たのですが問題点があります・・・
・複数セルを選択してDELすると実行時エラー13が出ます。
・別シートより範囲指定したセルをコピーして張り付けるときも出ます。
・B列には6桁の整数値しか入らないようにしたいけど整数値限定は可能?・・・その整数値を貼り付ける際日付型へのフォーマットが難しい
などあります。ヒントをいただけないでしょうか?
2009-01-22 23:25の質問
この質問と回答を読んで役に立った場合は「役に立つ質問」に投票してください。投票が多い質問は、役に立つ質問一覧に掲載され、より多くの人に見てもらうことができます。
回答(1)
1.
2009-01-23 03:06:57

Worksheet_Change は、変更のあった1つ1つのセルに付きそれぞれ呼び出されるわけではないです。
Target は、複数のセル(Rangeオブジェクトは、複数の場合があります)を対象としています。
なので、基本複数のセルを表すものとして処理する必要があります。
例示プログラムは、単数として処理されているので、それで問題が生じているのでしょう。
※エラー13:型が一致しない。というエラー
Target は、複数のセル(Rangeオブジェクトは、複数の場合があります)を対象としています。
なので、基本複数のセルを表すものとして処理する必要があります。
例示プログラムは、単数として処理されているので、それで問題が生じているのでしょう。
※エラー13:型が一致しない。というエラー
回答レベル : アドバイス
ありがとうございます
Ads By Google
コメント
まだコメントがありません




