- ベストアンサー
VBAに関する質問
現在、Excel上にてVBAを習得しているのですが、以下の操作ができないため質問致します。 条件式に関して、「現在のセルとB1セルが一致」のような場合、 ActiveCell.Value = Range("B1").Value などとすると思いますが、上式の右辺に範囲を指定(ex. Range("B1:D5"))する方法はないでしょうか? つまり、現在のセルと範囲指定したセル中の「いずれか1つ以上と一致する」場合と、「すべて異なる」場合とで場合分けしたいのですが・・・。 VBAを昨日から始めた初心者なため、言葉の定義が曖昧な部分もあるかと思いますがご了承ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>現在のセルと範囲指定したセル中の「いずれか1つ以上と一致する」場合と、「すべて異なる」場合とで場合分けしたいのですが・・・。 1、ワークシートの関数で COUINTIFがありますので。この関数をVBAで使用する方法 2、エクセルの機能で 検索があります。マクロの記録を実行してみると Findのコードが 記録されています。 2の方法は、検索して合致したセルの情報や処理もできるので一度、Webで検索して 勉強してみることをお勧めします。 Sub ボタン1_Click() s = WorksheetFunction.CountIf(Range("B1:D5"), Range("A2").Value) MsgBox s Dim c As Variant Set c = Range("B1:D5").Find(Range("A2").Value) If Not c Is Nothing Then fAddress = c.Address Do MsgBox c.Address Set c = Range("B1:D5").FindNext(c) If c.Address = fAddress Then Exit Do Loop End If End Sub といったコードは勉強の材料になりませんか
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
こういうのを判りやすいと感じる人も多いようです。 sub macro1() dim h as range for each h in range("B2:D5") h.select if activecell.value = range("B1").value then msgbox "match " & activecell.address exit sub end if next msgbox "NOT FOUND" end sub
お礼
ありがとうございます。 目的の操作が出来ました。 まだまだ勉強不足を実感いたしましたが、とても参考になりました。