The first thing I would try is turning events off
Application.EnableEvents = False
Cells(currentrow, 2).Value = Me.cboCatg.Text
Application.EnableEvents = True
OTOH, if all Data Entry is by UserForm, don't use Data Validation.
Tip: Looking at that screenshot, I imagine your Data Transfer code is quite long. If you place the appropriate column Letter in each Controls Tag property, then
Dim Ctrl As Object
For Each Ctrl in Me.Controls
If Ctrl.Tag <> "" Then Cells(CurrentRow, Ctrl.Tag) = Ctrl
Next Ctrl
If you use Column Numbers in the Tag then you can treat different controls differently
IF Ctrl.Tag > 0 and < 1000 then Cells(CurrentRow, Tag)
ElseIf Ctrl.Tag > 1000 And < 10000 then Cells(RowNum, Tag - 1000)
If you imagine you might ever change the structure of your project you can use a function to return the Column letter or number.
Private Function ColAlpha(Ctrl as Object) As String
Select Case Ctrl.Name
Case "cboCatg": ColAlpha = "B"
Case "CommandButton1": ColAlpha = "C" 'Silly, eh?
End Select
End Function
Dim Ctrl As Object
For Each Ctrl in Me.Controls
Cells(CurrentRow, ColAlpha(Ctrl)) = Ctrl
Next Ctrl
Yeah, I'm a fan of using Letters in Cells(Row, Column)