2017-10-11 8 views
0

こんにちは私は以下のVBAコードを持っています。私が持っている問題は、 "行(x).select"を開始するコードの一部です。コードをステップ実行すると、次のメッセージボックスがポップアップする前に行が選択されますが、コードを実行すると、メッセージボックスがポップアップした後に行が選択されます。メッセージボックスがポップアップする前に行を選択するために何かできることはありますか?メッセージボックスがポップアップする前に前のコードを実行するには?

Sub deletedata() 
Dim x As String, y As Integer, z As Integer 
y = Range("auditstart").Row 
z = Range("auditend").Offset(-3, 0).Row 
x = InputBox("Please enter the row number wich you wish to delete", "DELETE DATA") 
If Not IsNumeric(x) Then 
MsgBox "please enter a valid number" 
Exit Sub 
ElseIf CLng(x) < y Or CLng(x) > z Then 
MsgBox "Please enter a row number between " & y & " and " & z 
Exit Sub 
End If 

Rows(x).Select 

If MsgBox("Are you sure you want to delete row " & x & " ?", vbYesNo) = vbNo Then 

Exit Sub 
Else 
Cells(x, 3).Select 
Worksheets("audit").Unprotect password 
ActiveCell = "DELETE" 
ActiveCell.Offset(0, 3) = 0 
ActiveCell.Offset(0, 4) = 0 
ActiveCell.Offset(0, 5) = 0 
ActiveCell.Offset(0, 6) = 0 
ActiveCell.Offset(0, 7) = Range("counter").Value + 1 
Sheets("colours").Unprotect password 
Range("counter").Value = ActiveCell.Offset(0, 7).Value 
Sheets("colours").Protect password 
Worksheets("audit").Protect password 
End If 

End Sub 
+0

これはなに? Visual Basic? – mumpitz

答えて

0

は、この行のためにCLongに対してCLongの比較:

ElseIf CLng(x) < CLng(y) Or CLng(x) > CLng(z) 

注文は、[OK]をのようです。私はそれが渡される文字列であると仮定してパスワードを ""入れました。パスワードと呼ばれる変数ではありません。

Option Explicit 
Sub deletedata() 
    Dim x As String, y As Integer, z As Integer 
    y = Range("auditstart").Row 
    z = Range("auditend").Offset(-3, 0).Row 
    x = InputBox("Please enter the row number which you wish to delete", "DELETE DATA") 

    If Not IsNumeric(x) Then 
     MsgBox "please enter a valid number" 
     Exit Sub 
    ElseIf CLng(x) < CLng(y) Or CLng(x) > CLng(z) Then 
     MsgBox "Please enter a row number between " & y & " and " & z 
     Exit Sub 
    End If 

    Rows(x).Select 

    If MsgBox("Are you sure you want to delete row " & x & " ?", vbYesNo) = vbNo Then 
     Exit Sub 
    Else 
     Cells(x, 3).Select 
     Worksheets("audit").Unprotect "Password" 
     ActiveCell = "DELETE" 
     ActiveCell.Offset(0, 3) = 0 
     ActiveCell.Offset(0, 4) = 0 
     ActiveCell.Offset(0, 5) = 0 
     ActiveCell.Offset(0, 6) = 0 
     ActiveCell.Offset(0, 7) = Range("counter").Value + 1 
     Sheets("colours").Unprotect "Password" 
     Range("counter").Value = ActiveCell.Offset(0, 7).Value 
     Sheets("colours").Protect "Password" 
     Worksheets("audit").Protect "Password" 
    End If 

End Sub 
+0

コードは正常に動作しており、編集する必要はありません。問題があるのは、行からのメッセージボックスです。MsgBox( "行x&"? "、vbYesNo)= vbNoを削除してよろしいですか? 終了行 –

+0

が行行(x)を実行する前に実行されます。 .select –

+0

メッセージボックスが表示されたときに選択した行をユーザーに表示させたい –

関連する問題