Fout 91 / controle activecell in tabel / oproepen vanuit module

Status
Niet open voor verdere reacties.

MichaelEv

Gebruiker
Lid geworden
18 mei 2018
Berichten
12
Hallo iedereen,

Ik wil controleren of mijn activecell zich in een tabel bevind. Deze vraag is dmv jullie prima opgelost.

Ik wil deze controle nu vaker gaan gebruiken op verschillende sheets. Om niet elke keer deze code te schrijven schrijf ik de code eenmalig weg in een module en deze roep ik telkens op.

Ik roep de code als volgt op:
Code:
If CheckCellInTabel("testversie") Then 'testversie is de naam van de tabel
  MsgBox "niet in cell"
  Else
  MsgBox "in cell"
  End If
End Sub

Dit is de module

Code:
Public Function CheckCellInTabel(Tabelnaam As String) As Boolean

CheckCellInTabel = False

If Intersect(ActiveCell, ActiveSheet.ListObjects(Tabelnaam).DataBodyRange) Then
CheckCellInTabel = True
Else
CheckCellInTabel = False
End If

End Function

Als de cell zich in de tabel bevind werkt de code prima. Maar als de code zich niet in de cell bevind krijg ik een foutmelding:
Fout 91 Objectvariabele of blokvariabele With niet ingesteld

Doe ik iets verkeerds?

Ik denk dat mijn vba code de tabel niet ziet. Maar dat vang ik toch op?

Alvast bedankt.
 
Maak dit eens van die functie:
Code:
Public Function CheckCellInTabel(Tabelnaam As String) As Boolean
    On Local Error Resume Next
    If Intersect(ActiveCell, ActiveSheet.ListObjects(Tabelnaam).DataBodyRange) Then CheckCellInTabel = True
End Function
 
Laatst bewerkt:
@Edmoor, bedankt voor je snelle reactie en je goede oplossing. Het werkt!

Kan je me misschien kort uitleggen waarom dit zo werkt? Ik probeer het te begrijpen waardoor ik de volgende keer wellicht de vraag niet meer hoef te stellen of zelfs iemand anders kan helpen.

Bedankt!!
 
't Is een beetje laffe oplossing, omdat je het probleem omzeilt door bij een fout naar de volgende regel code te springen.
 
Opgelost. Ik moest er "Is nothing" achter zetten. Nu werkt het perfect.

Bedankt iedereen voor de moeite.

Code:
Public Function CheckCellInTabel(Tabelnaam As String) As Boolean

CheckCellInTabel = False

If Intersect(ActiveCell, ActiveSheet.ListObjects(Tabelnaam).DataBodyRange) Is Nothing Then
CheckCellInTabel = False
Else
CheckCellInTabel = True
End If

End Function
 
Code:
Sub M_snb()
   On Error Resume Next
   y = ActiveCell.ListObject.DataBodyRange.Address
   MsgBox "in tabel : " & Format(Err.Number = 0, "yes/no")
End Sub

of

Code:
Sub M_snb()
   Set y = Intersect(ActiveCell, ActiveCell.ListObject.DataBodyRange)
   MsgBox "in bodyrange : " & Format(Not y Is Nothing, "yes/no")
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan