Not sure, Steve, but since I don't have your promptForSurface, or the form with the combobox, I made some adjustments and this works for me:
<CommandMethod("TestSurfStyle")> _
Public Sub TestSurfStyle()
Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
Dim CivilDoc As CivilDocument = CivilApplication.ActiveDocument
Using tr As Transaction = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction()
Dim prmpt = New PromptEntityOptions("Select Surface")
prmpt.SetRejectMessage("Not a surface, try again...")
prmpt.AddAllowedClass(GetType(ACLB.Surface), False)
Dim res As PromptEntityResult = doc.Editor.GetEntity(prmpt)
If res.Status <> PromptStatus.OK Then Return
Dim SelSurfID As ObjectId = res.ObjectId
Dim styles As SurfaceStyleCollection = CivilDoc.Styles.SurfaceStyles
For Each StyleID As ObjectId In styles
Dim style As SurfaceStyle = TryCast(StyleID.GetObject(OpenMode.ForRead), SurfaceStyle)
If "Border Only" = style.Name Then
MsgBox(style.Name)
Dim comStyle As AeccLandLib.AeccSurfaceStyle = TryCast(style.AcadObject, AeccLandLib.AeccSurfaceStyle)
MsgBox(comStyle.Name)
Dim Surface As ACLB.Surface = TryCast(SelSurfID.GetObject(OpenMode.ForRead), ACLB.Surface)
MsgBox(Surface.Name)
Dim comsurf As AeccLandLib.AeccSurface = TryCast(Surface.AcadObject, AeccLandLib.AeccSurface)
MsgBox(comsurf.Name)
comsurf.Style = comStyle
End If
Next
tr.Commit()
End Using
End Sub