|
▼夜勤労働者 さん:
こんばんは。
>レイアウトの変更があって、修正はうまくいかず、止まってしまいました。
>教えていただけませんか?
これは、元のコードをじっくり時間をかけて解釈されて
ご自分で手直しされたほうが良いと思いますけどね!!
>実施したいこと:
>チェック範囲及び基準値を以下のように変更する場合は、
>チェック範囲:C2:E760(3列)===>G5:K760(5列)へ変更
>基準値:B2===>L5
>
>修正結果:
>Sub test02()
>Dim idx As Long, jdx As Long
> Dim rng As Range
> Dim add1 As String
> Dim add2 As String
> Dim ans As Variant
> Dim mes As String
> Set rng = Range("a5", Cells(Rows.Count, "a").End(xlUp)) →2から5へ
' ↑このコードがA列に入力されているデータを元に
' 入力されているデータ範囲を取得しようとしていることが理解できないと
' 応用が利きませんよ!!
If rng.Row > 4 Then
'↑データの始まりが5行以上であることが処理を行うための最初のハードル
> With rng
add1 = .Offset(0, 6).Resize(, 5).Address
' ↑G列〜K列なら上記のように修正、よく意味を考えてください
add2 = .Offset(0, 11).Address
' ↑L列が除数の列なら上記になります。
> ans = Evaluate("=transpose(if(mod(" & add1 & "," & add2 & _
> ")<>0,ADDRESS(ROW(" & add1 & "),COLUMN(" & add1 & ")),""""))")
> End With
> For idx = LBound(ans, 2) To UBound(ans, 2)
> For jdx = LBound(ans, 1) To UBound(ans, 1)
> If ans(jdx, idx) <> "" Then
> mes = mes & ans(jdx, idx) & vbCrLf
> End If
> Next
> Next
> If mes <> "" Then
> MsgBox mes, , "データのチェック" →タイトルを付けました
> End If
> End If
>End Sub
>
>チェック範囲及び基準値を以下のように変更する場合は、
>チェック範囲:C2:E760(3列)===>G5:K760(5列)へ変更
>基準値:B2===>L5
きちんと意味を理解されながら、修正してみてください
|
|