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

 | A |
-------
1| 123 |
2|    |
3| 456 |
4| 789 |

Excel2003を使用しています。
上記のデータをFindを使用して、データが入力されているセルのみを検索したく、

Set C = Worksheets(AAA).Range("A:A").Find(<>"", LookIn:=xlValues)

など、試してみたのですが、上手くいきません。
『Findを使用して、データが入力されているセルのみを検索』する事じたいが無理なのでしょうか。
 ご教授の程、お願いします。

A 回答 (9件)

以下でどうでしょうか?


Dim C As Range
Set C = Worksheets("AAA").Range("A:A").SpecialCells(xlCellTypeConstants)

やっていることは、メニューから下記を実行したのをコード化しています。
[編集]→[ジャンプ]→[セル選択]→[○定数]をチェック
    • good
    • 0
この回答へのお礼

 早速のご回答ありがとうございます。
提示して頂いたプログラムを動かしてみました。SpecialCellsというやり方を知らなかったので、勉強になりました。
 このプログラムですと、アドレスが『$A$1,$A$3:$A$4』となります。
123=$A$1,456=$A$3 のように個々のアドレスを取得する事はできないのでしょうか。
 もし、宜しければご教授下さい。

お礼日時:2009/01/23 15:54

Findを利用していませんが、セル選択を利用すれば目的のことはできるかと思います。



<例>
Set C = Worksheets(AAA).Range("A:A").SpecialCells(xlCellTypeConstants, 23)

*上例では、値が入力されているセルを選択しています。
  (式が入力されているセルは除かれています)
    • good
    • 0
この回答へのお礼

 早速のご回答ありがとうございます。
 このプログラムですと、アドレスが『$A$1,$A$3:$A$4』となってしまいますが、123=$A$1,456=$A$3 のように個々のアドレスを取得する事はできないのでしょうか。
 もし、宜しければご教授下さい。

お礼日時:2009/01/23 15:56

Findの式に誤りがありますので以下で試してみて下さい。


Set C = Worksheets(AAA).Range("A:A").Find("", LookIn:=xlValues)

Find(<>"",←"<>"は必要ないので、これを外せば出来ると思います。
    • good
    • 0
この回答へのお礼

 ご回答ありがとうございます。
このプログラムですと、「空白のセル」のみ検索してしまいます。『データが入力されているセルのみを検索』=『空白でないセル』のみ検索したいので、分かるようでしたらご教授お願いします。

お礼日時:2009/01/23 16:04

#1です


Forループで各セルにアクセスします
以下のコードを参照してください
Sub Macro1()
 Dim C As Range
 Dim D As Range
 Set C = Worksheets("AAA").Range("A:A").SpecialCells(xlCellTypeConstants)

 For Each D In C
  Debug.Print D.Address
 Next
End Sub

または
Sub Macro2()
 Dim C As Range
 Dim i As Integer
 Set C = Worksheets("AAA").Range("A:A").SpecialCells(xlCellTypeConstants)

 For i = 1 To C.Count
  Debug.Print C(i).Address
 Next
End Sub
    • good
    • 0
この回答へのお礼

 「For Each D In C」の方が望んでいた答えです。
Findは使えませんでしたが、新しい方法を知ることができました。

 二回も回答を頂きありがとうございました。

お礼日時:2009/01/23 16:41

Set C = Worksheets(AAA).Columns("A:A").Find("*", LookIn:=xlValues)


で最初のセルA1が検索できます。
繰り返して検索であればFindNextを使用しDo~Loopで検索してください。
    • good
    • 0

Set C = Worksheets(AAA).Range("A:A").Find("*", LookIn:=xlValues)


でももちろんOKです。
    • good
    • 0
この回答へのお礼

 ご回答ありがとうございます。
提示して頂いたプログラムを動かしてみたのですが、$A$3しか検索してくれません。RangeもColumnsも同じでした。
 組み方が間違っているかもしれないので、下記に組んだプログラムを提示します。よろしければ、チェックしてください。

Sub Test()

Dim C As Range
Do
Set C = Worksheets("AAA").Columns("A:A").Find("*", LookIn:=xlValues)

Set C = Worksheets("AAA").Range("A:A").FindNext
Loop

お礼日時:2009/01/23 16:30

下記のようになります。


Dim c As Range
Dim a As String
With Worksheets(2).Range("b2:b9")
Set c = .Find("*", LookIn:=xlValues)
If Not c Is Nothing Then
a = c.Address
Do
Debug.Print c.Value; c.Address
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> a
End If
End With
    • good
    • 0
この回答へのお礼

 動きました!やっと解決できました!!
まだプログラムが理解できない所がありますが、調べてみます。どうしても理解できなければ、また質問するかもしれませんが…(^^;

 三度にわたり、回答いただきありがとうございました。

お礼日時:2009/01/23 16:46

With Worksheets(2).Range("A:A")


でした。
    • good
    • 0

たびたびすいません。


With Worksheets("AAA").Range("A:A")
でした。
    • good
    • 0

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