• 締切済み

Excel マクロ VB 追加命令について

TOPページから条件を記入しその条件にあった場所に追加するという作業がうまくいきません。この全ワークシート検索を追加に変えることができないでしょうか? Private Sub Command検索_Click() MyTxt = Text検索.Value If MyTxt = Empty Then MsgBox ("検索するキーワードを入力してください") Exit Sub End If Found = False For Each s In Worksheets Set MyData = s.Range("A3").CurrentRegion Set MyFid = MyData.Find(MyTxt) If Not MyFid Is Nothing Then Found = True Exit For End If Next s If Found = False Then MsgBox ("該当するキーワードが見つかりません") Else MyKRow = MyFid.Row MyKRow2 = MyFid.Row For MyKcnt = 0 To 14 Val1(0, 0) = s.Cells(MyKRow, MyKcnt + 1).Value MyKmo(0, MyKcnt) = Val1(0, 0) Sheets("サーチ").Select Cells(4, MyKcnt + 1).Value = Val1(0, 0) Sheets("TOP").Select ' MyKmo(0, MyKcnt) = Cells(MyKRow, MyKcnt + 1).Value Next Sheets("サーチ").Select Cells(4, 15).Value = MyKRow Sheets("TOP").Select MyREC = 1 Form検索H.LabelREC = MyREC Form検索H.LabelROW = MyKRow List結果.List = MyKmo End If End Sub よろしくご指導お願いします

みんなの回答

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.6

やっとUserFormの情報がアップされましたね。(^^;;; こういう重要な情報は最初でアップしないと拙いですよ。 それを踏まえて質問の補足を最初のものから読み直してみたのですが、矛盾点が多く、明瞭には全体像が浮かんできません。 このままではほんとに埒があきませんので、そのファイルをどこかにアップしてそこのURLをここに書いてもらうことです。 もちろん中身は公にしていいもの意外は空にして。 そうすれば、質問者と同じものを見ながらやり取りができますので。 例えば、Yahooブリーフケースなどを利用。 以上です。  

haku5877
質問者

補足

早速Yahooブリーフケースを利用したいのですが、データが会社にあり、アップするのは月曜日に以降になると思います。 なかなか、要点だけをお伝えすることができず申し訳ありません。 なるべく早くアップしたいと思います。 よろしくご指導よろしくお願いします。

すると、全ての回答が全文表示されます。
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.5

UserFormの情報、なぜ明らかにしないか不思議です? 補足を読み、分かったことと、ますます分からなくなったことがあります。 何れにしろこれでは埒があかないので、以下のようなサンプルをアップしようと思いますがどうでしょう。 ----------------------------------------------------- ●シートは、TOP,TDK,TOKOの3枚とする ●3枚ともレイアウトは同じとする ++++A+++++B+++++C+++++D+++++ 1+++型式+++メーカー++サイズ++++数量++++ 2  TOPシートの場合、この2行目をデータ入力用にする ●TOPの「2行目のみ」をデータ入力用にする ●TOPにボタンをひとつ置いておく ●データ入力後、ボタンを押すと、「型式」と「サイズ」でメーカーシートを検索し、  ヒットしたら、数量をプラス  ヒットしなかったら、メーカーシートの最後の行+1にデータを追加 ●処理が済んだら、次のデータ用に入力用行(2行目)をクリア ----------------------------------------------------------- OKでしたら、その旨投稿願います。 夕方までにはサンプルファイルのURLをアップしたいと思います。 以上。  

haku5877
質問者

補足

たびたびすみません、UserFormを貼り付けようとしていてそれができなかったため投稿できませんでした。今TOPページから検索ボタンを押したときに出てくるFormは ------------------------------------------------------------- 検索するキーワードを記入 「__________」 検索 次へ 終了 検索結果  0件目 レコード行数「___」    型式    L(H) 電流 メーカー サイズ 数量 保管場所 「______________________________」 --------------------------------------------------------------- 検索のFormとなっています。検索のUserformはこれでよかったでしょうか? 追加のFormは ---------------------------------------------------------------                       追加 終了            型式 「_________________________」  L(H)     電流    メーカー 「___」  「___」 「____」  サイズ    数量 「___」  「___」 -------------------------------------------------------------- このようになっています。いかがでしょうか? また、onlyromさんが書かれている追加の方法については、そのやり方で間違いありません。 何度も、不快な思いをさせてしまいすみません。 よろしくご指導お願いします。

すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

こんにちは、ham_kamoです。 いろいろ補足追加をお願いしようと思ったら、No.3の方が非常に的確な指摘をしてくださいました。こちらからはフォームもシートのフォーマットも見えません。とりあえず必要な情報を補足してください。 前回の質問で、MyDataなどが宣言されている場所がご自分でわからなかった、ということは、これは他の人が作ったものをメンテしているのですよね?最初に作った人がいれば、その人に聞くのが一番手っ取り早いのですが…(でも多分いないからここで質問されてるのですよね) とりあえず、 ・「追加」ボタンを押したときの検索条件 No.3の方も書いておられますが、検索条件は「型式」「数量」だけなのか、それとも検索のための入力フィールド(Text検索)があって、見つからなかったときに追加するための情報として別に「型式」「数量」を入力するテキストフィールドがあるのか。その場合それらのTextBoxの名前は? ・「追加」ボタンを押して全シート検索を行い、検索にヒットしたときの処理 サーチ処理の初期設定にあるように、検索でヒットした行のG列に数量が入っていて、そこに入力した数量を加算してそのセルを上書きする、というのでいいのか。 ・検索にヒットせず、追加するときの処理 どのシートの(シート名、あるいはシート番号、「最後のシート」などの条件)、どこのセルに「何の情報」を追加するのか。 単に型式と数量だけならいいのですが、初期化処理に出てくる「メーカー」やら「サイズ」やら、そういう情報も追加するのか。するのであれば、それは「追加」ボタンを押す前にフォームの何という名前のTextBoxに入っているのか。それらが空のときのエラー処理はあるのか。 などなど、疑問はつきません。できる限りの補足をお願いします。

haku5877
質問者

補足

たびたびの説明不足本当に申し訳有りません。 質問の方をしておいて説明がなかなかうまくいかずお手間を取らせてすみません。 早速疑問のほうですが、 ・「追加」ボタンを押したときの検索条件 追加ボタン押して出てきた項目をお書きします。記入項目は、「型式・メーカ・サイズ・数量」です。これらを記入し追加ボタン押すということになります。 ・「追加」ボタンを押して全シート検索を行い、検索にヒットしたときの処理 については、ham_kamoさんが書かれたやり方で間違い有りません。 ・検索にヒットせず、追加するときの処理 どのシートに、については、型式もしくはメーカが同一のシートにという風にしたいと思っています。どこのセルに、については型式もしくはメーカが同一のシートの一番下に追加で記入した内容すべてを追加していく形にしたいと思っています。 空の時に出るエラーとして、追加記入の際、型式が記入されていない・数量が記入されていない・の2つの時にエラー処理ができればと思っています。 まだまだ、説明がおこたらない部分が多いとは思いますが よろしくご指導お願いします。

すると、全ての回答が全文表示されます。
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

>TOPページから型式・数量・etcを検索し追加するというもので これはシートTOP「の中」を検索し、そこに新規追加、又は数量プラス という意味ではありませんか? >型式・数量・etcを検索し といかにも「etc」その他の項目も検索するように書いておきながら、 >その際型式・数量を入力し と、検索用「etc」その他の項目は入力しないと書いてある。 他にも多々疑問な点があります。 何れにしろ質問者は説明が苦手なように思えますので、 UserFormのコントロールとその目的 本物のシート名一覧 検索するシート名、実際にデータを追加するシート名 そして、それらの実際のレイアウトをアップした方がいいと思います。 コードとしては単純なものですので、上記のことが分かればすぐ的確な回答が寄せられると思います。  

haku5877
質問者

補足

たびたび、説明不足等まことに申し訳ありません。 まず、全シート名はT「TOP・TDK・SUMIDA・TAIYOYUDEN・TOKO・MARUWA・MURATA・NEC・コンデンサ・FET・IC・レギュレータ・コネクタ・ソケット・ダイオード・抵抗・トランジスタ・端子・その他・基盤」が全シート名です。また、シート1から順番になっています。 検索するシートは、検索ボタンを押した際に「検索するキーワード」をいれ検索を押すと、「型式・メーカ・サイズ・数量・保管シート場所」 を表示するようになっています。 追加するシート名は、「型式・メーカ・サイズ・数量」です。 onlyromさんのご質問のことですが、 まず、Excelシートは、シート1をTOPシートとし、約シート1~10まであり、シートごとに種類等は違いますがデータの書き方は「型式・メーカ名・容量・数量など」といった書き方で書いています。 >型式・数量・etcを検索し については、TOPページから、例えば「時計と検索した場合、その型式・メーカ・数量など」どこのシートにあるのかを見ていると思っていただいていいと思います。 >その際型式・数量を入力し については、もちろん検索と同様の項目を記入します。記入した上で 型式が同じものがあれば追加する際に記入した数量を足す形とし、一致する型式が無い場合適切なシートに新規で追加するというものです。 まだ説明不足なところもたた多いと思いますが、そのつどご説明できればと思っていますので。ご指導のほうよろしくお願いいたします

すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

こんにちは、昨日までの続きですね。 もうちょっと具体的にやりたいことを補足していただけませんでしょうか。 元々の検索は、TOPページからフォームでテキストボックスに検索文字列を入力し、「検索」を押すと全シートから検索して、検索でヒットしたセルがある行の内容をサーチシートの4行目に転記してさらにリスト表示されるというもので、「次へ」を押すと次の検索結果がさらにその下に表示される、という処理ですよね。 「初期条件の項目に記入することでその項目と一致するシートに追加する」 「条件で数量を記入して追加した場合もし、一致するものが見つかった場合数量をプラス」 というのが、具体的にわかりません。特に「数量をプラス」という部分。 ・検索条件として、キーワードだけでなく数量も条件に加えるのか ・それとも検索条件はキーワードだが、検索時に数量も同時に指定し、検索でヒットしたシートのどこかに、指定した数量を転記するのか。 ・どちらの場合にせよ、「数量」というのは検索時にどこで指定されるのか。シートのどこに書かれている(あるいは書き加える)のか。 以上、補足をお願いいたします。

haku5877
質問者

補足

説明不足ですみません。 実際、今私が作っているものは在庫表なのですが、それには型番・数量など記載する必要があるのです。この間の全ワークシート検索では、シートごとに種類を分けていたためTOPページから全ワークシート検索で検索するというものを教えていただきました。  今回は、TOPページから型式・数量・etcを検索し追加するというもので、その際型式・数量を入力し追加ボタンを押したときに一度全ワークシートから同一のものがあるかを検索、もし無ければ新規で追加する。もし同一のものがあれば、記入した数量とすでに在庫表にある数量とを足したものを記載するという風にしたいと思っています。  ham_kamoさんが言われた中ですとおそらく、「・どちらの場合にせよ、「数量」というのは検索時にどこで指定されるのか。シートのどこに書かれている(あるいは書き加える)のか。」になるのではないかと思います。 なかなか、説明があまりうまいほうではないので何かとご迷惑をおかけしますが、よろしくご指導よろしくお願いします。

すると、全ての回答が全文表示されます。
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

途中の Next s を削除 最後の End If の後に、 Found = False Next s を挿入しれば、全シートを検索して同じ処理を行えます。 >TOPページから条件を記入しその条件にあった場所に追加するという作業がうまくいきません。 ”その条件にあった場所に追加”というのが、どこにどのように追加するのかちょっと解りかねます。

haku5877
質問者

補足

その条件にあった場所に追加”について先ほどの質問で追加するための条件と、場所というのが文字数を超えてかけませんでした。すみません 以下の初期条件の項目に記入することでその項目と一致するシートに追加するという風にしたいのですが、いかがでしょうか? ' 初期化処理 Private Sub UserForm_Initialize() Sheets("サーチ").Range("A1:Z200").Clear Sheets("サーチ").Select Cells(1, 1).Value = "検索結果" Cells(1, 3).Value = "検索条件" Cells(3, 1).Value = "型式" Cells(3, 2).Value = "インダクタンス(H)" Cells(3, 3).Value = "定格電流" Cells(3, 4).Value = "L許容誤差" Cells(3, 5).Value = "メーカー" Cells(3, 6).Value = "サイズ" Cells(3, 7).Value = "数量" Cells(3, 8).Value = "DCR(Ω)" Cells(3, 9).Value = "DCR誤差マスナス" Cells(3, 10).Value = "DCR誤差プラス" Cells(3, 11).Value = "自己共振周波数(GHz)" Sheets("TOP").Select End Sub この、条件で数量を記入して追加した場合もし、一致するものが見つかった場合数量をプラスするようにもしたいのですが、できますでしょうか? よろしくご指導お願いします。

すると、全ての回答が全文表示されます。

関連するQ&A