解決済

clip!clip!
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:型が一致しない。というエラー
回答レベル : アドバイス

ありがとうございます

Ads By Google

コメント

まだコメントがありません

トラックバック(2)

トラックバックURL: