Sub KtoryRiadokTabulky()
Dim XSelect As Range
With ThisWorkbook.Worksheets("Hárok1")
If Selection.Parent.Name = .Name Then
If TypeName(Selection) = "Range" Then
With .ListObjects("Tabulka")
Set XSelect = Intersect(Selection, .DataBodyRange)
If Not XSelect Is Nothing Then
MsgBox "Výber začína na riadku " & XSelect.Row - .Range.Row, vbInformation
Else
MsgBox "Výber sa neprelína s objektom " & .Name, vbExclamation
End If
End With
Else
MsgBox "Nie je vybraná oblasť, ale " & TypeName(Selection), vbExclamation
End If
Else
MsgBox "Spúšťate makro na inom liste ako " & .Name, vbExclamation
End If
End With
End Sub
EDIT: Ešte som pridal ošetrenie prípadu, ak nie je vybraná žiadna oblasť, ale napr. ovládací prvok, graf, či obrázok ... vyvolalo by to totiž chybu.
Aspoň je pekne vidieť, ako funguje programovanie, že pre 1 funkčný riadok treba myslieť a ošetriť množstvo možných stavov, ktoré by mohli nastať. A to tam ešte nie je zakomponované ošetrenie neexistencie požadovaného listu a neexistencie Tabuľky "Tabulka".