Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11949 / 13646 ツリー ←次へ | 前へ→

【12998】Selection.FindでのWhatの値 マクロ初心者 04/4/20(火) 20:18 質問
【13007】Re:Selection.FindでのWhatの値 IROC 04/4/21(水) 8:45 回答
【13019】Re:Selection.FindでのWhatの値 マクロ初心者 04/4/21(水) 14:20 質問
【13020】Re:Selection.FindでのWhatの値 IROC 04/4/21(水) 14:32 回答
【13021】Re:Selection.FindでのWhatの値 マクロ初心者 04/4/21(水) 15:14 質問
【13029】Re:Selection.FindでのWhatの値 IROC 04/4/21(水) 16:42 回答
【13033】Re:Selection.FindでのWhatの値 マクロ初心者 04/4/21(水) 17:02 質問
【13043】Re:Selection.FindでのWhatの値 IROC 04/4/21(水) 20:14 回答
【13045】Re:Selection.FindでのWhatの値 マクロ初心者 04/4/21(水) 20:21 質問
【13078】Re:Selection.FindでのWhatの値 マクロ初心者 04/4/22(木) 14:14 質問
【13169】Re:Selection.FindでのWhatの値 マクロ初心者 04/4/25(日) 17:28 お礼[未読]

【12998】Selection.FindでのWhatの値
質問  マクロ初心者 E-MAIL  - 04/4/20(火) 20:18 -

引用なし
パスワード
   メールアドレスのリストが2つあり、AのリストのアドレスをBのリストで検索してあれば、そのセルを削除していくというVBAを作ろうとしているのですが、

ボタンを押すと実行するようにして、
Private Sub CommandButton1_Click()
  
  Dim touroku_Ad As String
  Dim sousin_Ad As String
  Dim Sheet_obj1 As Worksheet
  Dim search_res As Integer
  
  Sheet1.Select
  Set Sheet_obj1 = ActiveSheet
  touroku_Ad = Sheet_obj1.Cells(2, 4)←リストAのアドレスを1つ取得
  Sheet_obj1.Range(Selection, Selection.End(xlDown)).Select←リストBの範囲を選択
  search_res = Macro3(touroku_Ad)
End Sub

Function Macro3(touroku_Ad As String) As Integer

  Dim adress As String
  adress = touroku_Ad

  Selection.Find(What:=touroku_Ad, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate
End Function

上記のようにマクロを呼び出すようにして検索する文字列(What:=のところ)
を変数で指定すると、エラーが出てしまいます。普通の""でくくられた文字列に
すると問題なく動作するのですが、

エラー内容は
「オブジェクト変数またはWithブロックが設定されていません」
とでます。色々ヘルプやネットを見て調べてみたのですが、
どうしてもわかりません。

どうかヨロシクお願いします。

【13007】Re:Selection.FindでのWhatの値
回答  IROC  - 04/4/21(水) 8:45 -

引用なし
パスワード
   リストの範囲が良く分かりませんが、
1列にデータを入力して、
フィルタオプションの重複無視は使えませんか?

【13019】Re:Selection.FindでのWhatの値
質問  マクロ初心者 E-MAIL  - 04/4/21(水) 14:20 -

引用なし
パスワード
   ▼IROC さん:
>リストの範囲が良く分かりませんが、
>1列にデータを入力して、
>フィルタオプションの重複無視は使えませんか?

回答ありがとうございます。
説明不足だったですね(汗)

A列   B列     C列
abc@... reww@...   cde@...
cde@... gewads@...  kiaj@...
efg@...  kiaj@...    dddd@...
hij@...  jhaa@...    .
der@... kiono...   .
.    .        .
.    .
.    .

というリストがあって、C列にあるアドレスを
A列、B列から検索して、あれば、その列にあるデータを
削除するというものなのですが、マクロ使うまでもなく
できるのであればそれが一番なんですけど…
どうなのでしょうか?

【13020】Re:Selection.FindでのWhatの値
回答  IROC  - 04/4/21(水) 14:32 -

引用なし
パスワード
   A、B、C列の合計件数が、65536以下であれば、

全部をコピーで1列にまとめて
データ フィルタ フィルタオプションの設定 →重複無視にチェック
をお試し下さい。

【13021】Re:Selection.FindでのWhatの値
質問  マクロ初心者 E-MAIL  - 04/4/21(水) 15:14 -

引用なし
パスワード
   ▼IROC さん:
>A、B、C列の合計件数が、65536以下であれば、
>
>全部をコピーで1列にまとめて
>データ フィルタ フィルタオプションの設定 →重複無視にチェック
>をお試し下さい。

回答ありがとうございます!
できました!
ですが、実際は検索対象のアドレスリストが40万件近くあり
それが、1つのファイルに列で分けられてリスト化されています。
つまり、実際はA,B列だけでなく沢山列があって1列が4万件以上
ある状態なのでこの場合、一度のすべて抜くにはどうしたらよいので
しょうか?

【13029】Re:Selection.FindでのWhatの値
回答  IROC  - 04/4/21(水) 16:42 -

引用なし
パスワード
   いったん全てのアドレスを Dictionary オブジェクト にキーとして格納して、
あとから、keysメソッドで、はきだしては如何でしょうか?

Dictionary オブジェクト の「キー」は重複しないので、出来るかもしれません。

【13033】Re:Selection.FindでのWhatの値
質問  マクロ初心者 E-MAIL  - 04/4/21(水) 17:02 -

引用なし
パスワード
   ▼IROC さん:
>いったん全てのアドレスを Dictionary オブジェクト にキーとして格納して、
>あとから、keysメソッドで、はきだしては如何でしょうか?
>
>Dictionary オブジェクト の「キー」は重複しないので、出来るかもしれません。

回答ありがとうございます。
先程のオートフィルタもそうですし、この方法もそうなのですが、
重複しているものを完全に削除したいのです。
つまりリストから削除したいということなのですが…
フィルタを使うと重複しているものが消えても1つは必ず
表示されますよね?
本当にごめんなさい。説明不足で…


A列   B列     C列
abc@... reww@...   cde@...
cde@... gewads@...  kiaj@...
efg@...  kiaj@...    dddd@...
hij@...  jhaa@...    .
der@... kiono...   .
.    .        .
.    .
.    .

とあって僕がやりたいのはこれを
列   B列     C列
abc@... reww@...   cde@...
efg@... gewads@...  kiaj@...
hij@...  jhaa@...    dddd@...
der@...  kiono...    .
.    .        .
.    .        .
.    .

このようにC列にあるアドレスを検索対象から
完全に削除したいんです。
本当に説明不足でもうしわけありませんでした。
回答お願いできますでしょうか?

【13043】Re:Selection.FindでのWhatの値
回答  IROC  - 04/4/21(水) 20:14 -

引用なし
パスワード
   列はたくさんあるのでしょう?

C列をキーに、A列とB列から同じものを探せばよいのですか?

【13045】Re:Selection.FindでのWhatの値
質問  マクロ初心者 E-MAIL  - 04/4/21(水) 20:21 -

引用なし
パスワード
   ▼IROC さん:
>列はたくさんあるのでしょう?
>
>C列をキーに、A列とB列から同じものを探せばよいのですか?

はいそうです。C列にあるデータをキーにして
複数列にあるデータの中から検索し、
そのデータを削除したいのです。

それで最初のマクロに戻るんですけど、
Private Sub CommandButton1_Click()
  
  Dim touroku_Ad As String
  Dim sousin_Ad As String
  Dim Sheet_obj1 As Worksheet
  Dim search_res As Integer
  
  Sheet1.Select
  Set Sheet_obj1 = ActiveSheet
  touroku_Ad = Sheet_obj1.Cells(2, 4)←リストAのアドレスを1つ取得
  Sheet_obj1.Range(Selection, Selection.End(xlDown)).Select←リストBの範囲を選択
  search_res = Macro3(touroku_Ad)
End Sub

Function Macro3(touroku_Ad As String) As Integer

  Dim adress As String
  adress = touroku_Ad

  Selection.Find(What:=touroku_Ad, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate
End Function

というようにして、後はmainのPrivate Sub CommandButton1_Click()
の中で、同じ処理をループすればよいのかなぁ?と思ってるんですけど…
どうなのでしょうか?

【13078】Re:Selection.FindでのWhatの値
質問  マクロ初心者 E-MAIL  - 04/4/22(木) 14:14 -

引用なし
パスワード
   ▼マクロ初心者 さん:
>▼IROC さん:
>>列はたくさんあるのでしょう?
>>
>>C列をキーに、A列とB列から同じものを探せばよいのですか?
>
>はいそうです。C列にあるデータをキーにして
>複数列にあるデータの中から検索し、
>そのデータを削除したいのです。
>
>それで最初のマクロに戻るんですけど、
>Private Sub CommandButton1_Click()
>  
>  Dim touroku_Ad As String
>  Dim sousin_Ad As String
>  Dim Sheet_obj1 As Worksheet
>  Dim search_res As Integer
>  
>  Sheet1.Select
>  Set Sheet_obj1 = ActiveSheet
>  touroku_Ad = Sheet_obj1.Cells(2, 4)←リストAのアドレスを1つ取得
>  Sheet_obj1.Range(Selection, Selection.End(xlDown)).Select←リストBの範囲を選択
>  search_res = Macro3(touroku_Ad)
>End Sub
>
>Function Macro3(touroku_Ad As String) As Integer
>
>  Dim adress As String
>  adress = touroku_Ad
>
>  Selection.Find(What:=touroku_Ad, After:=ActiveCell, LookIn:=xlFormulas, _
>    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
>    MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate
>End Function
>
>というようにして、後はmainのPrivate Sub CommandButton1_Click()
>の中で、同じ処理をループすればよいのかなぁ?と思ってるんですけど…
>どうなのでしょうか?

すいません、また説明不足でした。
それでマクロに検索するアドレスを引数としてマクロに渡して
Whatの値を引数にすると最初に書いたようにエラーになるんです。
どうしたらよいのか本当に困っています…
よろしくお願いします。

【13169】Re:Selection.FindでのWhatの値
お礼  マクロ初心者 E-MAIL  - 04/4/25(日) 17:28 -

引用なし
パスワード
   解決したので一応お知らせしておきます。

色々と相談に乗ってくれてありがとうございました。

11949 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free