2017-02-19 8 views
0

私はuserformによってデータベースのデータを更新するコードを扱っています。 、その最初の部分、すなわち検索データは、罰金が、第2の部分つまり更新を働いているいつかそれが正常に動作しますが、いつかそれがvbaランタイムエラー91検索と更新コマンドを使用

Private Sub cmd_Update_Click() 
Application.DisplayAlerts = False 
Dim ws As Worksheet 
'check for a Name number 
If Trim(Me.TextBox_Search_Data.Value) = "" Then 
Me.TextBox_Search_Data.SetFocus 
MsgBox "Please fill the data in search box" 
Exit Sub 
End If 
Set ws = Worksheets("Employee Data") 
With ws 
r.Value = Me.TextBox_Search_Data.Value 
r.Offset(, 1).Value = Me.TextBox_EmployeeName.Value 
r.Offset(, 2).Value = Me.TextBox_FatherHusbandName.Value 
r.Offset(, 3).Value = Me.ComboBox_Designation.Value 
r.Offset(, 4).Value = Me.ComboBox_Category.Value 


Me.TextBox_Search_Data.SetFocus 
MsgBox "Data Updated Sucessfully" 

'clear the data 
Me.TextBox_EmployeeNumber.Value = "" 
Me.TextBox_EmployeeName.Value = "" 
Me.TextBox_FatherHusbandName.Value = "" 
Me.ComboBox_Designation.Value = "" 
Me.ComboBox_Category.Value = "" 


End With 
End Sub 
それはシートのように見える
+1

「r」とはどのように定義されていますか? – user3598756

+0

'ws = Worksheets(" Employee Data ")'、 'With ws'と' End With'文はあなたのコードでは重複しています - あなたは 'With'ブロックを決して使用せず、' ws'冗長な「With」ブロックのオブジェクト。 – YowE3K

+1

'Application.DisplayAlerts = False'ステートメントを削除してみてください。このコードでは必要ないように見えます。どこにでも' True'にリセットしないという事実は、重要なことが報告されないかもしれないということを意味します。 – YowE3K

答えて

0

が正しく設定取得することはできません助けが必要ランタイムエラー91

ができますしたがって更新するためにオブジェクトを使用することはできません。以下の変更されたコードを参照してください。

Private Sub cmd_Update_Click() 

    Application.DisplayAlerts = False 

    Dim ws As Worksheet 
    'check for a Name number 
    If Trim(Me.TextBox_Search_Data.Value) = "" Then 
     Me.TextBox_Search_Data.SetFocus 
     MsgBox "Please fill the data in search box" 
     Exit Sub 
    End If 

    ' Change ThisWorkbook to a different workbook variable as needed. 

    Set ws = ThisWorkbook.Worksheets("Employee Data") 
    If Not ws Is Nothing Then 
      If not r is Nothing Then 
       With r 
        .Value = Me.TextBox_Search_Data.Value 
        .Offset(, 1).Value = Me.TextBox_EmployeeName.Value 
        .Offset(, 2).Value = Me.TextBox_FatherHusbandName.Value 
        .Offset(, 3).Value = Me.ComboBox_Designation.Value 
        .Offset(, 4).Value = Me.ComboBox_Category.Value 
       End With 
      Else 
       'This will run if r is not set to a range. 
      End If 
    Else 
     'This will occur if the sheet isn't set properly. 
    End If 

    Me.TextBox_Search_Data.SetFocus 
    MsgBox "Data Updated Sucessfully" 

    'clear the data 
    Me.TextBox_EmployeeNumber.Value = "" 
    Me.TextBox_EmployeeName.Value = "" 
    Me.TextBox_FatherHusbandName.Value = "" 
    Me.ComboBox_Designation.Value = "" 
    Me.ComboBox_Category.Value = "" 

End Sub 
+0

brandon ur geniousに感謝します –

+0

@AtulKantGodiyal - あなたは気付いていません、これは機能的にはありませんあなたのコードが使用していないシートが存在するかどうかを確認する以外に、自分のコードとは異なります。 – YowE3K

+0

@ YowE3K私は実際に彼がwを使うべきではないので、彼が使っているので完全にそれを逃しました。彼はrが代わりに何かに設定されていることを保証するべきです。これを反映するようにコードを更新します。 –

関連する問題