投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/5/9 13:38:43
既に解決済みのようですが:

> Public Function FindControl(ByVal hParent As Control, ByVal stName As String) As Control
stName が無かった時の Return が省略されているので、警告が出ていますね。

それと上記の処理は、もっと簡単に書けそうです。

Public Function FindControl(hParent As Control, stName As StringAs Control
      Return hParent?.Controls?.Find(stName, True)?.FirstOrDefault()
End Function



> Dim ctrl As ComboBox = FindControl(Me, cmb_name)

このコードだと、Option Strict On の時に型変換の問題が発生してしまいますので、
先のメソッドに、型パラメーター付のオーバーロードを用意するのが良さそうです。

Public Function FindControl(Of T As Control)(hParent As Control, stName As StringAs T
      Return hParent?.Controls?.Find(stName, True)?.OfType(Of T)?.FirstOrDefault()
End Function


このようにしておけば、
 Dim ctrl = FindControl(Of ComboBox)(Me, cmb_name)
のように使うことで、 Option Strict On の場合にも対処させることができます。


>   connect.Close()
> Catch ex As Exception
>   MsgBox(接続エラーです。", vbOKOnly, "接続エラー")
>   connect.Close()
>   Exit Sub
> End Try

Try 句と Catch 句の両方で Close していますが、
こういう時は Finally 句を利用した方が良いと思いますよ。