Maybe something like this (using vba)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tbl As ListObject
Dim newRow As Range
Dim dropdownColumn As Range
' The column where you want the dropdown
' Set the table object (replace "MyTable" with your table's name)
Set tbl = ThisWorkbook.Sheets("Sheet1").ListObjects("MyTable")
' Adjust sheet name abd table name to suit
' Set the column where you want the dropdown (e.g., column B). Use column number.
Set dropdownColumn = tbl.DataBodyRange.Columns(2)
' ADJUST COLUMN NUMBER (2 = Column B, 3 = C, etc.)
' Check if the change occurred within the table's data body
If Not Intersect(Target, tbl.DataBodyRange) Is Nothing Then
' Check if a new row was added (more rows in the table now)
If tbl.DataBodyRange.Rows.Count > Target.Rows.Count Then
' Find the newly added row(s)
Set newRow = Intersect(Target, tbl.DataBodyRange)
' Loop through the newly added rows and add data validation
Dim cell As Range
For Each cell In newRow.Cells
' Only apply to the dropdown column
If Not Intersect(cell, dropdownColumn) Is Nothing Then
With cell.Validation
.Delete
' Clear any existing validation
.Add xlValidateList, xlValidAlertStop, xlBetween, "=MyDropdownList"
' Use your named range.
' Adjust named range if needed
.ErrorMessage = "Invalid Input"
.ErrorTitle = "Selection Error"
End With
End If
Next cell
End If
End If
End Sub