Maybe:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet

If Not Intersect(Target, Range("B3")) Is Nothing Then
    If Target.Value = "" Then
            Sheets("Sheet2").Visible = False
            ws.Activate
    Else
                Sheets("Sheet2").Visible = True
            ws.Activate
    End If
End If
        
End Sub
BTW. Welcome to the Forum.