特定の文字以外を入力すると別シートに表記する方法
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim StrRow As Long
Dim TgtCol As Long
Dim MaxRow As Long
Dim ChgRow As Long
Dim PutSh1 As Worksheet
Dim PutSh2 As Worksheet
Dim PutSh3 As Worksheet
Dim PutCol As Long
Dim PutRow As Long
Dim ChgRng1 As Range
Dim ChgRng2 As Range
Dim ChgRng3 As Range
StrRow = 5
MaxRow = 35
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set PutSh1 = ThisWorkbook.Sheets("Sheet2")
Set PutSh2 = ThisWorkbook.Sheets("Sheet3")
Set PutSh3 = ThisWorkbook.Sheets("Sheet4")
With ThisWorkbook.Sheets("Sheet1")
Set ChgRng1 = Range(.Cells(StrRow, 3), .Cells(MaxRow, 3)) 'C列
Set ChgRng2 = Range(.Cells(StrRow, 5), .Cells(MaxRow, 5)) 'E列
Set ChgRng3 = Range(.Cells(StrRow, 7), .Cells(MaxRow, 7)) 'G列
End With
ChgRow = Target.Row
If Not Intersect(Target, ChgRng1) Is Nothing Then
Target.Offset(0, -1).Value = Target.Offset(0, -1).Value + 1
DataPut PutSh1, ChgRow, Target.Value
End If
If Not Intersect(Target, ChgRng2) Is Nothing Then
Target.Offset(0, -1).Value = Target.Offset(0, -1).Value + 1
DataPut PutSh2, ChgRow, Target.Value
End If
If Not Intersect(Target, ChgRng3) Is Nothing Then
Target.Offset(0, -1).Value = Target.Offset(0, -1).Value + 1
DataPut PutSh3, ChgRow, Target.Value
End If
End Sub
以前質問させて頂いた内容で追加の質問です。
Sheet1の指定したセルに「ー(ハイフン)」の文字がある時は、Sheet2〜4に転送(表記)しない方法を追加する場合はどの様にすれば宜しいでしょうか?
お礼
たった今最終の動作チェックを終えましたが、問題なく処理できることを確認いたしました。 今回のコードはかなり優秀で、同様のことを実現したい他の読者さんにとっても大きな助けになると思います。 HTTPステータスコードを一括で調べたい時、といった使い方もできそうです。 >>マクロは基礎から知識ゼロ >とのことですが、元々のコードと改変されたものの何処が変わったかというようなことを、比較する癖をお付けになったら、処理や操作が変わった原因も分かるようになりますし、そういうところから、スキルがアップするかと存じますので、是非、そういう習慣を付けてください。 おっしゃる通りNo.4のコードが「For i = 1」となっていることに今気が付きました。 自分のスキルアップのためにも比較する癖をつけていきたいと思います。 エクセルのコード比較のやり方は、こんな使い方もあるのだと驚きました。 (今まで私の場合は宝の持ちぐされでしたが…他の読者さんの助けにもなるかと思い)WinMergeという文章比較のフリーソフトも、コードの比較に役立つかもしれません。 HTTPステータスコードに関しましては、例えば503の場合は一時的なサーバーダウンなので後でチェックするなど、HTTPステータスコードを確認できた方が対処できる選択肢が増えると思いました。 DOUGLAS_さん、本当にありがとうございました。