• ベストアンサー

エクセル2003でフォームを作成しています。

エクセル2003でフォームを作成しています。 ネットワーク上にある”元データ.xls”のデータをもとに”集計.xls”にある フォームにデータを引っ張ってきたいと思っています。 ”集計.xls”には、コンボ1つと”元データ.xls”と同数のテキストボックスを設置してあります。 コンボには”元データ.xls”のA1:A1000までを課題番号としたものをRowSourceにセットしてあります。 コンボから課題番号を選ぶと、テキストボックスに”元データ.xls”の値を出したいのですが どうすればよいのでしょうか。 アクセスのSelect Fromのようなことをしたいと思っているのですが、すみません意味分かりますでしょうか。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

#1のimogasiさんはベテランの方で、嫌味で言っているとかいうことではありません。もう少し、感情的にならずに虚心に受け止めてください。言葉に言葉で反論しても意味ないと思います。 おそらく、ご質問のイメージのままでは解決には結びつかないと思います。 以下のコードから、ご質問で足らない部分がわかるはずです。大事なことは、どういうデータを検索するかで、方法は関係があまりありません。以下のコードは文字列を検索するようになっています。それを数字を検索するとなれば、また、コードが変わります。 >アクセスのSelect From Excelでも、もちろん、Select From は可能です。ADODBはわかりますか?もし、そうなら、そういう設定を考えなくてはなりません。外形だけで、「後は、良きに払え」と言われるのが一番困ります。 以下は、一例です。たぶん、そうでないと言われるのは承知の上ですが、言葉上から取れる内容は、この程度のものしか思い浮かばないということです。ただし、ADODBで作り直せと言われたら、このスレッドでは遠慮させていただきます。 使用コントロール UserForm 上で、 TextBox1 ListBox1 CommandButton1 // Private Const MYPATH As String = "\\public\Excel\" '←パス Private wb As Workbook Private Sub UserForm_Initialize()  Const FNAME As String = "temp.xls" 'ファイル名  On Error GoTo ErrHandler  Set wb = Workbooks(FNAME)  ThisWorkbook.Activate 'このブックをアクティベート  'wb.Activate '開いたファイルをアクティベート  Exit Sub ErrHandler:  If Dir(MYPATH & FNAME) = "" Then   MsgBox FNAME & " が見つかりません。", vbExclamation   Exit Sub  End If  If Err.Number = 9 Then   Workbooks.Open MYPATH & FNAME   Resume  ElseIf Err.Number > 0 Then   MsgBox Err.Number & " : " & Err.Description  End If End Sub Private Sub UserForm_Terminate()  '終了時  If Not wb Is Nothing Then   wb.Close False  End If End Sub Private Sub CommandButton1_Click()  Dim sText As String  Dim FirstAdd As String  Dim c As Variant  Dim rng As Range  Dim buf As Variant    If Trim(TextBox1.Value) = "" Then Exit Sub  buf = ""  sText = TextBox1.Text  '検索  With wb.Worksheets(1)   Set rng = .Range("A1", .Cells(Rows.Count, 1).End(xlUp))   Set c = rng.Find( _   What:=sText, _   LookIn:=xlValues, _   LookAt:=xlWhole, _   SearchOrder:=xlByColumns)   If Not c Is Nothing Then    FirstAdd = c.Address    buf = c.Value    Do     Set c = rng.FindNext(c)     If c.Address = FirstAdd Then Exit Do     buf = buf & "," & c.Value    Loop Until c Is Nothing   End If   If Len(buf) > 0 Then    ListBox1.List = Split(buf, ",")   Else    MsgBox "該当するものが見つかりません。", vbExclamation   End If  End With  Set rng = Nothing End Sub

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>集計.xls”には、コンボ1つと”元データ.xls”と同数のテキストボックスを設置してあります どういう意味? >元データ.xls”と同数のとは。元データ.xls”のあるシートのデータ行数と同数の、の意味か? なぜそんなに沢山テキストボックスを貼り付けるのか。 >コンボには”元データ.xls”のA1:A1000までを課題番号としたものをRowSourceにセットしてあります。 コンボの明細が1000行など、スクロールや探すことが面倒で、使いにくいのでは? >テキストボックスに”元データ.xls”の値を出したいのですが 質問文で前に出てくるテキストボックスとは別? 課題番号をセルに入力するか、1つのテキストに入力し、、その課題を別シートにだすとかすれば良いのでは。 質問者は、VBAは経験あるのですか? ーーー エクセルで仕事で他人(エクセルを知らない)に使わせようとしているようだが、質問者はまだ経験不足で、我流の仕組みを考えていないですか。 === したいことを、全体的に、文章で箇条書きでもして、もう少し設計段階のやり方まで含めて批判を仰ぐとか、質問すべきと思う。

hori_kumanoko
質問者

補足

質問者は経験不足で、我流の仕組みを考えていない、 とおっしゃいますが、 こちらのサイトは経験者で仕組みを理解していない人でないと 質問出来ないのですか? ほかの色々な質問を見ていても、みなさん手探りで質問を しているようですが。 質問の仕方は人それぞれだと思います。 設計段階のやり方まで含めて評価を仰いでいる人はそれほど多く居ません。 みなさんの質問を色々見て探しましたので。 がしかし、私の説明も確かに不足だと思いますので、次の質問で画像を添付します。 何をしたいのか、分かっていただけるといいです。 VBAはアクセスでほんの少しやっただけです。

関連するQ&A

  • エクセル2003でフォームを作成しています(2)

    エクセル2003でフォームを作成しています(2) ネットワーク上にある社員名簿.xlsの情報を使って、フォーム上で ぶっちゃけて言えばお金を使い過ぎていないかのチェックをします。 エクセルのワークシート上でやればいいと思うかも知れませんが 社員名簿.xlsは専用端末からおとしたいくつかのcsvを加工した ものから作成するので、ファイル名だけは常に同じですが、ボタン などは設置出来ないので、フォームを作成してデータだけを ひっぱってくることにしました。 詳細画面フォーム上の検索ボタンを押すと、 社員名簿.xlsのデータを元に作成したリストボックスの貼り付いた 別フォームが開き、該当者をクリックすると別フォームは閉じられ、 詳細画面フォームに社員名簿の情報がそれぞれのテキストボックスに 反映される、ということがまずやりたいのです。 別フォームにリストボックスを貼り付けたのは、それしかやり方を 知らないからです。 ※コンボボックスで作成していましたが、変更しました。 判定額というのは、ここまではOKという金額が総計を元に計算される 仕組みになっています(これからします)。 その下の小さなテキストボックスには判定額と総計を比べてOKか否か の何かを出すようになっています(これもこれからします)。

  • Excel ユーザーフォームでコンボボックスを使用してデータ入力

    Excelのユーザーフォームでコンボボックスを使用して、シートのデータを表示しています。 コンボボックス:ComboBox1 テキストボックス1-3:TextBox1-3 コンボボックスのRowSource:シート名!A2:C100 コンボボックスの変更時の動作: Me!TextBox1.Value = ComboBox1.Value とここまではできたんですが、テキストボックス2にシートのB列の値を、テキストボックス3にシートのC列の値を入れたいのですが、 どのようにしたらいいのでしょうか?

  • フォーム上で作成したデータをエクセルシートに転記

    テキストボックスやコンボボックスなどを配置したフォームを作成してデータをエクセルシートと保存していきたいのですが、上書きされてしまいデータが蓄積できません。 また、保存したデータをフォーム上に呼び出し若しくは検索して、データ修正を行った後に上書き保存できるようにしたいので、よろしくお願いします。 ※テキストボックスやコンボボックスなどのタグに対象のセル値を指定しています

  • エクセルでフォームを作成しています。(VBA)

    エクセルでフォームを作成しています。(VBA) フォームAで作成してあるリストボックスから選択して 取得した番号を フォームBにもってきて、その番号をもとにVLOOKUPで ほかのテキストボックスに値を持ってこようとしている のですがうまくいきません。 フォームAのリストボックスにはsheet1の名簿が 表示されています。 クリックで選択した名簿番号を取得して、フォームBにある 個人のページでその他の詳細を出そうとしています。 名簿番号はフォームBの名簿番号.Textに持ってこれたのですが その名簿番号をVLOOKUPで研究名を出そうとしてもうまくいきません。 コードのどこがだめなのか分かりません。 VBA入門者です。 よろしくお願いいたします。 --------------------- Private Sub 決定_Click() Dim ADR As Variant On Error GoTo ExitER Set ADR = Worksheets("sheet1").Range("A:F") 研究名.Text = Application.WorksheetFunction.VLookup(名簿番号.Text, ADR, 4, False) On Error GoTo 0 Exit Sub ExitER: MsgBox "一致するコードがありません" On Error GoTo 0 End Sub ---------------------

  • アクセスでOutputTOを使用してエクセルへ

    アクセスでOutputTo acOutputFormを使用して、エクセルへデータをエクスポートしています。 フォームには、コンボボックス1、コンボボックス2、テキストボックス1を用意し、 データを抽出し、フォーム上に表示されたデータのみをエクスポートしています。 エクスポートされたエクセルデータを確認すると、コンボボックス1、コンボボックス2、 テキストボックス1も、エクセルデータの項目としてエクスポートされてしまいます。 このコンボボックス1、コンボボックス2、テキストボックス1をエクセルに エクスポートしなようにする方法はありますか? 下記でエクスポートしています。 DoCmd.OutputTo acOutputForm, "F_設備", , "\\***\***\***\" & "book1.xls", True

  • EXCEL ユーザーフォームを使ったマクロ

    データの登録をするのにユーザーフォームを使おうと思うのですが、なかなかうまくいきません。教えてください。 ユーザーフォームにはコンボボックス、テキストボックス、コマンドボタンが貼り付けてあります。(コンボボックスのリストには呼び出したいシートの名前が入っています) コンボボックスのリストの中から呼び出したいシートを選択し、テキストボックスに入力した内容を、コマンドボタンを押すことで選択されたシート上の、あるセルに登録したいのですがどうすればよいでしょうか?

  • excel vba ユーザーフォーム

    現在、セルa101からa110までに「商品名」、セルb101からb110までに「金額」が 入力済みです。 このデータを、ユーザーフォーム上にコンボボックスを2つ作成し、セルa1へ 商品名を選択後、入力。また、b2へ金額を選択後、入力させたいのです。 また、ユーザーフォーム上にテキストボックスを作成し、ここに入力した 「備考」の全角10文字をc1へ移動したいです。 今のところ、ユーザーフォーム、コンボボックス、テキストボックスを作成した だけで 立ち往生しています。 どなたか、ご教授お願いいたします。

  • 困ってます!Accessフォームのコンボボックス

    初心者です。とーっても困っています・・・。 顧客データを登録しているのですが、テーブルを元に登録フォームを作成しました。 商品がたくさんあって、4つのコードに分かれています。フォームの中に[A][B][C][D]と4つのコンボボックスを作成し、絞込み検索ができるようにはしました。 が、しかし、選んだデータがテーブルに表示されません。例えば[A]のコンボボックスの中から[1010]を選択、テーブルを見ると、他のテキストボックスに入力した情報は保存されているけど、コンボで選んだデータは空白です。 誰か助けてください!!よろしくお願いします。

  • excel 2003 vba コンボボックス 日付

    始めまして初心者です。よろしくお願いします。 ワークシートのA列に日付、B列に作業内容、C列に作業人員が入力されているとします。 それをユーザーフォームから操作したいです。 ユーザーフォーム上にコンボボックスとテキストボックス1,2を設置しています。 コンボボックスのRowSourceにA列日付をセットしています。 コンボボックスを操作すると、その日付のB列、C列の内容をそれぞれテキストボックス1,2に表示させたいです。

  • エクセル VBA フォーム設定について

    いつもお世話になっています。 エクセル VBAでユーザーフォームについて教えてください。 あるシートのデータをフォームに読み込み、違うシートにそのデータを書き込んでいます。元データの列順と書き込むシートの列順が違うので、VBAで設定して使っています。 書き込みはうまくいっています。ただ、書き込む際にフォーム上で少しデータを修正して書き込みを行うのですが、編集したいフォーム上のテキストボックスをクリックすると、データの最後のほうにカーソルが飛んでしまいます。 テキストボックスをできるだけ大きくして対応していますが、限度があります。テキストボックスをクリックした際にデータの最後(文字データで言うと文章の最後を表示してしまう)まで動かずに、クリックしても先頭のままになるようにするにはどうすればいいのでしょうか。 同じように、コンボボックスもクリックするとリストの最後から表示されます。リストの先頭から表示させる方法を教えてください。

専門家に質問してみよう