[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『あるシートの情報をテーブルに反映させる?』(キーマン)
『シート1に管理コードを付けた顧客リストを作り別シートにVLOOKUPを用いた表を作成。管理コードを入力すると必要なデータ部分を表示させる表を作成している。
別シートに書き込んだ情報を顧客リストのデーターベースに反映させる方法を教えてください。
キーマンです。
みやほりんが 未解決ログ解消を目的に 2008/02/06 16:30 ごろ、投稿しました。 トピ主の[キーマン]さんの投稿は2002/07/13 17:00:29でした。 まず、仮定として、次のような構成であると解釈します。 ・「シート1」 管理コードが先頭列にある顧客リスト 兼 データベース ・「別シート」 管理コード入力によってデータベース情報を表示するシート ・「別シート」はVLOOKUP関数によってシート1の内容を検索・参照している。 要望は次のことであると解釈します。 ・「別シート」で「シート1」から顧客情報を検索表示したデータに対する関 連情報を「シート1」へ転記する。 転記処理にはマクロが必須になりますが、次の点が不明。 ・「別シート」で「管理コードを入力すると必要なデータ部分を表示」する部分と、 「データーベースに反映させる」「別シートに書き込んだ情報」に同一のものが あるかどうか。 VLOOKUP関数で検索・参照した情報を編集(上書)して新たな情報として「シート 1」に書き戻す、という動作を想定しているなら、検索・参照に用いている関数 が上書きされて消えてしまう。 この場合、マクロでいくつかの動作が考えられる。 (1)VLOOKUP関数を埋め込まずに最初からマクロで全ての情報を呼び出す仕様。 (2)上書しても良いようにマクロでVLOOKUP関数を入力しなおす仕様。 (3)VLOOKUP関数が入力されている以外のセルでデータベースに上書する為の データ編集を行う仕様。 とりあえず、(1)を想定。 「別シート」のシート見出しを右クリック、「コードの表示」を選択して コードウィンドウへ下記を貼り付けます。 Option Explicit Private Sub Worksheet_Change(ByVal target As Range) Rem A2セルの入力でデータベースから情報を検索・転記するコード Rem 転記先はこのコードを登録したシートのA2:C2を想定。 Dim MyRng As Range, flag As Boolean If target.Row <> 2 Then Exit Sub If target.Count > 1 Then Exit Sub If target.Value = "" Then Exit Sub If target.Column = 1 Then flag = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("A:A"), target.Value) = 1 If flag Then Set MyRng = Worksheets("Sheet1").Range("A:A").Find(target.Value) target.Offset(0, 1).Resize(1, 2).Value = MyRng.Offset(0, 1).Resize(1, 2).Value Else MsgBox "新規データです" target.Offset(0, 1).Resize(1, 2).ClearContents End If End If Set MyRng = Nothing End Sub
Private Sub CommandButton1_Click() Rem CommandButton1をクリックして編集したデータを Rem データベースに書き戻すコード Dim MyRng As Range, TgtRng As Range, flag As Boolean, MyAns As Variant Set TgtRng = Me.Range("A2:C2") flag = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("A:A"), Me.Range("A2").Value) = 1 If flag Then MyAns = MsgBox("既存データを上書しますか?", vbYesNo) If MyAns = vbYes Then Set MyRng = Worksheets("Sheet1").Range("A:A").Find(TgtRng.Value) MyRng.Resize(1, 3).Value = TgtRng.Value Application.EnableEvents = False TgtRng.ClearContents Application.EnableEvents = True End If Else MyAns = MsgBox("新規データを追加しますか?", vbYesNo) If MyAns = vbYes Then With Worksheets("Sheet1") Set MyRng = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0) End With MyRng.Resize(1, 3).Value = TgtRng.Value Application.EnableEvents = False TgtRng.ClearContents Application.EnableEvents = True End If End If Set MyRng = Nothing Set TgtRng = Nothing End Sub (みやほりん)(-_∂)b
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.