Solución: Encontré la solución aquí: Impedir el cambiar de pestaña en un TabControl, solo que he decidido añadirle un poco de código de ejemplo para hacerlo más ilustrativo.
Private Sub TabControl1_Selecting(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles TabControl1.Selecting If grabar = False Then 'Aquí pongo la validación que necesito, en mi caso es una variable pública que me controla si se han grabado los datos e.Cancel = True MsgBox("Grabe antes de cambiar de pestaña", MsgBoxStyle.Critical, "Error") End If End Sub