2016-10-25 3 views
-5

現在、「SHEET1」と「SHEET2」のブックで作業しています。今、SHEET1またはSHEET2に空のセルがある場合、必須セルに値を追加するようにユーザーに求めます。空のときにセルの位置をアクティブにする方法

問題:欠落しているセルがSHEET1用である場合は、SHEET2を有効にしたくありません。ここで

は、以下の私のコードです:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Dim maxrow As Long 
Dim maxrow2 As Long 
Dim errcnt As Long 
Dim errcnt2 As Long 

    ThisWorkbook.Sheets("SHEET1").Select 
    ThisWorkbook.Sheets("SHEET1").Cells(1, 1).Select 
    Range("A1048576").Select 
    Selection.End(xlUp).Select 
    maxrow = Selection.Row 

    For I = 2 To maxrow 
    If ThisWorkbook.Sheets("SHEET1").Cells(I, 1).Value = "YES" Then 
     For j = 2 To 10 
     If ThisWorkbook.Sheets("SHEET1").Cells(I, j).Value = "" Then 
      ThisWorkbook.Sheets("SHEET1").Select 
      ThisWorkbook.Sheets("SHEET1").Cells(I, j).Activate 
      errcnt = errcnt + 1 
     End If 
     Next j 
    End If 

    If ThisWorkbook.Sheets("SHEET1").Cells(I, 1).Value = "NO" Then 
     For j = 2 To 10 
     If ThisWorkbook.Sheets("SHEET1").Cells(I, j).Value = "" Then 
      ThisWorkbook.Sheets("SHEET1").Select 
      ThisWorkbook.Sheets("SHEET1").Cells(I, j).Activate 
      errcnt = errcnt + 1 
     End If 
     Next j 
    End If  
Next I 

If errcnt > 0 Then 
    MsgBox "There are " & errcnt & " fields missing", vbExclamation, "Missing Value" 
    Cancel = True 
Else 
End If 

ThisWorkbook.Sheets("SHEET2").Select 
ThisWorkbook.Sheets("SHEET2").Cells(1, 1).Select 
Range("A1048576").Select 
Selection.End(xlUp).Select 
maxrow2 = Selection.Row 

For X = 2 To maxrow2 
    If ThisWorkbook.Sheets("SHEET2").Cells(X, 1).Value = "YES" Or ThisWorkbook.Sheets("SHEET2").Cells(X, 1).Value = "NO" Then 
    For j = 2 To 10 
     If ThisWorkbook.Sheets("SHEET2").Cells(X, j).Value = "" Then 
     ThisWorkbook.Sheets("SHEET2").Select 
     ThisWorkbook.Sheets("SHEET2").Cells(X, j).Activate 
     errcnt2 = errcnt2 + 1 
     End If 
    Next j 
    End If 
Next X 

If errcnt2 > 0 Then 
    MsgBox "There are " & errcnt & " fields missing", vbExclamation, "Missing Value" 
    Cancel = True 
Else 
End If 

End Sub 

私はこれが原因で、このコードであると信じて:

ThisWorkbook.Sheets( "シート2")、これに代えて

+1

あなたはあなたが何を得ているのかを述べなかったし、あなたは質問しなかった。 –

+0

ここに@ScottCranerがあります: - そのセルに欠損値があり、そのセルにリダイレクトするように要求しますが、メッセージボックスをクリックするとSHEET2にリダイレクトされます。 SHEET2にリダイレクトしないでください – PeterS

+1

レコーダーコードがたくさんあります。この情報を利用してください。http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros ?rq = 1 – Rdster

答えて

0

選択します。

If errcnt > 0 Then 
    MsgBox "There are " & errcnt & " fields missing", vbExclamation, "Missing Value" 
    Cancel = True 
Else 
End If 

これを試す:

If errcnt > 0 Then 
    MsgBox "There are " & errcnt & " fields missing", vbExclamation, "Missing Value" 
    Cancel = True 
    Exit Sub 
End If 

注意exitサブプログラムでELSE(これは役に立たなかった)を変更しました。これは、SHEET1に欠けているものがある場合にマクロを終了させ、SHEET2を選択し続けることはありません。

+0

私はこれを試しましたが、文書は保存されます。必須のセルが見つからないときに文書を保存したくない。 – PeterS

+0

@bobajob Imこれは非常に新しいです。私は現在Workbook_BeforeSave関数を使用しています。しかし、節約する前に、私はすべてのマダントリー細胞が満たされているかどうかを確認したいと思います。 – PeterS

関連する問題