Se non vuoi preoccuparti del numero delle textbox devi usare delle funzioni ricorsive e "raggruppare" l' evento TextChanged, vedi esempio sotto, l' unico accorgimento è identificare le textbox sottoposte a controllo, io ho usato la proprietà Tag impostando la stringa "controllata":
codice:
    Dim lista As New List(Of TextBox)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button1.Enabled = False

        For Each c As Control In Me.Controls
            If c.Tag = "controllata" Then
                lista.Add(c)
                AddHandler c.TextChanged, AddressOf TextBox_TextChanged
            End If
        Next

    End Sub

    Private Sub TextBox_TextChanged(ByVal sender As TextBox, ByVal e As System.EventArgs)
        Dim attiva As Boolean = True

        For Each T As TextBox In lista
            If T.Text = "" Then
                attiva = False
                Exit For
            End If
        Next

        If attiva = True Then
            Button1.Enabled = True
        Else
            Button1.Enabled = False
        End If

    End Sub
Se a runtime vuoi escludere/aggiungere delle textbox in base ad una scelta ti basta rimuoverle/aggiungerle alla lista.
Tieni presente che basta uno "spazio" per scavalcare il controllo...in questo caso devi assegnare il testo della textbox ad una variabile, usare la funzione Trim ed eseguire la verifica su questa variabile.
Ciao