アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのマクロで、
if **** then
の部分の
****にある範囲のセルとある範囲のセルが完全に一致しているという

If Range(Cells(2, 3), Cells(60, 3)) = Range(Cells(2, 4), Cells(60, 4)) Then

みたいなかんじにしたいのですが、これだとエラーになります。
どうしていけばいいでしょうか?
宜しく御願いします。

A 回答 (2件)

関数を作るしかないとおもいますが、


こんな感じ
If eq_range(Range("A1:b4"), Range("C1:D4")) Then
MsgBox "="
Else
MsgBox "≠"
End If

関数は

Function eq_range(in1 As Range, in2 As Range) As Boolean
eq_range = False
If in1.Rows.Count = in2.Rows.Count And in1.Columns.Count = in2.Columns.Count Then
For ii = 1 To in1.Rows.Count
For jj = 1 To in1.Columns.Count
If in1.Cells(ii, jj) <> in2.Cells(ii, jj) Then
Exit Function
End If
Next
Next
eq_range = True
End If
End Function
    • good
    • 0

>完全に一致しているという


「値の」こと(だけ)でしょうね。質問には明確に。
質問の路線ではできないようです。
Range("a3:c3") = "s"
が、できるところまでで、左辺の変数・配列に入れられないようです。
隣接セルという事実に基づいて下記ぐらいかな。
Sub test02()
Dim cl As Range
n = ""
For Each cl In Range("C2:C60")
If cl <> cl.Offset(0, 1) Then n = n & cl.Address & " "
Next
If n <> "" Then MsgBox "不一致セルあり " & n
End Sub
1行式で、できると言う回答を待ちたい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!