文字をクリックして表示させたい | 仕事での文書作成要望について

このQ&Aのポイント
  • 仕事で取引先に送付する文書の作成をスムーズに行うための要望があります。具体的には、取引文書にある空白箇所に取引先の名前や担当者氏名をクリックすることで自動的に表示させたいという要望です。現在は名前を手動で入力する必要がありますが、この作業を簡素化するための方法を教えていただけませんか?
  • 取引文書の作成において、取引先の名前や担当者氏名を手動で入力する必要がありますが、この作業を簡素化する方法を教えていただけませんか?具体的には、取引文書にある空白箇所をクリックすることで一覧表から自動的に名前を選択し表示させることができるようにしたいという要望があります。
  • 仕事で使用する取引文書の作成を効率化するために、取引先の情報を簡単に入力できる方法を探しています。具体的には、取引文書にある空白箇所をクリックすることで一覧表から名前を選択し表示させることができるようにしたいという要望があります。早急に解決策を教えていただけると助かります。
回答を見る
  • ベストアンサー

別シートの文字をクリックして表示させたい

仕事で取引先に送付する文書があるのでが、その文書作成をすばやく行えるようにしてほしいと要望がありました。 取引文書.xlsにはシートが2つあり、シート1は取引先に提出する文書で、宛先と担当者氏名の箇所が空白になっています。 シート2には取引先の名前、相手の氏名が一覧になっています。 今までは空白箇所に名前をコピーアンドペーストないし手入力していたのですが、使用者から、 一覧表からクリックするだけで名前を飛ばせるようにしてほしいと要望がありました。 シート1の空白箇所をクリックしたらシート2に移動し、シート2の名前をクリックしたらその名前が空白箇所に表示される、ということのようです。 リンク自体はできたのですが、リンク先の文字を空白箇所に表示させることができません。 取引先は200以上あり、そのすべてをリストボックスにすると見づらく検索しにくいので、リストボックスは不可だとのことです。 VBAでしょうか? 可能ならば、早めに教えていただけると非常に助かります。 大変もうしわけありませんが、教えていただけませんでしょうか?

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 具体的な表のレイアウトが判らないので、やり方だけ・・・ >シート1の空白箇所をクリックしたらシート2に移動し、シート2の名前をクリックしたら >その名前が空白箇所に表示される というコトですが、 >ダブルクリックしたら! という方法の一例です。 ↓の画像のような配置だとします。 左側がSheet1でA2セルに「顧客名」・C2セルに「担当者名」を入れるための「空白セル」だとします。 右側のSheet2には「顧客名」と「担当者名」の表がA・B列に作成済みだとします。 それぞれのSheetにダブルクリックで実行されるイベントプロシージャ作ってみます。 まず画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてみてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'この行から If Application.Intersect(Target, Range("A2,C2")) Is Nothing Then Exit Sub Cancel = True With Worksheets("Sheet2") '←「Sheet2」は実際のSheet名に! If Target.Address = "$A$2" Then .Activate .Range("A1").Select '←Sheet2の顧客名列の1行目を選択 Else .Activate .Range("B1").Select '←Sheet2の担当者名列の1行目を選択 End If End With End Sub 'この行まで 次に同様にSheet2のSheet見出し上で右クリック → ・・・中略・・・ コピー&ペースト Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'この行から Dim str As String If Application.Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub Cancel = True str = Target Worksheets("Sheet1").Activate '←「Sheet1」は実際のSheet名に! If Target.Column = 1 Then ActiveSheet.Range("A2") = str '←A2セルはSheet1の記入したいセル番地に! Else ActiveSheet.Range("C2") = str '←C2セルはSheet1の記入したいセル番地に! End If End Sub 'この行まで Sheet1の空白セルをダブルクリック → Sheet2の入力したいセルをダブルクリック これでSheet1の空白セルにSheet2のデータが表示されると思います。 ※ 画像の配置はあくまで判りやすくするための配置ですので、実状のデータにあわせて Sheet名・セル番地等の変更が必要です。m(_ _)m

carp1991
質問者

お礼

難しくて自分ひとりではとてもできそうになかったので本当に困っていました…… 無事に解決することができました! 本当にありがとうございました! 心から感謝します!

その他の回答 (5)

  • shorun
  • ベストアンサー率42% (133/310)
回答No.6

No5です 訂正します。 4.Sheet1の宛先に次の式を入力する。 =VLOOKUP(Sheet2!$A$1,Sheet2!$A$1:$C$4,3) の宛先は誤っていました 正しくは、担当者氏名でした。

carp1991
質問者

お礼

補足していただいてありがとうございます。 こちらで修正して使用させていただきます。 心から感謝申し上げます。

  • shorun
  • ベストアンサー率42% (133/310)
回答No.5

次の条件なら 1.VBA不可。 (取引先が拒否または、自社担当が移動するとメンテ困難など) 2.取引先に送付するのは、「印刷した紙の書類」であり、取引文書.xlsファイルではない。 3.Sheet2の加工が許される。 提案 Sheet2のデザインが記載されていないので、添付図青色部分の一覧表がある場合の例です。 1.先頭行を固定する。(1行目を表示したまま200行目まで検索できるようにするため) 2.A列を新しく挿入して2行目から、200以上のNoを入力する。 3.Sheet1の宛先に次の式を入力する。 =VLOOKUP(Sheet2!$A$1,Sheet2!$A$1:$C$4,2) 4.Sheet1の宛先に次の式を入力する。 =VLOOKUP(Sheet2!$A$1,Sheet2!$A$1:$C$4,3) 5.Sheet2の[A1]セルに該当するNoを入力する。 6.Sheet1の所定のセルに、取引先の名前と相手の氏名が表示されます。 参考、 実際のSheet2のデザインに合わせて、上記式3と4は修正してください。

carp1991
質問者

お礼

VBA不可のVer,本当にありがとうございます。 実際のところ、1から3まで当てはまるんですよ。 試してみて、どういう形がベストかまた相談の上決定になると思います。 それにしても、いろんな形で再現できるんですね。 自分ひとりではまったくできなかったので、関心することしきりです。 本当にありがとうございました!

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.4

かなり手抜きですが・・・。 こちらはシングルクリックで、選択して行く方法になります。 sheet1のB1セルもしくはB2セルをクリックするとsheet2に切り替わり、セルをクリックするとsheet1のセルに入力されます。 (1)標準モジュールに下記を入力。 Public pos As Long (2)sheet1に下記を入力。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) '会社名の入るセル:B1 '担当者名の入るセル:B2 pos = 0 If ActiveCell.Address = "$B$1" Then pos = 1 Worksheets("Sheet2").Activate End If If ActiveCell.Address = "$B$2" Then pos = 2 Worksheets("Sheet2").Activate End If End Sub (3)sheet2に下記を入力 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If pos = 1 Then Worksheets("sheet1").Range("$B$1").Value = ActiveCell.Value End If If pos = 2 Then Worksheets("sheet1").Range("$B$2").Value = ActiveCell.Value End If Worksheets("Sheet1").Activate End Sub

carp1991
質問者

お礼

いろいろな形があるんですね。 シングルクリックで以降できる形、となると一手間はぶけますし、また話をあげてみます。 こういった構文を深く知れば、エクセルで実現したいと思ったことはほとんどできてしまうんでしょうね。 職業上、エクセルの文書類を作成することが非常に多いので、教えてもらいながらも勉強指定校と思います。 ありがとうございました!

回答No.3

200 件以上あるとのことですから、できればそういうデータは、通し番号などの記号で管理しておくのが望ましいです。「1 あるいは 0 から始まる連続した整数」が便利だと思うのですが、一意な記号なら何でもいいです。 記号があれば、それを「シート1」のどこかのセルに入力するだけで、社名や担当者名を「シート2」から拾ってきて「シート1」に自動的に表示させるということは、簡単にできますよね。VLOOKUP 関数などを、表示させたいセルに始めから記入しておけばいいだけです(記号が未入力のときは「#N/A」を表示してくれます)。 添付図では、次式。 シート1のB3 =vlookup($B$1,シート2!$D$2:$F$6,2,) 文字列を別シートから一つひとつコピペという方法だと、件数が多いときは、そもそもミスのもとですよね。少なければそれで問題ないですけどね。 記号の入力は、手入力であっても通し番号だけなら非常に大変ということはないですし、それこそ VBA で、入力から印刷まで一気に行ってもいいですね。一定の番号の範囲(全件など)について PDF なりに印刷し、途中に不要なページが含まれていれば、印刷後に捨ててしまえばいい。という感じかと思うのですが、いかがでしょうか?そのほうがコードも運用も、遥かにシンプルです。 もしも記号が表示されていない状態でページを印刷したいという場合は、印刷範囲から外したり、白色の文字に変更したり…といったことは、幾らでもできます。 どうしてもダブルクリックで名前の入力を…というシステムを考えるなら、No.1 さんが教えてくださっているようなコードを用意せざるを得ないかと思います。

carp1991
質問者

お礼

いろいろなご意見が伺えて助かります。 今のところはまだ仮決定の段階ということですので、いろいろと試してみるつもりです。 エクセルは奥深くて便利ですけど難しいですね。 ありがとうございました!

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

その「行為」自体は#1さんの回答で出来ると思います。 しかし。 おそらく、と言うか、ほぼ確実にVBAです。 これ、相手に了承を取っておかないといけないかもしれませんよ。 ご質問の内容からおそらく大丈夫とは思いますが、 会社によっては「VBA不可!」とおっしゃるところもありますから。 ついでに言ってしまうと、エクセルの通常の設定では マクロを含むブックを開く時には警告(と言うか確認)が表示されます。 この確認を了承することで初めてマクロ(VBA)が活きてきます。 (回避する策はいくつかありますが、これはお相手の事情によりますから割愛。) 「この一手間が惜しい」と言う人がいるのもまた事実です。 (現に「会社名・担当者名を打つのが面倒」とおっしゃる方のようですし。) ですので、お相手との確認・了承は取っておいた方が良いです。 以上、直接の回答ではありませんが、老婆心による忠告とお納めくださいませ。 失礼いたしました。

carp1991
質問者

お礼

ご忠告ありがとうございます。 確かにマクロが云々の表示がでてきますね。 とりあえず、問題はないとの上司の言葉に安心していますが、なんだかそれもどうにかしてほしいとの言葉が出てきたら困ってしまいますね。 また相談してみます。 ご意見ありがとうございました。

関連するQ&A

  • Excelのハイパーリンクで,別Excelのシート

    Excelのハイパーリンクについて, リンク先をこのドキュメント内だとsheetまで指定できますが, 別のExcelをリンク先にする場合,ファイルweb別ページだと sheetまで指定できません。 Excel一覧表Aと,それそれsheetでまとめたExcel Bと2つ作り, 一覧表のリンクをクリックすると,詳細はExcel Bのsheet1・sheet2・・・が 表示されるようにしたいです。 可能であれば,教えてください。よろしくお願いします。

  • Excel VBA シートのコピー時に、シート上のコンボボックスもコピーしたい。

    こんにちは。 Excel VBAについて質問させていただきます。 やりたいことは、 シートAにボタンとコンボボックスを配置し、 コンボボックスには氏名の一覧を設定しています。 そこで、ボタンを押すとシートAをボタンとコンボボックスごと シートBという名前でコピーをしたいと思っています。 ActiveSheet.Copy Before:=Worksheets(1) でシート・ボタン・コンボボックスのコピーはうまく出来たのですが、 コンボボックスに設定していた氏名の一覧はコピーされていませんでした。 コピー先のシートのコンボボックスにもう一度氏名の一覧を 設定するしかないのでしょうか? それともシートのコピー時に何かいい方法があるのでしょうか。 宜しければアドバイスをお願い致します。 OSはWindows2000Pro Excelは2000です

  • エクセルにて、別シートから柔軟に未納者を取り出したいです

    はじめまして。 エクセルに、このようなシートがあります。 (1月~12月まで、12シート) A ナンバー B 氏名 C ふりがな D~Hまで使用料金など I 受領日 この中から、月ごとの料金未納者一覧を別シートに割り出したいので、 「未納者リスト」というシートを、新たに作成しました。 A ナンバー B 氏名 C ふりがな D 4月 E 5月 F 6月… 受領日セルには、受領した場合、日付が入っています。 未納の場合は空白です。 仮に、4月が空白(未納)だった場合には、 未納者リストシートの4月に、「未納」であると表示したいです。 ただ、月ごとに、若干、利用者さまが増減しますので、 普通のVLOOKUP関数を入れただけでは、 単純にその月に利用していない方まで「未納」になってしまい、うまく引き出せません…。 柔軟に、月ごとの未納者さまをうまく取り出すには、 どうしたらよろしいのでしょうか? 良いお知恵をお持ちの方、 ぜひ、ご教授いただけますと幸いです。 どうかよろしくお願いいたします。

  • 虫食い表の別シートへの空白詰め展開

    Windows環境 Excel2003 『原本』シートに電話の短縮番号一覧があります。 / 連絡先 電話番号 1 名前1 11-1111-1111 2 名前2 22-2222-2222 3 名前3 33-3333-3333 4 (空白) (空白) 5 名前5 55-5555-5555 ・ 空き行があり(番号は入っています) これを、別シート『一覧』にて、 空白行を詰めた形にしたいのです。 条件として、番号と名前がずれないようにしたいです。 イメージは、上の表から、以下の形式にしたいのです。 / 連絡先 電話番号 1 名前1 11-1111-1111 2 名前2 22-2222-2222 3 名前3 33-3333-3333 5 名前5 55-5555-5555 ・ よろしくお願いいたします。 既出の場合すみませんがご指摘ください。 (探しきれませんでした、すいません)

  • Excel 別シートの隣を表示

    VLOOKUPを使ってもうまく表示されないので質問いたします。 シート1に A 1 空白 B1 シート2を参照したドロップリスト があります。 シート1のB1でドロップリストを選択すると、A1にシート2の左隣のセルが反映されるようにしたいのですが うまくいきません。 わかる方、教えていただけたらありがたいですm(__)m

  • VBAで非表示のブックからシートの名前だけ抽出する方法

    WindowsとExcel2003を使用しています。 (1)まず、VBAでフォームを作成しその上にリストボックスを1つ作ります。 (2)そのリストボックス内に自フォルダにあるファイル名の一覧を表示します。 (3)その一覧から1つだけエクセルファイルを選択し、実行ボタンをクリックすると新しいフォームが開きます。 (4)そのフォームのリストボックス内に、選択したファイル内の全シートの名前を表示させようとしています。 (3)までは何とか作成することが出来て、動作しています。 (4)で、選択したエクセルファイルのシート名を取得するときに、当該bookを開くことなく、もしくは使用者には選択したbookが立ち上がったことを気づかせずにシート名だけを取得したいと考えていますが、この方法がわかりません。 さらには、取得したシート名から1つを選択し、それを変数に格納して使おうと思っています。 FileSystemObjectというのを使用するのでしょうか? ExcelVBAをはじめて触るため、手探り状態です。情報が不足している場合はすぐに補足します。 ご存知の方、ご教示よろしくお願いします。

  • エクセルでシート1のセルに入力すると別シートのセルに表示させるには

    依頼されて会員証をエクセル2003で作っている最中です。 SHEET1に下記の様に会員証のベースを作ました。 [●●●の会] 会員番号 [SHEET2の会員番号列] 住所 [SHEET2の住所列] 氏名 [SHEET2の氏名列] 電話番号 [SHEET2の電話番号列] [管理社名] SHEET2にまだ空欄ですが、会員番号・住所・氏名・電話番号のリスト表を作りました。 ここからが課題でして、SHEET2に会員番号、住所とセルに打ち込んでいくと SHEET1のそれぞれに対応したセルに表示させる為に SHEET1のセルに、[=Sheet2!A3]と打ち込めば、 SHEET2のA3のセルが対応されますが、 これではそのセルしか対応しません。 SHEET2の1行目に会員番号、住所から打ち込んだものは、 単純にSHEET1の表示させたいセルに[=SHEET2!○○]を打ち込めば、 それが対応されます。 ただSHEET2の2行目は空白ですので、新たに打ち込んで対応させようとしても出来ません。 毎度毎度SHEET1の表示させたセルに[=SHEET2!○○]をしていくのは大変です。 新規にリストを打ち込むたびにSHEET1の会員証に 表示させる方法はどういったものがあげられるのでしょうか? 或いは、SHEET1の会員証ベースに打ち込んでいくとSHEET2のリストに 自動的に登録される仕組みの方がやりやすいのでしょうか? 数式も教えていただければ大変有難いです。 アクセスの方がやりやすいかもしれませんが、 依頼した方のPCにはアクセスは入っていないですし、 私自身もアクセスはイマイチの部分があります。 エクセルのマクロなるものを使えません。 年始早々に使用したいとの事ですので、 なんとか仕上げてあげたいとは思います。 宜しくお願い致します。

  • excelでシートへのリンク

    excelでシートが多数あるBOOKを作成した。 少ない時は左下を右クリックでシート名がでるので問題ないが、 あるシートにシートの一覧を入れ、名前を青くし てそれをクリックしたら各シートがのタグをクリックしたとうにリンクさせたい。 リンクはどのような操作で作成するのか。   sheet1   ~   sheet50←青く表示させクリックでsheet50へ跳ぶ

  • リストボックスのイベントプロシージャー

    「氏名一覧」というフォームに、該当する氏名が リストボックスの中に表示されています。 リストボックスから1名氏名を選んだ時(ダブルクリックした時)に、 その選んだ人の個人情報のフォームを開くようにしたいのですが、 「氏名一覧」リストボックスの [ダブルクリック時]イベントプロシージャーでのコードの記述の仕方が分かりません。どなたか教えて下さい。宜しくお願いします。 ACCESS97を使っています。

  • 氏名をクリックするとその人のデータを表示するには

    エクセル2013です。 シート1に個人名、シート2にその人のデータがあります。 シート1の個人名のセルをクリックするとシート2のデータの一覧がシート1に表示されるようにするにはどのようにすればいいでしょうか? 本当は、市販されている住所録作成ソフトのような、住所録一覧の氏名欄をクリックするとその人のデータを入力したり編集できるようなものができないかなと思っています。 よろしくお願いします。

専門家に質問してみよう