質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

44114閲覧

VBAマクロ セル範囲同士の比較

qwerty123

総合スコア26

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2016/03/29 09:22

セル範囲同士のを比較し、完全に合致していたら「ok」、1つでも合致していなかったら「ng」とメッセージボックスを表示したいです。

例)a1からa5に入力された値と、b1からb5に入力された値でそれぞれa1とb1が等しい、a2とb2が等しい…という風に、すべて等しい場合、「ok」が出るようにしたいです。

if文を使い、
if (range("a1:a5") = range("b1:b5") then
msgbox "ok"
とやってみましたが、できませんでした。
rangeでセル範囲同士の比較はできないのでしょうか?

わかる方いましたら、お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Rangeに含まれるセルの値どおしを比較するにはループを使わなきゃだめです。

たとえば、

Dim a As Range Set a = Range("A1:A5") 'bも同じようにしてください。 Dim i As Integer 'ループ回数のカウンター 'カウンタが1からセルの個数になるまで繰り返し処理 For i = 1 To a.Cells.Count If a.Cells(i).Value <> b.Cells(i).Value Then MsgBox "ng" End If Next i 'この行に来たら「For ~」の行に勝手に戻ります。

のように書いていきます。

投稿2016/03/29 09:40

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qwerty123

2016/03/30 00:38

ご回答ありがとうございます。 このプログラムで実施しましたところ、間違いが複数あった場合、その数だけアラートがでてしまいます。間違いがいくつあってもアラートを一度だけ表示するようにするには、どうすれば良いでしょうか。
tkturbo

2016/03/30 00:49

「のように」というのが肝要で。 今回は100%の正解を書いているつもりはありません。 「間違いが複数あった場合、その数だけアラートがでてしまいます。」というのであれば、間違いがあった時だけ値が変わる変数を一つ用意しておけばいいと思いませんか?
qwerty123

2016/03/30 01:19

ありがとうございます。無事出来ました。
guest

0

ベタ打ち、べたべた。
i=6の所が言語によっては使えなかったり
若干うさんくさいですがw

VBA

1Option Explicit 2 3Sub betabeta() 4 Dim i As Integer 5 For i = 1 To 5 6 If Range("A" & i) <> Range("B" & i) Then 7 Exit For 8 End If 9 Next 10 If i = 6 Then 11 MsgBox "OK" 12 Else 13 MsgBox "NG" 14 End If 15End Sub

投稿2016/03/30 00:27

torisan

総合スコア678

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問