• ベストアンサー

VBAに関する質問

現在、Excel上にてVBAを習得しているのですが、以下の操作ができないため質問致します。 条件式に関して、「現在のセルとB1セルが一致」のような場合、 ActiveCell.Value = Range("B1").Value などとすると思いますが、上式の右辺に範囲を指定(ex. Range("B1:D5"))する方法はないでしょうか? つまり、現在のセルと範囲指定したセル中の「いずれか1つ以上と一致する」場合と、「すべて異なる」場合とで場合分けしたいのですが・・・。 VBAを昨日から始めた初心者なため、言葉の定義が曖昧な部分もあるかと思いますがご了承ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

>現在のセルと範囲指定したセル中の「いずれか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 といったコードは勉強の材料になりませんか

yama_nishi
質問者

お礼

ありがとうございます。 目的の操作が出来ました。 まだまだ勉強不足を実感いたしましたが、とても参考になりました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

こういうのを判りやすいと感じる人も多いようです。 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

関連するQ&A