Function IsNone(hoge) As Boolean Select Case VarType(hoge) Case vbEmpty, vbNull IsNone = True Case vbObject If hoge Is Nothing Then IsNone = True Case vbString If hoge = vbNullString Or hoge = "" Then IsNone = True Case Else IsNone = False End Select End Function 0356デフォルトの名無しさん (ワッチョイ f191-+gV6)2017/07/19(水) 02:45:10.33ID:3ENxF81t0>>355 isNoneが未定になるパスがあるんじゃね 0357デフォルトの名無しさん (ワッチョイ e211-1CH6)2017/07/19(水) 03:16:22.21ID:QlVhZGqo0 値とかオブジェクトが普通に入っている場合がすっぽり抜けてるんですがそれは 0358デフォルトの名無しさん (ワッチョイ 974b-+vhE)2017/07/19(水) 05:14:51.84ID:uwa7S77b0>>355 Sub buf() On Error Resume Next For i = 1 to n Set MyObj = SPAM If Err then If not IsNone(SPAM) then Brake Else Goto Continue End if Else ここで処理。 Continue: Err.clear Set MyObj = Nothing End if Next End sub
Function IsNone(hoge) As Boolean Select Case VarType(hoge) Case vbEmpty IsNone = True Case vbNull IsNone = True Case vbObject If hoge Is Nothing Then IsNone = True Case vbString If hoge = vbNullString Or hoge = "" Then IsNone = True Case vbArray + vbVariant If Ubound(hoge) = -1 Then IsNone = False End Select End Function 0374デフォルトの名無しさん (オッペケ Srd7-Ucbr)2017/07/19(水) 18:35:56.55ID:r34rJ2pSr 訂正。最後、Trueだった。。(^_^;)
Function IsNone(hoge) As Boolean Select Case VarType(hoge) Case vbEmpty IsNone = True Case vbNull IsNone = True Case vbObject If hoge Is Nothing Then IsNone = True Case vbString If hoge = vbNullString Or hoge = "" Then IsNone = True Case vbArray + vbVariant If Ubound(hoge) = -1 Then IsNone = True End Select End Function 0375デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)2017/07/19(水) 18:47:58.49ID:pHR1WedN0>>373 Function IsNone(hoge) As Boolean Select Case VarType(hoge) Case vbEmpty,vbNull IsNone = True Case vbObject If hoge Is Nothing Then IsNone = True Case vbString If Len(Trim(hoge)) = 0 Then IsNone = True Case Is >= vbArray IsNone = True End Select End Function
Function SafeUBound(hoge, Optional div As Long) As Long On Error GoTo fin If div = 0 Then div = 1 SafeUBound = -1 SafeUBound = UBound(hoge, div) fin: End Function
Function SafeLBound(hoge, Optional div As Long) As Long On Error GoTo fin If div = 0 Then div = 1 SafeLBound = 0 SafeLBound = LBound(hoge, div) fin: End Function
Function IsNone(hoge) As Boolean Select Case VarType(hoge) Case vbEmpty, vbNull IsNone = True Case vbObject If hoge Is Nothing Then IsNone = True Case vbString If Len(Trim(hoge)) = 0 Then IsNone = True Case Is >= vbArray If ArrayEmpty(hoge) Then IsNone = True End Select End Function
Function ArrayEmpty(hoge) As Boolean 美しいコード End Function 0396デフォルトの名無しさん (オッペケ Sr1b-QbI6)2017/07/20(木) 01:50:57.43ID:IzREkzShr>>384を使って、
Function ArrayEmpty(hoge) As Boolean If SafeUbound < SafeLBound Then ArrayEmpty = True End Function
Function SafeUBound(hoge, Optional div As Long) As Long On Error GoTo fin If div = 0 Then div = 1 SafeUBound = -1 SafeUBound = UBound(hoge, div) fin: End Function
Function SafeLBound(hoge, Optional div As Long) As Long On Error GoTo fin If div = 0 Then div = 1 SafeLBound = 0 SafeLBound = LBound(hoge, div) fin: End Function
[OK][キャンセル]どちらでも True が返る。 0398デフォルトの名無しさん (ワッチョイ 473d-pqVL)2017/07/20(木) 02:46:26.38ID:2lo8GEfG0>>396 Function RBound(hoge, Optional div As Long) As Long On Error Resume Next If div = 0 Then div = 1 RBound = UBound(hoge, div) - LBound(hoge, div) + 1 End Function
Function IsNone(hoge) As Boolean Select Case VarType(hoge) Case vbEmpty, vbNull IsNone = True Case vbObject IsNone = hoge Is Nothing Case vbString IsNone = Len(Trim(hoge)) = 0 Case Is >= vbArray On Error Resume Next IsNone = UBound(hoge) < LBound(hoge) End Select End Function