• ベストアンサー

インプトボックス関数を使って・・

A列:通し番号1から順に,B列:氏名,C列:電話番号 等 データの入ったシート1からインプットボックスに通し番号の数字を入力してOKボタンを押すと、該当するの氏名、電話番号が別のシート2の設定場所、たとえば、セルC1へ氏名、セルE1へ電話番号を移す方法を。マクロがうまくいきません。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

#3 です。 > Worksheets("Sheet2").Range("C1") = _ > Worksheets("Sheet1").Cells(Numv + 1, 3) ご質問文によると、氏名は Sheet1 の B 列ですから、ここは Worksheets("Sheet2").Range("C1") = _ Worksheets("Sheet1").Cells(Numv + 1, 2) かと。同様に電話番号は Sheet1 の C 列ですから、 Worksheets("Sheet2").Range("E1") = _ Worksheets("Sheet1").Cells(Numv + 1, 3) ということでしょうか? Cells(Numv + 1, 3) のように +1 してるのは、A1 が見出しで A2 から番号が始まってるからかな? それから、余談ですが、 > Dim Numv As Integer は Dim Numv As Long にして下さい。Integer 型は16ビット の変数で 、-32,768 ~ 32,767 の範囲の整数しか扱えません。 Excel の最大行番号は 65,636 なので Long を使った方が間違い ありません。

hirosatonn
質問者

お礼

ありがとうございます。 これの応用がうまくいきません。 ご教授いただければ・・・

その他の回答 (4)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.4

動作には問題無いようですが・・・。 うまく行かないのは、どの動作なのですか? >Cells(Numv + 1, 3) "+ 1" する理由はなんでしょうか? データチェックに関しては、 Dim Numv As Variant Dim min As Long Dim max As Long min = 1 max = 1000 'InputBoxで番号を入力させて移す Do Numv = Application.InputBox("番号を入力してください。", "番号入力", Type:=2) If TypeName(Numv) <> "Boolean" Then If Numv >= min And Numv <= max Then Exit Do Else Exit Sub End If Loop のようにすると良いかも知れません。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。KenKen_SP です。 他の方もコメントされてますが、、、 1. ご自分でどこまでやったのでしょうか? 2. どのようにうまくいかないんでしょうか? 3. 使うソフト名とバージョン、OS名は? これらの情報がないと、推測による回答になってしまいます。直ぐに回答が ほしい、とありますので、ご質問文から推測し得る範囲で書いたサンプルを アップしてみます。ご参考下さい。 Sub Sample()   Dim strCode    As String   Dim lngEndRow   As Long   Dim rngSearchArea As Range   Dim rngFoundCell As Range   'A列の最終データがある行番号を取得   lngEndRow = Range("A65536").End(xlUp).Row   '番号の検索範囲を取得   Set rngSearchArea = Sheets("Sheet1").Range("A2:A" & lngEndRow)   'InputBoxメソッドで番号を入力させる   strCode = Application.InputBox(Prompt:="番号を入力", Type:=2)   'キャンセルの場合の処理   If UCase$(strCode) = "FALSE" Then Exit Sub   '入力された番号のデータを探がす   Set rngFoundCell = rngSearchArea.Find(What:=strCode)   '該当するセルは見つかったか?   If rngFoundCell Is Nothing Then     '変数rngFoundCellが空なら該当セルがないのでメッセージ表示     MsgBox "該当セルはありません", vbExclamation, "検索結果"     'プログラム終了     Exit Sub   Else     '該当セルがあった場合     With rngFoundCell       '該当セルから1列横のセルの値をSheet2!C1に転記       .Offset(0, 1).Value = Sheets("Sheet2").Range("C1").Value       '該当セルから2列横のセルの値をSheet2!E1に転記       .Offset(0, 2).Value = Sheets("Sheet2").Range("E1").Value     End With     '転記成功メッセージを表示     MsgBox "転記しました", vbInformation   End If   '後始末   Set rngFoundCell = Nothing   Set rngSearchArea = Nothing End Sub

hirosatonn
質問者

補足

サンプルまでありがとうございます。 エクセル2002でのOSはXPです。 マクロは駆け出しなもので私が考えたのは次のとおりです。 Sub 転記() Dim Numv As Integer 'InputBoxで番号を入力させて移す Numv = Application.InputBox("番号を入力してください。", "番号入力", Type:=2) Worksheets("Sheet2").Range("C1") = _ Worksheets("Sheet1").Cells(Numv + 1, 3) Worksheets("Sheet2").Range("E1") = _ Worksheets("Sheet1").Cells(Numv + 1, 4) End Sub

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

どう、うまくいかないんでしょうか? Sheet1のA1からデータが入っている場合、以下のような感じになると思いますが。 Sub test() ans = Application.InputBox("番号を入力してね", type1) Sheet2.Cells(1, 3) = Sheet1.Cells(1, 2).Offset(ans - 1) Sheet2.Cells(1, 5) = Sheet1.Cells(1, 3).Offset(ans - 1) End Sub

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>マクロがうまくいきません。 どこがうまく行かないのですか? うまく行かない部分の症状とその前後のコード等を提示してください。

関連するQ&A

  • Excelの関数を使ったら出来ますか?

    いま、Excelで以下のような表を作成しています。 (Sheet1) A列 該当者氏名 B列 該当者整理番号 C列 D列 (Sheet2) A列 書類番号  B列 該当者氏名 C列 該当者整理番号 (Sheet1)の該当者番号を入力したとき (Sheet2)に、(Sheet1)に入力した該当者番号と同じものがあった場合 (Sheet1)の C列に「○」を自動的に表示させたいです。 さらに、できれば同様に (Sheet1)の該当者番号を入力したとき (Sheet2)に、(Sheet1)に入力した該当者番号と同じものがあった場合 (Sheet1)の D列に(Sheet2)のC列の書類番号を自動的に表示させたいです。 関数でできるようであれば、教えてください。 自分なりに考えついたもので試してみたのですが どうも、うまくいかないんです。。。 よろしくお願いします。

  • EXCEL関数について

    EXCEL関数について EXCEL2003を使用しております。 お知恵を拝借願います。 Sheet1、A列、A2~A100セルに「1~10」の数字がランダムに入力されています。 数字は「グループ1」、「グループ2」・・・「グループ10」という意味です。 Sheet1、B列、A2~A100セルに「1~20」及び、「OK」、「NG」がランダムに入力されています。 Sheet2、A列、A2~A21セルに「1~10」までの数字(グループ)が順に入力されており、 Sheet2、1行目、B1~W1セルに、「1~20」及び「OK」、「NG」が順に入力されております。 ここで、Sheet2のB2セルに、Sheet1にて「グループ1」は 「1」をいくつ選択しているかを返す式を入れたいのですが、 SUMIF?COUNTIF?等でいろいろと試してみたのですが、うまくいきません。 同じように、C2セルであれば、「グループ1」は「2」をいくつ選んでいるか。 W5であれば、「グループ4」は「NG」をいくつ選んでいるかの式を入力したいのです。 拙文乱文、大変恐縮ですが、ご教示頂きたく何卒宜しくお願い致します。

  • エクセルでこんなジャンプ出来ますか

    Sheet2    A     B   C  D    E   F   G     H 3  no.   氏名     no.   氏名     no.   氏名 4 100001 山本A   102001        104001 伊藤F 5 100002        102002 佐藤D   104002  6 100003 鈴木B   102003        104003 中村G 7 100004 高橋C   102004 山田E   104004 :   :    :       :     :       :     : Sheet1    A     B    C   3  no.   氏名  回数   4 104003 中村G   3 5 100004 高橋C   5 6 102003 :   :    :    : Sheet2の表を基にSheet1のような表を作成したい。 Sheet2には約2万件の番号が登録されています。 Sheet1のA列のno.は番号順に入力されるわけではない。 Sheet1のA列にno.を入力するとSheet2より該当の氏名をB列に表示、 該当氏名が空白の場合は、Sheet2の該当セルにジャンプし、氏名入力後Sheet1のC列にジャンプして戻る。 また、Sheet2において例えば、B1に104001を入力するとH4にジャンプしEnterを押すとB1に戻り、100002を入力するとB5にジャンプ氏名入力後Enterを押しB1に戻る。・・・ということもしたいのですがマクロではなく関数で出来るでしょうか?

  • if関数とVLOOKUP関数について

    if関数とVLOOKUP関数について エクセル2003で以下のような表を2枚 (シート1とシート2です)作成しています。 上段がシート1で、左上「NO」からA1セルに なっています。 下段がシート2で、特別番号が付番される 人の対象者リストで、「氏名」 がA1セルです。 図が乱れてすいません。 シート1のB列の売上日、C列の氏名は 別ファイルから貼り付けています。 シート2は、特別番号を付番する人の 氏名リストですが、ここでは、便宜上 小文字のアルファベットにしています。 ここでしたい処理ですが、売上日及び氏名を シート1に貼り付けた際に、特別番号対象者 (シート2のリストに挙がっている人) が入ってきたとき、自動的にシート1の A列のNOの列に「特別番号」 との文言を表示させたいのです。 実際に数字を表示するのではなく、 「特別番号」の文字列を表示させたいです。 IF関数とVLOOKUP関数でできると思うのですが よくわかりませんでしたので、教えてください。 NO 売上日 氏名 1 1月1日 A 2 1月2日 B 特別番号 1月3日 a 特別番号 1月4日 b 特別番号 1月5日 c 3 1月6日 D 4 1月7日 E 特別番号 1月8日 e 特別番号リスト(シート2) 氏名 住所 a 東京都 b 大阪府 c 神奈川県

  • エクセル関数について

    こんばんは。 エクセル関数に関して、質問させてください。 今現在、エクセルであるデータを作っているのですが、 そこに例えばB2セルに東京、C2セルに3という数字が、またB3セルに大阪、C3セルは空欄になっているとします。 そこで、C列に数字が入っている場合のみ、B列の都道府県名と、それに対応するC列の数字を他のシート(同じシートでも可)に書き出すようにしたいのですが、そのような関数はあるのでしょうか。 最終的には、マクロを組んで、自動化させたいのですが… 長々と申し訳ありませんが、よろしくお願いいたします。

  • EXCELでの検索マクロを作りたいのですが

    マクロの初心者です。氏名の検索マクロを作成したいのですが分かりません。 A列:名前 B列:郵便番号 C列:住所 と 名前等のデータを(ランダムに)入力したシート1を作成し、 シート2にシート1の「A列:名前」から性(たとえば青木)で検索して検索ボタン(マクロボタン)を押して該当データを表示させるようにしたいのですが。

  • エクセルのVLOOKUP関数で・・・

    3時間ほど色々頑張ったのですが、もうお手上げなので教えて下さい・・・。 エクセルでシートが2つあり、シート2から一致するデータのみをシート1に持って行きたいのです。 具体的にはシート1には「F列/カナ氏名・G列/漢字氏名・H列/顧客番号・I列/生年月日」が設定されています。 ただしH列には顧客番号が入力されていません。 シート2より生年月日をキーにして引っ張ってくる予定です。 シート1には1000件データがあり、シート2に載っている該当者が200件程ヒットする予定です。 シート2には「A列/生年月日・B列/カナ氏名・C列/漢字氏名・E列/顧客番号」が設定されています。 仮に1行目からデータが入っているものとして、シート1のH1のセルに次の式を入れました。 =VLOOKUP(I1,'シート2'!範囲,5,FALSE) 範囲には実際の範囲を指定し、5列目がシート2の生年月日なので合ってると思うのですが・・・。 エラーは#N/Aというのが出てしまいます。 何処に問題があるのか分かりません。 説明が下手かもしれませんが、分かる方教えて下さい!

  • MATCH関数とINDEX関数の組み合わせ方

    あるシートから別ファイルのシートへ、"金額の値"をコピーしたいのですが、 条件セルが元データでは縦2行(地域と商品名)、コピー先では(列)に配置されているため、 どうやって関数を組んだら良いのかわかりません。  関数ではなく、マクロにしないと無理でしょうか? (マクロでもいいのですが、コードがよくわからないので…)  又、地域はコードで番号順に並んでいますが、商品名はアルファベットと数字が混ざっており、 ソートされていない並び(変更不可)になっています。 Sheet1(元データ)    A      B    C 1 地域   商品名  金額 2 (01関東) (AS01) (200) 3 (01関東) (333B) (250) このSheet1の金額データを別ファイル:Sheet2の該当欄に表示させたい。 Sheet2(コピー先)   A           B     C      D 1 地域\ 商品名 (AS0100) (9999B) (AF205) 2 (01関東)       (200)   (300)   (250) 3 (02中部)       (50)    (250)    (290) どなたか、お知恵を拝借できれば幸いです。

  • 複数のシートから該当セルをアクティブにするマクロ

    インプットボックスなどに郵便番号、もしくは電話番号を入力し、 それに該当する部分がアクティブになるようなマクロを組みたいと思います。 会社名、住所、電話番号などを記載したデータが、 いくつかのシートに分かれて管理されています。 会社が10件ほど記載されているシートもあれば、 40件ほど記載されているシートもあります。 探すのが大変なので、 郵便番号や電話番号などを入力すれば、 該当のシート、該当の会社の場所に飛ぶようなマクロを作成したいのですが・・・ 詳しい方がいらっしゃれば、教えてください。 よろしくお願いします。

  • インプット関数を使って・・(応用)

    インプット関数を使って・・でご教授頂き、解決したのに複雑になったら何故か転記できません。すみませんが、ふたたびご教授をいただきたいです。 シート1(データシート) A列に通し番号(80001,80002,・・)B列に氏名、C列以降もデータがあり J列に電話番号があります。インプットボックスに通し番号(80001などの番号)を入力すると80001に対応する氏名を(B29へ)、電話番号を(F29へ)としたいのですが、シート2(転記シート)へが表示できません。(一応「転記しました」と表示するのですが?) データシートの2行目に項目、3行目からデータが入っています。 Sub 転記() Dim Numv As Variant Dim FindNum As Long Dim wsNum As Long Dim sNumv As Range '検索する受付番号を取得 FindNum = InputBox("受付番号は", "番号の入力") 'キャンセルの場合の処理 If Len(Trim(FindNum)) = 0 Then Exit Sub '"受付番号"列番号の自動取得 Set sNumv = Worksheets("データシート").Cells.Find(What:="受付番号") '該当する受付番号は見つかったか? If sNumv Is Nothing Then MsgBox "受付番号がありません!", vbOKOnly, "エラー" 'プログラム終了 Exit Sub Else End If '該当番号があった場合転記 With sNumv .Copy.Offset(0, 2).Value = Worksheets("転記シート").Range("B29").Value .Copy.Offset(0, 10).Value = Worksheets("転記シート").Range("F29").Value End With '転記成功メッセージを表示 MsgBox "転記しました", vbInformation Worksheets("転記シート").Select End Sub

専門家に質問してみよう