ここから質問投稿すると、最大10000ポイント当たる!!!! >>

エクセルVBAにて、
指定した列から「検索」を使って該当のセルを選び出し、(1)そのセルの行をコピーして別シートに貼り付けるマクロを組みたいのですが、(1)以降の処理がどうしても組めません。officeは2000を使っています。
宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (7件)

見つかったセルを fcell とすると


fcell.EntireRow.Copy Destination:=ActiveSheet.Next.Range("A1")
のようにすればできると思います。
    • good
    • 0

ActiveCell.address


と書いても全く意味ありませんよ?
msgbox(ActiveCell.address)
とすればダイアログで確認できたりしますが、これはあくまでもデバック用ですし。
実際的には変数を一つ作ってそこにこのアドレスを入れて使いまわすことになるかと思いますが。

何かそれ以前のところで戸惑われているようなので、まず初心者レベルの参考書を一通り読まれることをお勧めします。

変数とか型とかを自分の言葉でかまわないから理解できる程度の知識はないと質問者さんのやりたいことはちょっと難しいかと。
    • good
    • 0

Selection.Find(What:=[指定した文字], After:=ActiveCell, LookIn:=xlFormulas, LookAt _


:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate

まぁこれだけでも十分にセルの位置は分かります。
上の処理で該当のセルがActivateになる訳ですから
ActiveCell.address
でアドレスが取れます。ただスマートの方法ではありませんが。

Findを使う場合、4番さんの指摘通り、色々と面倒なことも多いので、For Eachでループをぐるぐる回した方が分かりやすいコードになります。
以下のA1からA10間で"hoge"という文字列を検索するサンプルコード
For Each C In Worksheets(1).Range("A1:A10")
If C.Value = "hoge" Then
MsgBox ("hogeのアドレス=" & C.Address)
End If
Next C

この回答への補足

・・・・False).Activate
の次の行に
ActiveCell.address
を付けたのですが、「プロパティの使い方が不正です」というエラーが出ます。また
For Each C In Worksheets(1).Range("A1:A10")
If C.Value = "hoge" Then
MsgBox ("hogeのアドレス=" & C.Address)
End If
Next C
ですが、この「C」は何を指しますか?
初心者の為、細かいところまで聞いてしまい、申し訳ありません。

補足日時:2004/08/13 13:57
    • good
    • 0
この回答へのお礼

・・・・False).Activate
の次の行に
ActiveCell.address
を付けたのですが、「プロパティの使い方が不正です」というエラーが出ます。また
For Each C In Worksheets(1).Range("A1:A10")
If C.Value = "hoge" Then
MsgBox ("hogeのアドレス=" & C.Address)
End If
Next C
ですが、この「C」は何を指しますか?
初心者の為、細かいところまで聞いてしまい、申し訳ありません。

お礼日時:2004/08/13 14:18

(1)>「検索」を使って


FINDメソッドを使うでしょう。
しかし下記(2)(3)が難しい。既回答にも触れていない。下記コードを参考に。
(2)見つかった後、2個目はFindNextを使う
(3)最後に見つかったあと、次は見つからないのですが、その察知はどうなるか?。

Sub test01()
Range("A1:A16").Select
Set x = Selection.Find(What:=Cells(1, "E"), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
If Not x Is Nothing Then
f = x.Address
x.Offset(0, 1) = Cells(1, "E")
Do
x.Offset(1, 0).Activate
Set x = Worksheets(1).Range("a1:a16").FindNext(x)
x.Offset(0, 1) = Cells(1, "E")
Loop Until x Is Nothing Or x.Address = f
End If

End Sub(例データ)
E1に東京
東京の文字のある行のB列にに「東京」といれる。
東京都田無市東京
愛知県名古屋市
大阪府大阪市
埼玉県川口市
東京都千代田区東京
大阪府河内長野市
愛知県豊田市
兵庫県西宮市
千葉県木更津市
神奈川県藤沢市
神奈川県相模原市
神奈川県茅ヶ崎市
東京都中野区東京
埼玉県和光市
東京都府中市東京
    • good
    • 0
この回答へのお礼

ありがとうございます。
とても難しそうですね・・・。もう少し簡単に出来る方法を探してみますが、一段落したら教えて頂いたものでも挑戦してみようと思います。1つの処理をするにも人それぞれ色々な方法があるんですね。勉強になりました!

お礼日時:2004/08/13 14:01

#1です。


回答が不親切でしたね。すみません。

コピーする部分の操作を記録して、作られたコードを
改良して、貴方が書かれた検索コードを足せばいいと思うのですが。
    • good
    • 0
この回答へのお礼

度々の回答、ありがとうございますm(_ _)m
コピーをするセルの位置が分かればその後は楽に組めると思うのですが、検索で引っかかったセルの位置の出し方がわかりません。何か方法はありますか?

お礼日時:2004/08/12 16:19

マクロの記録で手順を保存して、


行数の部分を変数にしてSelectionの部分を適当なものに置き換えると簡単にできます。

まぁどの辺が分からないのかも分からないのであれですが。
    • good
    • 0
この回答へのお礼

ありがとうございます。質問が不十分で申し訳ありません。
マクロの登録で、検索をさせると

Selection.Find(What:=[指定した文字], After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate

のようになります。
これでセルは検索できます。次に、このセルの場所を指定させて行全体ををコピーし、他のシートに張り付けをするという一連の流れをマクロで組みたいのです。わかりずらくて申し訳ありません。。。

お礼日時:2004/08/12 15:50

「行をコピーして別シートに貼り付ける」の部分を、記録してみては?

    • good
    • 0
この回答へのお礼

行をマクロで検索し、コピー→貼付け という動作をさせたいと考えています。
わかりにくい質問で申し訳ありません。。。

お礼日時:2004/08/12 15:52

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


人気Q&Aランキング