[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『あるシートの情報をテーブルに反映させる?』(キーマン)
『シート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.