!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part48
http://mevius.2ch.net/test/read.cgi/tech/1494890685/
※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
Excel VBA 質問スレ Part49©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ bb2e-8SzA)
2017/06/26(月) 02:15:14.60ID:T3ylemnb0347デフォルトの名無しさん (ワッチョイ e66d-z+eH)
2017/07/18(火) 18:57:17.26ID:adssaMMv0348デフォルトの名無しさん (ワッチョイ 974b-+vhE)
2017/07/18(火) 19:02:27.52ID:FECT5IdT0 >>340
横からですが、借りてってもいいですか?
横からですが、借りてってもいいですか?
349デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/18(火) 20:30:12.85ID:StSxL3ktr >>348
もちろん自由に使えばいいけど、スマホで書いてるのでPCテストしてない。自己責任でよろしく。
読み返したら、Is Nothing のところは明らかにエラーになると思うので、こんな感じのほうがいいかも。(PCテストしてないので自信はない。あしからず)
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
なんか美しくないね。
ま、好きなように書き換えて。
もちろん自由に使えばいいけど、スマホで書いてるのでPCテストしてない。自己責任でよろしく。
読み返したら、Is Nothing のところは明らかにエラーになると思うので、こんな感じのほうがいいかも。(PCテストしてないので自信はない。あしからず)
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
なんか美しくないね。
ま、好きなように書き換えて。
350デフォルトの名無しさん (ワッチョイ 974b-+vhE)
2017/07/18(火) 21:03:49.93ID:FECT5IdT0351デフォルトの名無しさん (ワッチョイ e66d-lquy)
2017/07/18(火) 21:10:08.24ID:adssaMMv0 僕は唱える 魔法の言葉 on error resume next
みんなで歌おう 魔法の言葉 on error resume next
みんなで歌おう 魔法の言葉 on error resume next
352デフォルトの名無しさん (ワッチョイ 974b-+vhE)
2017/07/18(火) 21:12:18.15ID:FECT5IdT0353デフォルトの名無しさん (ワッチョイ 6fea-N0vF)
2017/07/18(火) 21:59:56.82ID:jNcdEVA90 ExcelからOutlookを起動し、予定表から会議依頼を作成するマクロを作成しています
あらかた思っていたものは作れたのですが、自分の予定表ではなく共有の予定表に保存する場合のコードがさっぱり分かりません
共有の予定表での作成方法をご教示頂けますでしょうか
あらかた思っていたものは作れたのですが、自分の予定表ではなく共有の予定表に保存する場合のコードがさっぱり分かりません
共有の予定表での作成方法をご教示頂けますでしょうか
354デフォルトの名無しさん (アークセー Sx39-y19a)
2017/07/18(火) 23:28:16.64ID:PXBpilE0x >>349
IsObject(Expression)の判定をしてるIfブロックの終了間際にExit Function入れないとダメなんじゃね?
IsObject(Expression)の判定をしてるIfブロックの終了間際にExit Function入れないとダメなんじゃね?
355デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 00:59:23.29ID:r34rJ2pSr >>354
おっしゃるとおり。
あるいは、Select以下をElseでつなげるか。
でも美しくないので書き換えてみた。
結構いいんじゃね?(軽くテスト済み)
結局、>>333 が最適解だったわけね。
なかなかの実力者とみた。
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
おっしゃるとおり。
あるいは、Select以下をElseでつなげるか。
でも美しくないので書き換えてみた。
結構いいんじゃね?(軽くテスト済み)
結局、>>333 が最適解だったわけね。
なかなかの実力者とみた。
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
356デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/19(水) 02:45:10.33ID:3ENxF81t0 >>355
isNoneが未定になるパスがあるんじゃね
isNoneが未定になるパスがあるんじゃね
357デフォルトの名無しさん (ワッチョイ e211-1CH6)
2017/07/19(水) 03:16:22.21ID:QlVhZGqo0 値とかオブジェクトが普通に入っている場合がすっぽり抜けてるんですがそれは
358デフォルトの名無しさん (ワッチョイ 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
みたいな使い方を考えたんですが、全然美しくない・・・
どうすれば良いでしょうか。
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
みたいな使い方を考えたんですが、全然美しくない・・・
どうすれば良いでしょうか。
359デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/19(水) 07:05:15.04ID:n0rSSeVEd 空の配列チェックも必要だと思うな
360デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 08:00:32.56ID:r34rJ2pSr >>357
IsNoneの初期値をFalseにすればいいんじゃね?
IsNoneの初期値をFalseにすればいいんじゃね?
361デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 08:37:45.43ID:pHR1WedN0 As Booleanで指定した場合はデフォルトがFalseだからTrueになる条件だけ書いていけばいい。
362357 (ブーイモ MM5e-Xf9t)
2017/07/19(水) 09:22:45.29ID:hbRH2SWGM ああなるほど、初期化って頭が全くなかった。サンクスです。
363デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 11:14:00.22ID:r34rJ2pSr364デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 12:01:18.52ID:pHR1WedN0 どういうものを実装するかにもよるけど経験から言うと配列の判定は別の方がいい。
アプローチの仕方が違うから、変数単体で認識させていたものを配列突っ込める様にした時なんかにバグの温床になる。
アプローチの仕方が違うから、変数単体で認識させていたものを配列突っ込める様にした時なんかにバグの温床になる。
365デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/19(水) 12:23:01.26ID:n0rSSeVEd366デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/19(水) 12:24:14.19ID:n0rSSeVEd あと空の配列チェックはIsMissingと同等
367デフォルトの名無しさん (オッペケ Sr5f-nv+z)
2017/07/19(水) 12:28:40.18ID:oLf4rjVBr variant型は脊髄反射で否定するくせにvariantみたいなヤリマン関数が大好きなお前らってw
368デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/19(水) 12:36:53.61ID:kmkgyzX6M variantのみを使うor絶対variantは使わない
みたいな論争は見たこと無いな
みたいな論争は見たこと無いな
369デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 14:51:31.77ID:pHR1WedN0 前スレかその前かの最後の方でVariant型絶対使わないマン出てきていた様な気がするけど。
そういう信条自体は別に良いんだけど、Variant型使えば解決出来る事を信条のせいで解決出来ず、
その結果として「VBAは欠陥」って言い出す変な人はこのスレでよく見かける。
そういう信条自体は別に良いんだけど、Variant型使えば解決出来る事を信条のせいで解決出来ず、
その結果として「VBAは欠陥」って言い出す変な人はこのスレでよく見かける。
370デフォルトの名無しさん (ワッチョイ ad73-hcOc)
2017/07/19(水) 15:28:03.09ID:GaPiK1nh0 便利な道具を使いこなせないドンくさい奴ってことだよ
371デフォルトの名無しさん (スッップ Sd70-N0vF)
2017/07/19(水) 18:00:12.50ID:3A2F1Rqpd すいません、353ですが自決しましたのでスルーで結構です
コピペだけでなく内容も理解できるようもっと勉強します
コピペだけでなく内容も理解できるようもっと勉強します
372デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/19(水) 18:04:33.44ID:n0rSSeVEd 自決
373デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 18:31:39.20ID:r34rJ2pSr >>364-365
配列は要素数の空判定でお茶を濁そう。
これ以上のブラッシュアップは断念。
コードとしてはそこそこ美しいと思う。
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
配列は要素数の空判定でお茶を濁そう。
これ以上のブラッシュアップは断念。
コードとしてはそこそこ美しいと思う。
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
374デフォルトの名無しさん (オッペケ 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
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
375デフォルトの名無しさん (ワッチョイ 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
ArrayはVariant型以外の場合もあるから、この方がいい。
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
ArrayはVariant型以外の場合もあるから、この方がいい。
376デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 19:22:16.26ID:r34rJ2pSr377デフォルトの名無しさん (ワッチョイ 974b-+vhE)
2017/07/19(水) 19:26:12.74ID:uwa7S77b0 素晴らしい。
378デフォルトの名無しさん (ワッチョイ e66d-z+eH)
2017/07/19(水) 19:29:01.56ID:+D5BELFr0 配列と型のチェックを同時にする時はとりあえず一次元配列に直せば楽ってばっちゃが言ってた
379デフォルトの名無しさん (スップ Sd02-QKFr)
2017/07/19(水) 20:01:06.21ID:bbPNdV8fd 書いてから気づいたけどvbnullは型ではなくてただの列挙体なので判定しなくてもいいよな
あと““はなんかダサいからvbnullstring使うのがいいかも
あと““はなんかダサいからvbnullstring使うのがいいかも
380デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/19(水) 20:04:24.02ID:n0rSSeVEd 判定としては UBound < LBound にしなくちゃね
381デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 20:16:48.04ID:r34rJ2pSr >>379
たとえば、InputBoxでキャンセルを押すとvbnullstringが返る。
何も入力せずにOKを押すと "" が返る。
つまり、vbnullstringと "" は別物なのでそれぞれに判定する必要がある。
たとえば、InputBoxでキャンセルを押すとvbnullstringが返る。
何も入力せずにOKを押すと "" が返る。
つまり、vbnullstringと "" は別物なのでそれぞれに判定する必要がある。
382デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 20:20:16.17ID:r34rJ2pSr383デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 20:20:56.04ID:pHR1WedN0 >>379
vbNullStringと""は判定としては別なので、片方だけにすると抜けが起きる。
vbNullStringと""は判定としては別なので、片方だけにすると抜けが起きる。
384デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 20:28:12.28ID:pHR1WedN0 >>382
うろ覚えだけどVarTypeでvbArrayとして返ってきた場合でもUboundするとエラーになるケースがあったはずなので、
Uboundを使う場合は別関数でOn Error Gotoで飛ばせるようにしておきたい。
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
と置いてSafeUbound < SafeLBoundで判定したい。
うろ覚えだけどVarTypeでvbArrayとして返ってきた場合でもUboundするとエラーになるケースがあったはずなので、
Uboundを使う場合は別関数でOn Error Gotoで飛ばせるようにしておきたい。
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
と置いてSafeUbound < SafeLBoundで判定したい。
385デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 20:38:22.51ID:r34rJ2pSr 一応簡単なテストコード的な…
hoge = Range("A1").Value: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge = InputBox("値を入力してください。"): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = Sheets(1): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = Nothing: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = CreateObject("InternetExplorer.Application"): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge.Quit
Set hoge = Nothing: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge = Array(): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge = Range("A1").Value: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge = InputBox("値を入力してください。"): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = Sheets(1): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = Nothing: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = CreateObject("InternetExplorer.Application"): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge.Quit
Set hoge = Nothing: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge = Array(): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
386デフォルトの名無しさん (ワッチョイ 626f-S4qQ)
2017/07/19(水) 21:08:04.97ID:WMMf4PqS0 エクセルでLISTAGGに相当するものは何ですか?
ソートしてForで上下比較して足してけとか言わないでください。
ソートしてForで上下比較して足してけとか言わないでください。
387デフォルトの名無しさん (アークセー Sx88-I8+U)
2017/07/19(水) 21:53:52.63ID:UJWjDrSmx >>371
成仏しなされ
成仏しなされ
388デフォルトの名無しさん (ドコグロ MM36-OTuW)
2017/07/19(水) 22:03:31.20ID:54vs2xq7M389デフォルトの名無しさん (イモイモ Se3a-S4qQ)
2017/07/19(水) 22:03:54.68ID:uC8D1QH+e vbNullString を厳密に判定する場合、StrPtr()使わないと判定できないと思ふ
If StrPtr(vbNullString) = 0 Then ’〜 Null Pointer
If StrPtr(vbNullString) = 0 Then ’〜 Null Pointer
390デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 22:36:12.42ID:pHR1WedN0 >>388
Select文だとAnd vbArrayって使えないと思うんだけど、例文出してくれる?
Select文だとAnd vbArrayって使えないと思うんだけど、例文出してくれる?
391デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/19(水) 23:08:15.46ID:3ENxF81t0392デフォルトの名無しさん (ドコグロ MM36-OTuW)
2017/07/19(水) 23:33:45.07ID:54vs2xq7M >>390
ひょっとして応用力ないとか?
Selectにこだわる必要ないし
どうしてもやりたきゃ
Select Case True
Case (VarType(hoge) And VbArray) <> 0
...
でいいだろ
ひょっとして応用力ないとか?
Selectにこだわる必要ないし
どうしてもやりたきゃ
Select Case True
Case (VarType(hoge) And VbArray) <> 0
...
でいいだろ
393デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 23:39:04.83ID:pHR1WedN0 >>392
ああ、やっぱりそういう方法しかないのね。
元々がIf文を可能な限り使わないというところから出発しているし、
それだとIf Else使った方が処理も速いしSelect文で読みやすくするっていう利点も潰してるんだよな。
ああ、やっぱりそういう方法しかないのね。
元々がIf文を可能な限り使わないというところから出発しているし、
それだとIf Else使った方が処理も速いしSelect文で読みやすくするっていう利点も潰してるんだよな。
394デフォルトの名無しさん (ワッチョイ 47e4-trcG)
2017/07/20(木) 01:20:53.05ID:CiXoybJd0395デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 01:36:37.21ID:IzREkzShr やはり、配列の空判定は別関数にしたほうが良さそうだね。
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
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
396デフォルトの名無しさん (オッペケ 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
う〜〜ん、、、いまいち美しくない…orz
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
う〜〜ん、、、いまいち美しくない…orz
397デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 02:11:18.92ID:IzREkzShr >>394
> 単に空チェックだけなら
Len(Trim(hoge)) = 0
で事足りてるような気はする。
イミディエイトウィンドウでテストしてみて。
? Len(Trim(InputBox("値を入力してね"))) = 0
[OK][キャンセル]どちらでも True が返る。
> 単に空チェックだけなら
Len(Trim(hoge)) = 0
で事足りてるような気はする。
イミディエイトウィンドウでテストしてみて。
? Len(Trim(InputBox("値を入力してね"))) = 0
[OK][キャンセル]どちらでも True が返る。
398デフォルトの名無しさん (ワッチョイ 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 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
あくまで配列要素数があるかどうかだけ判断したいなら、こういう関数でもいいと思うけど。
399デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 07:38:01.83ID:IzREkzShr400デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/20(木) 08:01:18.50ID:fTGUueKRd 関係ないけど配列の次元を求めるWin32APIがあるのに、いつまでたってもVBAから使えないのは何なの?
401デフォルトの名無しさん (ブーイモ MM8b-yxn4)
2017/07/20(木) 08:08:10.03ID:izganQUxM >>399
Optionalをわかってないのは美しい美しくないとか言う以前の問題。
Optionalをわかってないのは美しい美しくないとか言う以前の問題。
402デフォルトの名無しさん (ワッチョイ c773-XR5Y)
2017/07/20(木) 08:34:30.46ID:fh0pKX4k0 その理屈だと、大抵の事はC++で出来るから他の言語は不要ということになるな
403デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/20(木) 09:48:29.70ID:fTGUueKRd >>402
VBAから使えるようになればC++の必要性が減る、と解釈するのが自然だと思うけどな?
VBAから使えるようになればC++の必要性が減る、と解釈するのが自然だと思うけどな?
404デフォルトの名無しさん (ドコグロ MMfb-efHF)
2017/07/20(木) 12:39:43.62ID:qV+ymKYWM405デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 12:51:59.09ID:IzREkzShr406デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 12:55:10.23ID:IzREkzShr >>404
つか、正しくないコードは動かないでしょ。
つか、正しくないコードは動かないでしょ。
407デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/20(木) 13:34:31.13ID:fTGUueKRd408デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/20(木) 13:40:13.76ID:fTGUueKRd それとも手持ちの関数をまんまコピペしたのかな?
409デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 18:17:53.32ID:IzREkzShr ま、配列の空判定関数は各自で書くということでこの話題は完結かな。
ちなみに俺は、
Function ArrayEmpty(hoge) As Boolean
On Error Resume Next
If UBound(hoge) - LBound(hoge) < 0 Then ArrayEmpty = True
End Function
って感じ。
空判定関数を書くというだけの話題だったけど、いろいろ勉強になったね。
おつかれさまー。ノシ
ちなみに俺は、
Function ArrayEmpty(hoge) As Boolean
On Error Resume Next
If UBound(hoge) - LBound(hoge) < 0 Then ArrayEmpty = True
End Function
って感じ。
空判定関数を書くというだけの話題だったけど、いろいろ勉強になったね。
おつかれさまー。ノシ
410デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 18:32:35.34ID:IzREkzShr 3行目は
If UBound(hoge) < LBound(hoge) Then ArrayEmpty = True
のほうが美しいな。
If UBound(hoge) < LBound(hoge) Then ArrayEmpty = True
のほうが美しいな。
411デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/20(木) 18:53:02.67ID:2lo8GEfG0 そしたら
ArrayEmpty = UBound(hoge) < LBound(hoge)
でもいける。
ArrayEmpty = UBound(hoge) < LBound(hoge)
でもいける。
412デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 18:56:56.64ID:IzREkzShr413デフォルトの名無しさん (スップ Sd7f-dGk5)
2017/07/20(木) 19:42:53.19ID:0IwNCiVxd 完成した関数テンプレにのこしておいてよ
vbaの良質なコードはすごく希少だし
vbaの良質なコードはすごく希少だし
414デフォルトの名無しさん (ドコグロ MMfb-efHF)
2017/07/20(木) 19:58:58.45ID:qV+ymKYWM >>406
たまたま動いてるだけのコードも正しいと言い張るの?
たまたま動いてるだけのコードも正しいと言い張るの?
415デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 20:06:31.90ID:IzREkzShr416デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 20:27:30.52ID:IzREkzShr >>413
どこに残せばいいの?
完成品はこれでいいかな。
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
簡潔で美しいね。みんなの力の結晶だ。
どこに残せばいいの?
完成品はこれでいいかな。
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
簡潔で美しいね。みんなの力の結晶だ。
417デフォルトの名無しさん (ワッチョイ df06-pqVL)
2017/07/20(木) 22:00:04.12ID:4n7T5v3d0 >関数テンプレにのこしておいてよ
どこにあんだよ、そんなの
ここで知った人間で保存しておきたいって奴が保存しておけば良いだろ
どこにあんだよ、そんなの
ここで知った人間で保存しておきたいって奴が保存しておけば良いだろ
418デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/20(木) 23:07:38.62ID:2lo8GEfG0 スレッドのテンプレに残しておいてほしいって事なんじゃないの。
でも残し始めたら際限無くなるし、コピペで済ませずに理論と意図を理解して同じものを一から書けるようになってほしいなぁ。
でも残し始めたら際限無くなるし、コピペで済ませずに理論と意図を理解して同じものを一から書けるようになってほしいなぁ。
419デフォルトの名無しさん (ワッチョイ df11-efHF)
2017/07/21(金) 05:39:07.68ID:qElIELIq0420デフォルトの名無しさん (オッペケ Sr1b-8ndb)
2017/07/21(金) 12:22:10.00ID:vdvVccQ6r こんなコードテンプレに残したらますます初心者が初心者を惑わすスレに拍車がかかるなw
本当に仕事でエクセルマクロを必要としてる人には迷惑かけんなよw
本当に仕事でエクセルマクロを必要としてる人には迷惑かけんなよw
421デフォルトの名無しさん (アウーイモ MM6b-Z4r9)
2017/07/21(金) 12:42:41.45ID:omOOvC2LM 残せというやつがwikiでも立てて残していきなよ
422デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/21(金) 14:22:43.43ID:WPcJx8Myr > 初心者が初心者を惑わすスレ
言い得て妙だww
いいんだよ、それで。
VBA使いはエンジニアじゃないから。
言い得て妙だww
いいんだよ、それで。
VBA使いはエンジニアじゃないから。
423デフォルトの名無しさん (アークセー Sx1b-fDNv)
2017/07/21(金) 14:37:29.87ID:Rk0p0Likx424デフォルトの名無しさん (ワキゲー MM9f-rceg)
2017/07/21(金) 14:46:06.01ID:+UMDimrcM425デフォルトの名無しさん (オイコラミネオ MM4f-XR5Y)
2017/07/21(金) 15:00:26.78ID:rDxvAnQTM 低スキルにありがちな下らないレッテル張り
426デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/21(金) 15:28:32.09ID:4zV211iR0 どの言語の質問スレも初心者が初心者を惑わすスレ化してるのが悲しい。
「よくある質問と回答」レベルなら問題ないんだけど、ちょっと突っ込んだ質問になるととたんに雲行きが怪しくなる。
ある程度の実力を身につけたら2chじゃなくてちゃんとしたコミュニティか何かに参加するべきなんだろうけど、
だいたい見つからないし、見つけても2chほど気軽に質問投げられるような場所じゃなかったりするんだよな。
「よくある質問と回答」レベルなら問題ないんだけど、ちょっと突っ込んだ質問になるととたんに雲行きが怪しくなる。
ある程度の実力を身につけたら2chじゃなくてちゃんとしたコミュニティか何かに参加するべきなんだろうけど、
だいたい見つからないし、見つけても2chほど気軽に質問投げられるような場所じゃなかったりするんだよな。
427デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/21(金) 17:53:53.00ID:WPcJx8Myr >>426
知恵袋とか、もっと酷いよ。
知恵袋とか、もっと酷いよ。
428デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/21(金) 19:35:15.46ID:tSBq1lkVM429デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/21(金) 19:48:27.62ID:xN3mSVPqr430デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/21(金) 19:55:14.10ID:BM2lcFDS0431デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/21(金) 19:56:51.84ID:xN3mSVPqr >>430
JavaScriptのほうが楽しい理由は?
JavaScriptのほうが楽しい理由は?
432デフォルトの名無しさん (ワッチョイ bf6d-Brs8)
2017/07/21(金) 19:57:13.96ID:/kK1+YO60 >javascript
お、おう
お、おう
433デフォルトの名無しさん (ワッチョイ bf23-FdGq)
2017/07/21(金) 20:01:12.83ID:cakM1ik60 javascriptってvbaの次に底辺やんwww
434デフォルトの名無しさん (ワッチョイ a779-ijYd)
2017/07/21(金) 20:05:21.15ID:ZXE38ZHX0 そりゃていへん(大変)だ
(´・ω・`)b
(´・ω・`)b
435デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/21(金) 20:10:04.71ID:xN3mSVPqr >>433
使ったことある人が多い言語って底辺扱いされやすいよね。
おそらく、C や Java の比じゃないと思うよ。>VBA
でも、Java は使う人が多くなりつつあるから、底辺扱いされるのは時間の問題かもね。
使ったことある人が多い言語って底辺扱いされやすいよね。
おそらく、C や Java の比じゃないと思うよ。>VBA
でも、Java は使う人が多くなりつつあるから、底辺扱いされるのは時間の問題かもね。
436デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/21(金) 20:58:10.67ID:4zV211iR0 新興の言語って利用者全員が似たような習熟度だから意思疎通が図りやすいし、
どんなにクソみたいなコード書いても判断材料が無くて効率的なコードって言ってもらえるからな。
どんなにクソみたいなコード書いても判断材料が無くて効率的なコードって言ってもらえるからな。
437デフォルトの名無しさん (ワッチョイ 674f-ygJY)
2017/07/21(金) 21:00:52.93ID:Byrlump20 >>369
欠陥なんじゃなくて、馬鹿ほどvariantを使う法則なだけ
欠陥なんじゃなくて、馬鹿ほどvariantを使う法則なだけ
438デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
2017/07/21(金) 21:04:33.39ID:mLcSl7GWd 何の話だっけ?
439デフォルトの名無しさん (ワッチョイ bf6d-p/Ft)
2017/07/21(金) 21:21:32.57ID:/kK1+YO60 西中島南方北口の話
440デフォルトの名無しさん (ワッチョイ df6f-QK4i)
2017/07/21(金) 21:54:13.22ID:xestLY0Q0 長い間SQL触ってたので、
SelectがVBAにもあったのを完全に忘れていた、という話。
SelectがVBAにもあったのを完全に忘れていた、という話。
441デフォルトの名無しさん (ワッチョイ bf6d-p/Ft)
2017/07/21(金) 21:57:47.01ID:/kK1+YO60 複数の言語を使うとselectとswitchは妙に間違える
俺だけかねー?
俺だけかねー?
442デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
2017/07/21(金) 22:03:49.06ID:mLcSl7GWd >>441
わかる
わかる
443デフォルトの名無しさん (ワッチョイ bf23-E/h9)
2017/07/21(金) 22:16:02.62ID:gUUF92OH0 JavascriptにおけるjQuery的な
VBAのクラスってどっかにないのかな
Set class = New class
class.lastRowAdd(Range("a1"),array)
ってやったら最終行に配列の内容をぶっ込んでくれる
とか
よくある操作をパラメーター渡せばやってくれるような
VBAのクラスってどっかにないのかな
Set class = New class
class.lastRowAdd(Range("a1"),array)
ってやったら最終行に配列の内容をぶっ込んでくれる
とか
よくある操作をパラメーター渡せばやってくれるような
444デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/21(金) 22:20:47.57ID:zOHs/jgU0 >>443
それって結果は何になるの?
それって結果は何になるの?
445デフォルトの名無しさん (ワッチョイ bf23-E/h9)
2017/07/21(金) 22:30:00.89ID:gUUF92OH0446デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/21(金) 23:32:25.33ID:zOHs/jgU0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性には共通点が [Hitzeschleier★]
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★4 [BFU★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★5 [Hitzeschleier★]
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- 中国軍機がレーダー照射 小泉防衛大臣の説明に「矛盾している」中国外務省報道官が批判 [♪♪♪★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 【高市速報】中国、最後通牒 [308389511]
- 石見舞菜香ちゃんの声のお尻の穴なめたい
- まーた地震
- 地震wwwwwwwww
- 【悲報】高市早苗「物価高はそのうち収まると思います」
- しね✋ーーーーー☀
