0

私が何をしようとしているのかを示すのに役立つ一般的なExcelファイルを作成しました。Tool.xlsm という名前のファイルには 2 つのワークシートが含まれています。シート 1 とシート 2。Sheet1 は、ユーザー入力を受け入れるいくつかのフィールドを持つように設計されます。Sheet2 はユーザーには表示されませんが、さまざまなドロップダウン リストの選択オプションと、特定のコードが選択されたときに Sheet1 の別のセルに表示される対応する説明が含まれます。さらに、Sheet2 には、1 つの列に多数の ID 番号が含まれ、次の列に対応するユーザー名が含まれます。これの目的は、ユーザーが ID# をそれが属するユーザーにすばやく関連付けることができるようにすることです。

これが私がこれまでに持っているものです...私はそれを本来あるべきほど効率的に行っているとは思えませんが、あなたのすべての専門知識に大いに感謝します!

Sub Button1_Click()

'Based on selected value of C1, show corresponding message in J1'
'Can this be done by simply referencing the code descriptions in sheet2?'

If Range("C1") = "code 1" Then
    Range("J1") = "code 1 description"
End If

If Range("C1") = "code 2" Then
    Range("J1") = "code 2 description"
End If

'End of code selection'
End Sub

Sub Button2_Click()

'Based on ID# entered into C3, display corresponding name in J1 (Sheet2 contains ID#s with corresponding names)'
'There has to be an esier way to loop through 1000s of records and display corresponding ID# and Person''s name'
'Rather than assigning Person 1, to Range J1, I should be able to just reference the cell Sheet2!E3 but that doesn''t seem to work'

If Range("C3") = "1001" Then
    Range("J1") = "Person 1"
End If

If Range("C3") = "34349090" Then
    Range("J1") = "Person 83"
End If

'End ID# search'
End Sub

Sub Button3_Click()

'Clear unlocked cells'

End Sub

ドロップボックスの私のファイル

4

2 に答える 2

1

あなたの質問に:

これは、sheet2 のコードの説明を参照するだけで実行できますか?

はい。VLOOKUPこれには式を使用できます。

同様に、VLOOKUP数式を使用して、ID に基づいて名前を返すことができます。

たとえば、ユーザー名が列 K にあり、ID が列 J にあるとします。

シート 1 で、セル C3 の ID を想定して、式を入力します。=VLOOKUP(C3, Sheet2!$J$K, 2, False)

于 2013-04-24T03:31:34.530 に答える
0

you can use the worksheet_change event. Kindly set rngFindCode & rngFindCode1 range accordingly to refer to your data in sheet2.

Below is the code.

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next

    Application.EnableEvents = False

    If Target.Address = "$C$1" And Target.Cells.Count = 1 And Target.Value <> "" Then

        Dim rngFindCode As Range '
        Dim cellCode As Range

        Set rngFindCode = Sheets("Sheet2").Range("C1:C100")    ' Refers to range where code is in sheet 2
        Set cellCode = rngFindCode.Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)

        If Not cellCode Is Nothing Then
            Range("J1").Value = cellCode.Offset(0, 1).Value
        End If

    ElseIf Target.Address = "$C$3" And Target.Cells.Count = 1 And Target.Value <> "" Then

        Dim rngFindCode1 As Range '
        Dim cellCode1 As Range

        Set rngFindCode1 = Sheets("Sheet2").Range("E1:E100")    'Refers to range where name is
        Set cellCode1 = rngFindCode1.Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)

        If Not cellCode1 Is Nothing Then
            Range("J1").Value = cellCode1.Offset(0, 1).Value
        End If

    Else
        Range("J1").Value = ""
    End If

    Application.EnableEvents = True
End Sub
于 2013-04-24T03:27:53.877 に答える