2017-02-06 3 views
0

選択シートなしでこれを行うことはできますか、有効にしますか?私はキー値を見つけることに基づいてユーザーフォームでセルの変更値を必要とします。VBA - USERFORM - 値を見つけてアクティブなしで行を入力または選択

Dim sonsat As Long 
Sheets("DATA").Range("A:A").Find(Keycombobox.Text) 
sonsat = ActiveCell.Row 
Cells(sonsat, 1) = TextBox1 
Cells(sonsat, 2) = TextBox2 
Cells(sonsat, 3) = TextBox3 
Cells(sonsat, 4) = TextBox4 
Cells(sonsat, 5) = TextBox5 
Cells(sonsat, 6) = TextBox6 
Cells(sonsat, 7) = TextBox7 

答えて

1

(W/O SelectActiveCellActivateを使用して)以下Find方法を使用。あなたは次のように行くことができる

Option Explicit 

Sub TestFind() 

Dim sonsat As Long 
Dim FindRng As Range 

With Sheets("DATA") 
    Set FindRng = .Range("A:A").Find(Keycombobox.Text) ' <-- assuming Keycombobox is a textBox 

    If Not FindRng Is Nothing Then ' <-- successful find 
     sonsat = FindRng.Row 

     ' rest of yout code here .... 
     .Cells(sonsat, 1) = TextBox1 '<-- for good coding practice use TextBox1.Value ' or TextBox1.Text 
     .Cells(sonsat, 2) = TextBox2 
     .Cells(sonsat, 3) = TextBox3 
     .Cells(sonsat, 4) = TextBox4 
     .Cells(sonsat, 5) = TextBox5 
     .Cells(sonsat, 6) = TextBox6 
     .Cells(sonsat, 7) = TextBox7 
    Else 
     MsgBox "Unable to find " & Keycombobox.Text & " in specified Range !" 
    End If 
End With 

End Sub 
+0

このコードは、私が選択したものをシートに新しいエントリを与える従いますが、編集の前に標的にされたセルの値を配置することではありません。ユーザーフォームは別のシートから開きます。 – Nataniell

+0

@Nataniell ok、編集コードを試してください –

+0

はい、そのトリックでした。ありがとうございました。 – Nataniell

0

Dim i As Long 

With Sheets("DATA").Range("A:A").Find(Keycombobox.Text) 
    For i = 1 To 7 
     Cells(.Row, i) = Me.Controls("TextBox" & i) 
    Next 
End With 
関連する問題