主張は明確に頼む 0314デフォルトの名無しさん (ワッチョイ 5ce3-z+eH)2017/07/17(月) 21:38:42.01ID:xDa7p7Qa0 ExcelVBAの挙動が謎すぎて困る IF xx IS NOT NULL AND xx.value = 100 みたいので例外出たときは目を疑った
Sub foo() Dim a As Long Dim b As Long a = 1 b = 2 Debug.Print a & "|" & b End Sub 0318デフォルトの名無しさん (ワッチョイ e66d-SAgI)2017/07/17(月) 21:51:23.92ID:ZwJXO/8Y0 ってかvbaって実は内部的に全部variantで処理してない?と思うことがたまによくある 0319デフォルトの名無しさん (ワッチョイ aa11-OTuW)2017/07/17(月) 22:01:54.76ID:U2FIHXXv0>>314 短絡評価が保証されてない言語で > IF xx IS NOT NULL AND xx.value = 100 なんて書く奴の方が謎 NothingじゃなくてNULLなのも謎 あとNULLならIsNull( )じゃないのも謎 0320デフォルトの名無しさん (ワッチョイ 5ce3-z+eH)2017/07/17(月) 22:05:39.05ID:xDa7p7Qa0 知らんがな!そんな詳しくない
Function IsNone(hoge) as Boolean If IsObject(hoge) Then If hoge Is Nothing Then IsNone = True End If Select case True Case IsNull(hoge) IsNone = True Case IsEmpty(hoge) IsNone = True Case hoge = "" IsNone = True Case hoge = vbnullstring IsNone = True Case Else IsNone = False End Select 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 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