過去ログ

                                Page     564
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼検索したいのですが・・(FINDなど。)  kanon 03/1/5(日) 17:01
   ┗Re:検索したいのですが・・(FINDなど。)  りん 03/1/5(日) 17:57
      ┗Re:検索したいのですが・・(FINDなど。)  kanon 03/1/5(日) 18:47
         ┗Re:検索したいのですが・・(FINDなど。)  りん 03/1/5(日) 20:35
            ┗Re:検索したいのですが・・(FINDなど。)  kanon 03/1/17(金) 15:23

 ───────────────────────────────────────
 ■題名 : 検索したいのですが・・(FINDなど。)
 ■名前 : kanon
 ■日付 : 03/1/5(日) 17:01
 -------------------------------------------------------------------------
   はじめまして。今日こちらを知りました。今後は
活用させていただこうと思っています。

私はVBA超初心者で、マニュアルやHELPと格闘しながら作成しているのですが、
ちょっとハマって困ってます。
【貼付元】
  A  |  B  |  C
1 "555"  \100
2 "666"  \200
3 "777"  \300

【貼付先】
  A  |  B  | C(非表示)
1 =C1       "666"
2 =C2       "777"
3 =C3       "888"

上記のようにデータがあります。
貼付元のA列のデータを元に、貼付先を検索し、該当するデータが
有れば、その横のB列に金額を貼り付ける、というものです。
ただし、貼付先のC列は非表示となっておりシート自体も保護されていて
表示させることができません。(他人が作ったのでパスワードも分からない。)

なので、検索をする時は貼付先A列の値を検索したいのです。

マニュアルを見ながらFINDの例題に従って宛てはめて見たのですが
どうもうまくできなくて結果がNOTHINGになってしまいます。
単純な間違いをしている確立はかなり高い(笑)と思われるのですが
でもどうしていいのやら・・・。
数式を値で検索するということが出来ないとは思えなくて。
FINDでなくても他のやり方でもいいのです、VBAでかければ。

どなたかあきれずにアドバイスいただけると嬉しいです。
よろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:検索したいのですが・・(FINDなど。)  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 03/1/5(日) 17:57  -------------------------------------------------------------------------
   kanon さん、こんばんわ。

>数式を値で検索するということが出来ないとは思えなくて。

Findメソッドの引数のうち、
LookIn:=xlValues
とすれば値として検索できます。
 ───────────────────────────────────────  ■題名 : Re:検索したいのですが・・(FINDなど。)  ■名前 : kanon  ■日付 : 03/1/5(日) 18:47  -------------------------------------------------------------------------
   りんさん、早速のレスありがとうございます。

ただ、xlvalueは指定してあるのです。
Findメソッドは、マニュアルにある通りに書いてはあるので
大丈夫かと思うのですが、Findの直前の検索先の指定に
何か問題があるのかな?と思っているのですが。

Dim CHEAK1 As Range
Set CHEAK1 = Workbooks("【貼付先】.xls").Worksheets("【貼付先】").Range("A:A").Find(WHAT:=MOTOCELL.Value, LookIn:=xlValues, LOOKAT:=xlPart)
          --------------  
            ここには手前で検索する文字列をセットしている

こんな感じで書いているんですけど、何か違いますか?
MOTOCELLは、手前でセットした直後表示させて中身を確認したら
該当する検索したい文字列が表示されました。
Find後、If文判定で、NOTHINGに振り分けられているようです。

本当は直接書いたものを見せたいのですが、会社のなので、
やめときます。あぁ・・、こんなことで何日も悩みっぱなしです。
またまたよろしくお願いしますm(_)m
 ───────────────────────────────────────  ■題名 : Re:検索したいのですが・・(FINDなど。)  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 03/1/5(日) 20:35  -------------------------------------------------------------------------
   kanon さん、こんばんわ。

とりあえず。 非表示&保護の列でもFindは可能です。
見つかっても編集やSelect(Activate)ができないというだけで。

検索の対象を変更して簡素化してみました。
Sub Test()
  Dim wstr As String, ws1 As Worksheet, ws2 As Worksheet, r1 As Range
  'この二つを対象のシートに変えてください
  Set ws1 = ThisWorkbook.Worksheets("貼付元")
  Set ws2 = ThisWorkbook.Worksheets("貼付先")
  '
  Rmax& = ws2.Range("A65536").End(xlUp).Row
  For RR& = 1 To Rmax&
   wstr = ws2.Cells(RR&, 1).Value '値の参照は非表示列でも可なんですけどね
   Set r1 = ws1.Columns("A:A").Find(What:=wstr, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns)
   If Not r1 Is Nothing Then
     ws2.Cells(RR&, 2).Value = r1.Offset(0, 1).Value
   End If
  Next
  '
  Set ws1 = Nothing: Set ws2 = Nothing
End Sub

(V)LookUpを使うの方法の方が簡単だったりして。

>本当は直接書いたものを見せたいのですが、会社のなので、
>やめときます。あぁ・・、こんなことで何日も悩みっぱなしです。
 せっかくのお休みなのに...。 
 ───────────────────────────────────────  ■題名 : Re:検索したいのですが・・(FINDなど。)  ■名前 : kanon  ■日付 : 03/1/17(金) 15:23  -------------------------------------------------------------------------
   りんさん、こんにちわ。

遅くなって申し訳ありません、丁寧なご回答ありがとうございましたm(_)m
あれから、りんさんのを参考にして引き続きちまちまこつこつやって
なんとか作れました。
(が、Findがうまくいかなかったのは検索していた
文字が微妙に違ったようでした (^^;)・・・なんと情けない。)

私はCOBOLをメインにやっていて(そろそろ化石か・・?)
そっちのプログラミングも同時にやっていたので
ドタバタしつつも、連動したテストも完了して
今は細かい気になる点を直しています。

VBもほとんど分かってなかったので、今回はとても勉強になりました。
といっても、みなさんの足元にも及ばず基礎の基礎って段階です。
ヘルプやマニュアル、そしてこのようなHPがなくては生きていけません(笑)。
でもこれを機にもっと学んでいきたいと思います。
これからもお世話になりますm(_)m
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 564