Excel VBA 質問スレ Part49at TECH
Excel VBA 質問スレ Part49 - 暇つぶし2ch355:デフォルトの名無しさん (ワッチョイ 974b-+vhE)
17/07/18 21:03:49.93 FECT5IdT0.net
>>349
ありがとうございます。
エラーの度に色々悩んでたもので。
この辺を美しく書けるのが理想ですが、なかなか難しい。

356:デフォルトの名無しさん (ワッチョイ e66d-lquy)
17/07/18 21:10:08.24 adssaMMv0.net
僕は唱える 魔法の言葉 on error resume next
みんなで歌おう 魔法の言葉 on error resume next

357:デフォルトの名無しさん (ワッチョイ 974b-+vhE)
17/07/18 21:12:18.15 FECT5IdT0.net
>>349
objectを掴めてないときのemptyとか、開放できないときのオートメーションエラーとかに悩まされて、ある程度解決してたんですが、これで最終解脱できそうな予感。
ありがたや。

358:デフォルトの名無しさん (ワッチョイ 6fea-N0vF)
17/07/18 21:59:56.82 jNcdEVA90.net
ExcelからOutlookを起動し、予定表から会議依頼を作成するマクロを作成しています
あらかた思っていたものは作れたのですが、自分の予定表ではなく共有の予定表に保存する場合のコードがさっぱり分かりません
共有の予定表での作成方法をご教示頂けますでしょうか

359:デフォルトの名無しさん (アークセー Sx39-y19a)
17/07/18 23:28:16.64 PXBpilE0x.net
>>349
IsObject(Expression)の判定をしてるIfブロックの終了間際にExit Function入れないとダメなんじゃね?

360:デフォルトの名無しさん (オッペケ Srd7-Ucbr)
17/07/19 00:59:23.29 r34rJ2pSr.net
>>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

361:デフォルトの名無しさん (ワッチョイ f191-+gV6)
17/07/19 02:45:10.33 3ENxF81t0.net
>>355
isNoneが未定になるパスがあるんじゃね

362:デフォルトの名無しさん (ワッチョイ e211-1CH6)
17/07/19 03:16:22.21 QlVhZGqo0.net
値とかオブジェクトが普通に入っている場合がすっぽり抜けてるんですがそれは

363:デフォルトの名無しさん (ワッチョイ 974b-+vhE)
17/07/19 05:14:51.84 uwa7S77b0.net
>>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


364:Continue End if Else ここで処理。 Continue: Err.clear Set MyObj = Nothing End if Next End sub みたいな使い方を考えたんですが、全然美しくない・・・ どうすれば良いでしょうか。



365:デフォルトの名無しさん (スップ Sd02-y/ao)
17/07/19 07:05:15.04 n0rSSeVEd.net
空の配列チェックも必要だと思うな

366:デフォルトの名無しさん (オッペケ Srd7-Ucbr)
17/07/19 08:00:32.56 r34rJ2pSr.net
>>357
IsNoneの初期値をFalseにすればいいんじゃね?

367:デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
17/07/19 08:37:45.43 pHR1WedN0.net
As Booleanで指定した場合はデフォルトがFalseだからTrueになる条件だけ書いていけばいい。

368:357 (ブーイモ MM5e-Xf9t)
17/07/19 09:22:45.29 hbRH2SWGM.net
ああなるほど、初期化って頭が全くなかった。サンクスです。

369:デフォルトの名無しさん (オッペケ Srd7-Ucbr)
17/07/19 11:14:00.22 r34rJ2pSr.net
>>359
Case vbarray を加えればいいだけじゃね?
…って思ったら、配列の空判定は結構やっかいかも。
配列判定いる?

370:デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
17/07/19 12:01:18.52 pHR1WedN0.net
どういうものを実装するかにもよるけど経験から言うと配列の判定は別の方がいい。
アプローチの仕方が違うから、変数単体で認識させていたものを配列突っ込める様にした時なんかにバグの温床になる。

371:デフォルトの名無しさん (スップ Sd02-y/ao)
17/07/19 12:23:01.26 n0rSSeVEd.net
>>364
もちろん目的によるけどね。
個人的には空の文字列は正常側だと思うし

372:デフォルトの名無しさん (スップ Sd02-y/ao)
17/07/19 12:24:14.19 n0rSSeVEd.net
あと空の配列チェックはIsMissingと同等

373:デフォルトの名無しさん (オッペケ Sr5f-nv+z)
17/07/19 12:28:40.18 oLf4rjVBr.net
variant型は脊髄反射で否定するくせにvariantみたいなヤリマン関数が大好きなお前らってw

374:デフォルトの名無しさん (ワキゲー MM6e-FZLt)
17/07/19 12:36:53.61 kmkgyzX6M.net
variantのみを使うor絶対variantは使わない
みたいな論争は見たこと無いな

375:デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
17/07/19 14:51:31.77 pHR1WedN0.net
前スレかその前かの最後の方でVariant型絶対使わないマン出てきていた様な気がするけど。
そういう信条自体は別に良いんだけど、Variant型使えば解決出来る事を信条のせいで解決出来ず、
その結果として「VBAは欠陥」って言い出す変な人はこのスレでよく見かける。

376:デフォルトの名無しさん (ワッチョイ ad73-hcOc)
17/07/19 15:28:03.09 GaPiK1nh0.net
便利な道具を使いこなせないドンくさい奴ってことだよ

377:デフォルトの名無しさん (スッップ Sd70-N0vF)
17/07/19 18:00:12.50 3A2F1Rqpd.net
すいません、353ですが自決しましたのでスルーで結構です
コピペだけでなく内容も理解できるようもっと勉強します

378:デフォルトの名無しさん (スップ Sd02-y/ao)
17/07/19 18:04:33.44 n0rSSeVEd.net
自決

379:デフォルトの名無しさん (オッペケ Srd7-Ucbr)
17/07/19 18:31:39.20 r34rJ2pSr.net
>>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

380:デフォルトの名無しさん (オッペケ Srd7-Ucbr)
17/07/19 18:35:56.55 r34rJ2pSr.net
訂正。最後、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

381:デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
17/07/19 18:47:58.49 pHR1WedN0.net
>>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型以外の場合もあるから、この方がいい。

382:デフォルトの名無しさん (オッペケ Srd7-Ucbr)
17/07/19 19:22:16.26 r34rJ2pSr.net
>>375
おおー、まだブラッシュアップできたか。
素晴らしい。
それなりに使える関数になったかもね。

383:デフォルトの名無しさん (ワッチョイ 974b-+vhE)
17/07/19 19:26:12.74 uwa7S77b0.net
素晴らしい。

384:デフォルトの名無しさん (ワッチョイ e66d-z+eH)
17/07/19 19:29:01.56 +D5BELFr0.net
配列と型のチェックを同時にする時はとりあえず一次元配列に直せば楽ってばっちゃが言ってた

385:デフォルトの名無しさん (スップ Sd02-QKFr)
17/07/19 20:01:06.21 bbPNdV8fd.net
書いてから気づいたけどvbnullは型ではなくてただの列挙体なので判定しなくてもいいよな
あと““はなんかダサいからvbnullstring使うのがいいかも

386:デフォルトの名無しさん (スップ Sd02-y/ao)
17/07/19 20:04:24.02 n0rSSeVEd.net
判定としては UBound < LBound にしなくちゃね

387:デフォルトの名無しさん (オッペケ Srd7-Ucbr)
17/07/19 20:16:48.04 r34rJ2pSr.net
>>379
たとえば、InputBoxでキャンセルを押すとvbnullstringが返る。
何も入力せずにOKを押すと "" が返る。
つまり、vbnullstringと "" は別物なのでそれぞれに判定する必要がある。

388:デフォルトの名無しさん (オッペケ Srd7-Ucbr)
17/07/19 20:20:16.17 r34rJ2pSr.net
>>380
たしかにそのほうがきれいだね。
いや、いろいろ出てくるもんだなぁw
美しいコード書きへの道のりは遠い…

389:デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
17/07/19 20:20:56.04 pHR1WedN0.net
>>379
vbNullStringと""は判定としては別なので、片方だけにすると抜けが起きる。

390:デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
17/07/19 20:28:12.28 pHR1WedN0.net
>>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で判定したい。

391:デフォルトの名無しさん (オッペケ Srd7-Ucbr)
17/07/19 20:38:22.51 r34rJ2pSr.net
一応簡単なテストコード的な…
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)

392:デフォルトの名無しさん (ワッチョイ 626f-S4qQ)
17/07/19 21:08:04.97 WMMf4PqS0.net
エクセルでLISTAGGに相当するものは何ですか?
ソートしてForで上下比較して足してけとか言わないでください。

393:デフォルトの名無しさん (アークセー Sx88-I8+U)
17/07/19 21:53:52.63 UJWjDrSmx.net
>>371
成仏しなされ

394:デフォルトの名無しさん (ドコグロ MM36-OTuW)
17/07/19 22:03:31.20 54vs2xq7M.net
>>373
> 配列は要素数の空判定でお茶を濁そう。
それが簡単にできれば>>363とかがわざわざレスせんよ
>>375
> ArrayはVariant型以外の場合もあるから、この方がいい。
アホか、ビットマスクなんだから And VbArray で判断しろよ

395:デフォルトの名無しさん (イモイモ Se3a-S4qQ)
17/07/19 22:03:54.68 uC8D1QH+e.net
vbNullString を厳密に判定する場合、StrPtr()使わないと判定できないと思ふ
If StrPtr(vbNullString) = 0 Then ’~ Null Pointer

396:デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
17/07/19 22:36:12.42 pHR1WedN0.net
>>388
Select文だとAnd vbArrayって使えないと思うんだけど、例文出してくれる?

397:デフォルトの名無しさん (ワッチョイ f191-+gV6)
17/07/19 23:08:15.46 3ENxF81t0.net
>>386
無い
作れば?

398:デフォルトの名無しさん (ドコグロ MM36-OTuW)
17/07/19 23:33:45.07 54vs2xq7M.net
>>390
ひょっとして応用力ないとか?
Selectにこだわる必要ないし
どうしてもやりたきゃ
Select Case True
Case (VarType(hoge) And VbArray) <> 0
...
でいいだろ

399:デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
17/07/19 23:39:04.83 pHR1WedN0.net
>>392
ああ、やっぱりそういう方法しかないのね。
元々がIf文を可能な限り使わないというところから出発しているし、
それだとIf Else使った方が処理も速いしSelect文で読みやすくするっていう利点も潰してるんだよな。

400:デフォルトの名無しさん (ワッチョイ 47e4-trcG)
17/07/20 01:20:53.05 CiXoybJd0.net
>>38


401:1,383 たしかにvbNullStringと""は別物なんだが vbNullString=""の比較はTrue返すはず 単に空チェックだけなら""とだけ比較しとけば良いんじゃね



402:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 01:36:37.21 IzREkzShr.net
やはり、配列の空判定は別関数にしたほうが良さそうだね。
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

403:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 01:50:57.43 IzREkzShr.net
>>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

404:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 02:11:18.92 IzREkzShr.net
>>394
> 単に空チェックだけなら
Len(Trim(hoge)) = 0
で事足りてるような気はする。
イミディエイトウィンドウでテストしてみて。
? Len(Trim(InputBox("値を入力してね"))) = 0
[OK][キャンセル]どちらでも True が返る。

405:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/20 02:46:26.38 2lo8GEfG0.net
>>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
あくまで配列要素数があるかどうかだけ判断したいなら、こういう関数でもいいと思うけど。

406:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 07:38:01.83 IzREkzShr.net
>>398
おおー、だいぶスッキリしたね。
ひとつ残念なのは、引数の次元指定が美しくないんだよなー。
つか、1次元の要素が空の配列なんて使う?
1次元が空かどうかだけ判定すればいいんじゃね?

407:デフォルトの名無しさん (スッップ Sdff-AsiQ)
17/07/20 08:01:18.50 fTGUueKRd.net
関係ないけど配列の次元を求めるWin32APIがあるのに、いつまでたってもVBAから使えないのは何なの?

408:デフォルトの名無しさん (ブーイモ MM8b-yxn4)
17/07/20 08:08:10.03 izganQUxM.net
>>399
Optionalをわかってないのは美しい美しくないとか言う以前の問題。

409:デフォルトの名無しさん (ワッチョイ c773-XR5Y)
17/07/20 08:34:30.46 fh0pKX4k0.net
その理屈だと、大抵の事はC++で出来るから他の言語は不要ということになるな

410:デフォルトの名無しさん (スッップ Sdff-AsiQ)
17/07/20 09:48:29.70 fTGUueKRd.net
>>402
VBAから使えるようになればC++の必要性が減る、と解釈するのが自然だと思うけどな?

411:デフォルトの名無しさん (ドコグロ MMfb-efHF)
17/07/20 12:39:43.62 qV+ymKYWM.net
>>393
速いとか読み易いの前に正しいコードを書きましょう
って話
動けばOkでいいじゃんと言うなら返す言葉はないけど

412:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 12:51:59.09 IzREkzShr.net
>>401
optionalはわかるよ。
仮に引数指定するとして、どの時点で指定するのかな、って。

413:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 12:55:10.23 IzREkzShr.net
>>404
つか、正しくないコードは動かないでしょ。

414:デフォルトの名無しさん (スッップ Sdff-AsiQ)
17/07/20 13:34:31.13 fTGUueKRd.net
>>398のは
配列要素数があるかどうか「だけ」判断するというのとOptional引数で
次元を指定させる点がちぐはぐなんだよね。

415:デフォルトの名無しさん (スッップ Sdff-AsiQ)
17/07/20 13:40:13.76 fTGUueKRd.net
それとも手持ちの関数をまんまコピペしたのかな?

416:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 18:17:53.32.net
ま、配列の空判定関数は各自で書くということでこの話題は完結かな。
ちなみに俺は、
Function ArrayEmpty(hoge) As Boolean
  On Error Resume Next
If UBound(hoge) - LBound(hoge) < 0 Then ArrayEmpty = True
End Function
って感じ。
空判定関数を書くというだけの話題だったけど、いろいろ勉強になったね。
おつかれさまー。ノシ

417:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 18:32:35.34.net
3行目は
If UBound(hoge) < LBound(hoge) Then ArrayEmpty = True
のほうが美しいな。

418:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/20 18:53:02.67.net
そしたら
ArrayEmpty = UBound(hoge) < LBound(hoge)
でもいける。

419:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 18:56:56.64.net
>>411
素晴らしい!!
頭が柔らかくて羨ましいよ。

420:デフォルトの名無しさん (スップ Sd7f-dGk5)
17/07/20 19:42:53.19.net
完成した関数テンプレにのこしておいてよ
vbaの良質なコードはすごく希少だし

421:デフォルトの名無しさん (ドコグロ MMfb-efHF)
17/07/20 19:58:58.45.net
>>406
たまたま動いてるだけのコードも正しいと言い張るの?

422:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 20:06:31.90.net
>>414
つか、いったい何が悔しかったの?
君ほどの実力者が。

423:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/20 20:27:30.52.net
>>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
簡潔で美しいね。みんなの力の結晶だ。

424:デフォルトの名無しさん (ワッチョイ df06-pqVL)
17/07/20 22:00:04.12.net
>関数テンプレにのこしておいてよ
どこにあんだよ、そんなの
ここで知った人間で保存しておきたいって奴が保存しておけば良いだろ

425:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/20 23:07:38.62.net
スレッドのテンプレに残しておいてほしいって事なんじゃないの。
でも残し始めたら際限無くなるし、コピペで済ませずに理論と意図を理解して同じものを一から書けるようになってほしいなぁ。

426:デフォルトの名無しさん (ワッチョイ df11-efHF)
17/07/21 05:39:07.68.net
>>415
えっ?
なにか悔しいことでもあったの? w

427:デフォルトの名無しさん (オッペケ Sr1b-8ndb)
17/07/21 12:22:10.00.net
こんなコードテンプレに残したらますます初心者が初心者を惑わすスレに拍車がかかるなw
本当に仕事でエクセルマクロを必要としてる人には迷惑かけんなよw

428:デフォルトの名無しさん (アウーイモ MM6b-Z4r9)
17/07/21 12:42:41.45.net
残せというやつがwikiでも立てて残していきなよ

429:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/21 14:22:43.43.net
> 初心者が初心者を惑わすスレ
言い得て妙だww
いいんだよ、それで。
VBA使いはエンジニアじゃないから。

430:デフォルトの名無しさん (アークセー Sx1b-fDNv)
17/07/21 14:37:29.87.net
>>422
さーせん
lsi engっす

431:デフォルトの名無しさん (ワキゲー MM9f-rceg)
17/07/21 14:46:06.01.net
>>422
まだVBA使い≠エンジニアとか言ってるの?
エンジニアでもVBA使いは居るってのに

432:デフォルトの名無しさん (オイコラミネオ MM4f-XR5Y)
17/07/21 15:00:26.78.net
低スキルにありがちな下らないレッテル張り

433:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/21 15:28:32.09.net
どの言語の質問スレも初心者が初心者を惑わすスレ化してるのが悲しい。
「よくある質問と回答」レベルなら問題ないんだけど、ちょっと突っ込んだ質問になるととたんに雲行きが怪しくなる。
ある程度の実力を身につけたら2chじゃなくてちゃんとしたコミュニティか何かに参加するべきなんだろうけど、
だいたい見つからないし、見つけても2chほど気軽に質問投げられるような場所じゃなかったりするんだよな。

434:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/21 17:53:53.00 WPcJx8Myr.net
>>426
知恵袋とか、もっと酷いよ。

435:デフォルトの名無しさん (ドコグロ MM9f-efHF)
17/07/21 19:35:15.46 tSBq1lkVM.net
>>426
ネットの情報なんだから裏を取ればいいだけ
今時書いてあるキーワードでググれば調べるのもそんなに苦労しないしな
惑わされるより過疎化してまともな回答が少なくなってる方が問題だわ

436:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/21 19:48:27.62 xN3mSVPqr.net
>>424
エンジニアでもVBA使いは居るけど、
VBA使いになりたいエンジニアはいない。

437:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/21 19:55:14.10 BM2lcFDS0.net
>>429
これな
いやいやだわ
javascriptのほうが楽しいし

438:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/21 19:56:51.84 xN3mSVPqr.net
>>430
JavaScriptのほうが楽しい理由は?

439:デフォルトの名無しさん (ワッチョイ bf6d-Brs8)
17/07/21 19:57:13.96 /kK1+YO60.net
>javascript
お、おう

440:デフォルトの名無しさん (ワッチョイ bf23-FdGq)
17/07/21 20:01:12.83 cakM1ik60.net
javascriptってvbaの次に底辺やんwww

441:デフォルトの名無しさん (ワッチョイ a779-ijYd)
17/07/21 20:05:21.15 ZXE38ZHX0.net
そりゃていへん(大変)だ

(´・ω・`)b

442:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/21 20:10:04.71 xN3mSVPqr.net
>>433
使ったことある人が多い言語って底辺扱いされやすいよね。
おそらく、C や Java の比じゃないと思うよ。>VBA
でも、Java は使う人が多くなりつつあるから、底辺扱いされるのは時間の問題かもね。

443:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/21 20:58:10.67 4zV211iR0.net
新興の言語って利用者全員が似たような習熟度だから意思疎通が図りやすいし、
どんなにクソみたいなコード書いても判断材料が無くて効率的なコードって言ってもらえるからな。

444:デフォルトの名無しさん (ワッチョイ 674f-ygJY)
17/07/21 21:00:52.93 Byrlump20.net
>>369
欠陥なんじゃなくて、馬鹿ほどvariantを使う法則なだけ

445:デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
17/07/21 21:04:33.39 mLcSl7GWd.net
何の話だっけ?

446:デフォルトの名無しさん (ワッチョイ bf6d-p/Ft)
17/07/21 21:21:32.57 /kK1+YO60.net
西中島南方北口の話

447:デフォルトの名無しさん (ワッチョイ df6f-QK4i)
17/07/21 21:54:13.22 xestLY0Q0.net
長い間SQL触ってたので、
SelectがVBAにもあったのを完全に忘れていた、という話。

448:デフォルトの名無しさん (ワッチョイ bf6d-p/Ft)
17/07/21 21:57:47.01 /kK1+YO60.net
複数の言語を使うとselectとswitchは妙に間違える
俺だけかねー?

449:デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
17/07/21 22:03:49.06 mLcSl7GWd.net
>>441
わかる

450:デフォルトの名無しさん (ワッチョイ bf23-E/h9)
17/07/21 22:16:02.62 gUUF92OH0.net
JavascriptにおけるjQuery的な
VBAのクラスってどっかにないのかな
Set class = New class
class.lastRowAdd(Range("a1"),array)
ってやったら最終行に配列の内容をぶっ込んでくれる
とか
よくある操作をパラメーター渡せばやってくれるような

451:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/21 22:20:47.57 zOHs/jgU0.net
>>443
それって結果は何になるの?

452:デフォルトの名無しさん (ワッチョイ bf23-E/h9)
17/07/21 22:30:00.89 gUUF92OH0.net
>>444
このコードは妄想クラスメソッドなのでエラーになるけど
もし、いろんな汎用処理を詰め込んだクラスなりを
誰か作ってたら欲しいなーと思いましたとさ、という話

453:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/21 23:32:25.33 zOHs/jgU0.net
>>445
そうじゃなくて1次元配列が出来上がるとか2次元配列が出来上がるとか
もちょっと具体的に
あと第二引数はなんだ?

454:デフォルトの名無しさん (ワッチョイ bf6d-p/Ft)
17/07/21 23:36:11.83 /kK1+YO60.net
そこまで引っ張る話題でもなくね?と思うけど確かにどうしたいのかわからんのもあってちょっと聞きたくもあり

455:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/21 23:41:52.51 4zV211iR0.net
見た目からするとSQLで解決しそうな感じがする。

456:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/22 00:08:10.36 AfU+LLGPr.net
科学計算が爆速でできるVBAのフレームワークができれば、VBAの価値は一気に上がる。

457:デフォルトの名無しさん (ワッチョイ bf23-E/h9)
17/07/22 00:08:20.61 6zQAY8zL0.net
データベースな表で
第一引数のセルから下に見ていって一番下に
第二引数の配列をズドンと書き込む
という想定
たしかにそこまで引っ張るネタでもないです

458:デフォルトの名無しさん (ワッチョイ c78b-8ndb)
17/07/22 00:10:10.03 uAFmR2/H0.net
そんな事言わずにもう少しひっぱろうぜ

459:デフォルトの名無しさん (ワッチョイ a723-XR5Y)
17/07/22 07:42:45.82 SunxEu+00.net
>>450
ネタで言ってるなら申し訳ないが、それその通りに書くだけで良くね?

460:デフォルトの名無しさん (ワッチョイ df11-pqVL)
17/07/22 10:25:51.44 8D42j0aL0.net
>>452
そういう話ではない。
まあでもVBA用の色んな処理の検索はしてきたけど、アドイン化されてるものは全然見かけないなあ。
汎用的な機能を詰め込んだアドインってこれくらい?
URLリンク(software.opensquare.net)
>>443の求めるものとは違うんだろうけど。
結局は自作クラスってことになりそう。

461:デフォルトの名無しさん (ワッチョイ df06-pqVL)
17/07/22 10:32:33.05 //x1WvHm0.net
>>451
お前の下らん雑談ネタのためにこのスレが有るわけじゃないんだyo

462:デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
17/07/22 10:39:13.62 kiQvn5e/0.net
あぁarrayは横向きの配列ってことか、なるほど
VBAで汎用ライブラリ作るとしたらどんな名前になるだろう
tyっと作ってみたくもあるな

463:デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
17/07/22 10:51:06.27 c13VlgOtd.net
ブログ検索すれば色々出てくるから好きなのを使う。
製品的なやつが欲しいなら知らん

464:デフォルトの名無しさん (スップ Sdff-dGk5)
17/07/22 12:11:05.98 I23HDuqEd.net
完成した関数テンプレにのこしておいてよ
vbaの良質なコードはすごく希少だしアドインってメンテナンス大変じゃないか?
用途としてはいろんな人に使わせる用だと思うんだけど誰かが使ってる最中に変更できないじゃん
やたらにバージョン上げると某ライブラリみたいな顛末になるし

465:デフォルトの名無しさん (ワッチョイ 4754-ZLoG)
17/07/22 12:15:52.49 1BwCflG80.net
じゃあコピーしたもん編集して誰もいないときに上書きすればいいじゃん

466:デフォルトの名無しさん (ワッチョイ bf6d-rftu)
17/07/22 12:17:43.62 kiQvn5e/0.net
テンプレなんかに残すと肥大化して仕方ない

467:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/22 12:26:21.19 DjK3yBdG0.net
>>431
新しい昨日が追加されるところ
まだクソなのはクソだけどvbaは一切進歩せんからなあ

468:デフォルトの名無しさん (ワッチョイ bf6d-/bFE)
17/07/22 12:38:20.99 kiQvn5e/0.net
新しい昨日って言葉が心に刺さった

469:デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
17/07/22 13:17:27.76 c13VlgOtd.net
某ライブラリの悪口はやめろ

470:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/22 17:08:46.19 AfU+LLGPr.net
>>460
> vbaは一切進歩せんからなあ
エンジニアのための言語じゃないからね。
Dim だの Set だの If Then だの、
うんざりするのはしょうがないとしても、
objFSO
なんていう変数を見た日にゃ、
ぶっ殺したくなるね。

471:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/22 18:29:44.93 DjK3yBdG0.net
>>463
継承もサポートしてないしね
だから初心者の入口としても不向き
マイクロソフト的にもお荷物だろうな
はよ.net framework対応してほしいわね

472:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/22 18:50:19.82 WdXeAKAr0.net
そもそも継承が必要になるほどの大規模な開発をVBAでやる事自体が間違い定期。

473:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/22 19:09:15.96 mlphh3ze0.net
いまさら継承はいらないよ

474:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/22 19:22:53.47 DjK3yBdG0.net
まあ継承より配列周りの強化してほしいかな
わざわざ自分でコレクションもどき作ってるけどめんどいわ

475:デフォルトの名無しさん (ワッチョイ df6f-QK4i)
17/07/22 21:16:12.56 yBUCBb6t0.net
初めてADOっての使ったけど、なんだこりゃ。
MSQueryと違って、列名が出ないじゃん。
いや、ヘッダのON・OFFで無理矢理出せるけど、
そうするとUnionした時に、レコードの途中に列名が出やがる。(列名扱いされないから?)
列名は、出力位置の上に、予め書いとかなきゃいけないの?

476:デフォルトの名無しさん (アークセー Sx1b-SP9G)
17/07/22 21:48:53.95 juX4uYOOx.net
>>467
コレクションもどきって何?
配列もどきのコレクションとは違う何かかな?

477:デフォルトの名無しさん (アークセー Sx1b-SP9G)
17/07/22 21:51:30.60 juX4uYOOx.net
フォームを作ってるとき、同種のパーツのオブジェクト配列が簡単に作れたら良いのにって思うわ

478:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/22 22:39:49.33 WdXeAKAr0.net
>>470
For Each x In Userform.Controls
    Select Case Typename(x)
        Case "Label"
            ...
    End Select
Next
みたいなのじゃなくて?

479:デフォルトの名無しさん (ワッチョイ a791-8s/R)
17/07/22 23:56:17.15 IXNocUxm0.net
>>468
列名も取れる

480:デフォルトの名無しさん (アークセー Sx1b-SP9G)
17/07/23 01:19:51.07 Lr396bh+x.net
>>471
VBだとフォームパーツの型のオブジェクト変数として配列変数が宣言できる
何かと便利

481:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/23 07:50:57.33 Ecz0kxoE0.net
>>470みたいな需要は確かにありそうだ。
さっそくオレ様ライブラリに取り入れよう。

482:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/23 11:44:10.83 MDDS7K/i0.net
>>469
コレクションて値の出し入れできなかったりするじゃん?
値の追加、挿入、削除、入れ替え、ソートあたりメソッドにしたクラスだね
型は安全に出来ないけどなかなか便利
objectにも対応させたいけどやや面倒だから手を付けてない

483:デフォルトの名無しさん (ワッチョイ df6f-QK4i)
17/07/23 22:46:54.50 EbUz/UVB0.net
>>472
Forで1つずつ取る方法しかなかったわ。
CopyFromRecordsetみたいに一撃弾平なのはないのね。

484:デフォルトの名無しさん (アークセー Sx1b-SP9G)
17/07/23 23:32:34.17 O7lPo0j+x.net
>>475
コレクションもどきって表現はミスリーディングだな
コレクションの拡張クラスだそれは
アイテムのソートと入れ替えは便利そう

485:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/24 02:14:49.51 mhaeOVx/0.net
>>477
for eachできないからコレクションもどきとした
中身はただの配列だし

486:デフォルトの名無しさん (アークセー Sx1b-SP9G)
17/07/24 06:50:21.77 t6cPW3USx.net
>>478
コレクションをラップしてるんじゃなくて中身が配列なのか
確かにそれだとコレクションもどきだな

487:デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
17/07/24 08:13:01.75 2edahxxPa.net
>>479
継承できればコレクションからゴニョゴニョした方がいいんだろうけど
どうでも良いけど値の入れ替えのメソッド名をRepracementにしてるんだけどなんかしっくりこないんだよね
なんかいいのないかな

488:デフォルトの名無しさん (スッップ Sdff-AsiQ)
17/07/24 08:16:32.78 6zzYsskzd.net
そりゃ違和感あるだろな

489:デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
17/07/24 08:53:04.80 2edahxxPa.net
>>481
入れ替えで辞書ツール突っ込んだらそれでてきたからしゃーない

490:デフォルトの名無しさん (ワッチョイ bf23-E/h9)
17/07/24 09:00:24.88 vx6bYcmg0.net
配列の話題になってから調べて初めて知ったけど
ArrayListをVBAで使えるんだね
一通りメソッドもそろってるみたいだし、どうかな
実際に使ってみたわけではないけど

491:デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
17/07/24 09:18:31.28 2edahxxPa.net
>>483
便利は便利だけど遅い
三桁四桁の配列なら大差無いだろうけどね
大抵はコレクションで事足りちゃうしね

492:デフォルトの名無しさん (アウアウアー Sa4f-Z4r9)
17/07/24 13:58:09.64 n0AZ+pfTa.net
使い勝手はArrayListのほうが便利そうだね
まぁ確かに自分も使ったことないけど

493:デフォルトの名無しさん (ワッチョイ df6f-QK4i)
17/07/24 21:11:53.14 nIPnkEuj0.net
ちゃんとしたやつがあるのかよwww
自作配列にArrayListって変数名付けたわwwww

494:デフォルトの名無しさん (ワッチョイ 7faa-A43S)
17/07/25 15:00:10.14 1af6ROG50.net
VBAのArrayListって何よ?

495:デフォルトの名無しさん (アウーイモ MM6b-Z4r9)
17/07/25 15:01:06.45 WO88e3uDM.net
.NETのライブラリが使えるて話なんじゃないの?

496:デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
17/07/25 16:38:16.45 k4b2Lxa9a.net
.netライブラリの話で思い出したけどコンストラクタに引数渡せないのクソ不便だよな
渡せるようになれば使えるライブラリも増えそうだが

497:デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
17/07/25 19:00:27.87 cmKKN7nU0.net
>コンストラクタに引数渡す場面ってある?
シートの名前ぐらいなら返り値の.nameを変えるけど、何とも思わん

498:デフォルトの名無しさん (スッップ Sdff-AsiQ)
17/07/25 19:39:14.04 RB4NOmYpd.net
コンストラクタでしか初期化できない(他の初期化用メソッドを持たない)クラスがあれば困るけど、
そういうものって.Netにあるの?

499:デフォルトの名無しさん (ワッチョイ bf6d-xeeJ)
17/07/25 20:05:49.03 cmKKN7nU0.net
>>491
const
vbaでconstが必要な用途が良くわからんけど

500:デフォルトの名無しさん (ドコグロ MM9f-efHF)
17/07/25 20:19:25.50 KNlosRFTM.net
>>488
えっ、そんな機能いつ実装されたん?

501:デフォルトの名無しさん (ドコグロ MM9f-efHF)
17/07/25 20:27:13.52 KNlosRFTM.net
>>491
VBA から使うとは思えないけど Exception の Message はコンストラクタでしか設定できないよ
そもそも>>489はそういう話じゃないような気がするけど

502:デフォルトの名無しさん (ワッチョイ 4791-2faK)
17/07/25 22:08:51.03 8cBHpzox0.net
>>493
.netのクラス使えないのかな?って以前ググったときに
URLリンク(officetanaka.net)
が引っかかって
えらい簡単に使えるんだなぁと思ったんだけど
思っただけで使ったことないし
細かいことも知らない…
ていうか、本当にいろいろ便利に使えるなら
ググるだけでバンバン情報引っかかっていいと思うんだけど
ArrayListのことくらいしか出てこんかった

503:デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
17/07/25 22:30:18.63 k4b2Lxa9a.net
>>490
ブックをそのままラップしたクラスとか作りたいときにパス指定するためのメソッドわざわざ実装するのとかクソめんどくさいじゃん
結構引数指定したい場面あるよ
逆になんで引数渡せないのかという

504:デフォルトの名無しさん (ワッチョイ bf6d-fQyQ)
17/07/25 22:39:21.79 cmKKN7nU0.net
>>496
そういうのは諦めた
エクセルに限らず、IEやら何もかもインスタンス作成してから、プロパティを変更している
言語仕様を嘆いても始まらん

505:デフォルトの名無しさん (ワッチョイ 4791-2faK)
17/07/25 22:46:52.90 8cBHpzox0.net
話の流れで思い出したけど
これ使ったことある人いる?
マクロをC#で書けますよっていうやつ
URLリンク(mokumokucsharp.hateblo.jp)
Visual Studio Codeとかいうのもインストして
サンプルは動くんだけど
インテリセンスがうまく効かんくて使い方がよくわからない

506:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/25 23:01:14.52 Vr2PvTdG0.net
それもそうだけどクラスを含むプロジェクトを参照しているモジュールからそのクラスのインスタンスを
直接Newで作れないのにも困ってる。
Create~系の関数を書いて置き場所に迷う場合が特に。

507:デフォルトの名無しさん (ワッチョイ df6f-QK4i)
17/07/25 23:03:35.24 6CdgJbJQ0.net
仮にC#使いだったとしても、VBA覚えるわ。
VBAにある機能をどれくらいカバーしているのか。
99%以下ならイラネ。
ていうか、そもそもどういう仕様だろう。
C#で書いたのを、内部的にVBAに翻訳して標準モジュールに書き込むとかだったら笑う。

508:デフォルトの名無しさん (ワッチョイ df6f-QK4i)
17/07/25 23:05:23.65 6CdgJbJQ0.net
よく見たら、
全てのVBAコードを生まれる前に消し去りたいとか、凄いこと書いてる。
何かに憑りつかれてはいませんか。

509:デフォルトの名無しさん (ワッチョイ bf6d-fQyQ)
17/07/25 23:08:46.90 cmKKN7nU0.net
機能よりも言語仕様で
if()then
とかやっちゃう

510:デフォルトの名無しさん (ワッチョイ bf6d-fQyQ)
17/07/25 23:09:23.62 cmKKN7nU0.net
しかもうまく動くから消すか消すまいかで悩む

511:デフォルトの名無しさん (ワッチョイ a711-QK4i)
17/07/25 23:34:05.22 K76AsuLq0.net
重複した行を削除したいのですが、ググってみると
重複した下の行を削除するプログラムが殆どです。
上の行を消すプログラムはないでしょうか?

512:デフォルトの名無しさん (ワッチョイ a711-QK4i)
17/07/25 23:46:50.72 K76AsuLq0.net
自己解決しました。

513:デフォルトの名無しさん (ワッチョイ a76f-E/h9)
17/07/26 00:01:02.57 /aun+12z0.net
>>500
なんでこんな馬鹿なのに偉そうにできるんだろう

514:デフォルトの名無しさん (ワッチョイ df6f-QK4i)
17/07/26 00:08:54.58 7P86XL9W0.net
>>506
だって、要は、VBA使いこなせないからC#でとか言ってるわけだろ。
VBAに心の底から辟易って、使う人の能力の問題を、何で言語のせいにしてるのか。

515:デフォルトの名無しさん (ワッチョイ df11-pqVL)
17/07/26 00:11:51.48 U77Cst6m0.net
質問です。
Excel2007ですけど、複数のオートシェイプをグループ化せずに同時にカットできますか?
オートシェイプを選択してSelection.Cutメソッドを実行すると、なぜかセルがテカテカするのです。
ShapaRangeオブジェクトにはCutメソッドが無いみたいですし。
とりあえずSendKeys "^x"で対処してるけどなんだかなあ、という状況です。

516:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/26 00:13:05.34 kYPrva630.net
RangeのUnion、初期値がNothingのときエラーになるのが残念だ

517:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/26 00:13:33.72 kYPrva630.net
初期値つーか左辺

518:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/26 00:


519:21:08.24 ID:o5MQIZHRr.net



520:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/26 00:30:16.20 kYPrva630.net
自分の仕事が楽になるならいいんじゃないか
共有するやつは別

521:デフォルトの名無しさん (ワッチョイ bf1b-pqVL)
17/07/26 00:50:15.20 Fm0oLH560.net
VBAって基本、かならず自動でコンパイルされた上で実行されるんですか?
[デバッグ]-[コンパイル]ってやらずに実行するとえらく遅いんですが。

522:デフォルトの名無しさん (アウアウカー Safb-7zDD)
17/07/26 03:26:24.46 KTzuPZaba.net
日本語変じゃね

523:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/26 06:22:23.80 o5MQIZHRr.net
>>512
コード資産が共有できない(自分の中でも)、というプログラマにあるまじき行為。

524:デフォルトの名無しさん (ドコグロ MMfb-efHF)
17/07/26 07:04:52.98 2BL9ZNyZM.net
>>495
> URLリンク(officetanaka.net)
> が引っかかって
> えらい簡単に使えるんだなぁと思ったんだけど
これは知らなかったわ、教えてくれてありがとう
> ていうか、本当にいろいろ便利に使えるなら
> ググるだけでバンバン情報引っかかっていいと思うんだけど
> ArrayListのことくらいしか出てこんかった
ちょっとググったらCOM経由で動くみたいね(CreateObject で作成するんだから当たり前か)
URLリンク(qiita.com)

525:デフォルトの名無しさん (ドコグロ MMfb-efHF)
17/07/26 07:14:09.63 2BL9ZNyZM.net
>>498
これ使うぐらいならPowerShell使う

526:デフォルトの名無しさん (スッップ Sdff-AsiQ)
17/07/26 07:36:03.65 o8wFJ9U0d.net
>>515
環境の問題なら、自分のなかでは使い続けられるんじゃね?

527:デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
17/07/26 07:46:37.45 rbCQuCda0.net
>>511
中間言語があるんだよなぁ

528:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/26 07:52:21.56 o5MQIZHRr.net
>>518
既存のVBAコードに、C#で書いたプロシージャを呼び出すコードを追加することはできないよね。
VBAで書いたWinのExcelマクロはMacのExcelでも使えるけど、C#で書いたらMacでは使えないよね。

529:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/26 07:53:30.08 o5MQIZHRr.net
>>519
え? マジで? kwsk

530:デフォルトの名無しさん (ワッチョイ 4791-2faK)
17/07/26 07:58:49.22 PoLK+oD40.net
VBAはもう言語仕様をアップデートするつもりはないんだろうけど
せめてIDEくらいはもうちょっと便利にして欲しい
>>516
つまり相互運用の登録がされているライブラリは使えるってことか
でもいちいち自分でdll作ってまでは使わないかなぁ…

531:デフォルトの名無しさん (ワッチョイ c773-5QOx)
17/07/26 08:36:41.46 N2NJoKbw0.net
eclipseがVBA対応したらウケるね

532:デフォルトの名無しさん (アークセー Sx1b-SP9G)
2017/07/2


533:6(水) 09:23:17.61 ID:2KFV8mEox.net



534:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/26 09:40:24.60 19gyZHTT0.net
>>522
dllを作るってどういう状況で必要になるのかよく分からんよな。
別途用意する必要があるって事は他人に使わせるのに難があるし、
VSTO使えるならVSで他の言語使った方が早い場面が多いだろうし、
自作のdllが必要になるような処理をVBAに求める場面というのが想像出来ない。

535:デフォルトの名無しさん (スッップ Sdff-AsiQ)
17/07/26 10:40:08.38 FItiZl47d.net
「Macだと」とか「プログラマとして」とかちょっとこのスレの想定ユーザーからはかけ離れてるんじゃないか?

536:デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
17/07/26 10:40:27.92 nObVd20Fa.net
>>507
いや、vbaがクソ言語なのは避けようのない事実だろ
C♯erがわざわざ新しく覚える時間が無駄というのは分かるよ
オブジェクト指向にドップリしてたら使いにくいことこの上ないと思うし

537:デフォルトの名無しさん (スッップ Sdff-AsiQ)
17/07/26 11:27:30.63 FItiZl47d.net
そんなにクソ言語だとは思えない

538:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/26 11:43:09.73 19gyZHTT0.net
VBAをクソクソ言っている人たちはどういう立場なんだろうな。
クソだと思うなら近づかなければいいのに。
なんか他の言語でもメインで使い始めた途端にクソクソ言いそう。

539:デフォルトの名無しさん (スッップ Sdff-AsiQ)
17/07/26 11:49:10.59 FItiZl47d.net
作ったものを他人と共有しようとすると限界が低い。でも自分一人ツールと割り切れば相当なことができる。
Officeソフトにそれ以上求めてもしょうがないでしょ。

540:デフォルトの名無しさん (ワッチョイ c773-5QOx)
17/07/26 12:23:16.56 N2NJoKbw0.net
VBAは手軽さを重視してるんだから、高度な機能がないって意見は的外れなんだよ

541:デフォルトの名無しさん (ドコグロ MM9f-efHF)
17/07/26 12:43:21.28 0/Y/FM4fM.net
>>529
ん?
アマチュアの人かな?
お仕事ならクソだろうが使わざる得ない状況なんていくらでもあると思うが

542:デフォルトの名無しさん (ワキゲー MM9f-rceg)
17/07/26 12:47:32.19 aG45BvrzM.net
>>529
理解できない自分を正当化してるだけさ

543:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/26 12:57:07.83 19gyZHTT0.net
>>532
VBA言語をクソって言っちゃうくらいなのにVBAでお仕事取っちゃうの?
もう少し仕事は選んだ方がいいんじゃないか。

544:デフォルトの名無しさん (スップ Sdff-AsiQ)
17/07/26 13:05:35.40 ecs8OXuXd.net
そんなことだと底辺職業だと見なされるぞ

545:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/26 13:36:33.55 o5MQIZHRr.net
>>526
うん、そういうこと。
ExcelマクロをC#で書くような人は、このスレの想定ユーザーからはかけ離れてるよね、ってこと。

546:デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
17/07/26 13:40:18.49 nObVd20Fa.net
クソだけどofficeのマクロ言語はこれしかないから仕方なく使うしか無いだろ
プログラム言語としては時代遅れの化石なのはさすがに共通認識だと思ってたわ
現状くそなのもそうだし、これから先進化することも決してないこともクソ
あと、手軽さと高度な機能は別に共存できるでしょ

547:デフォルトの名無しさん (スップ Sdff-AsiQ)
17/07/26 14:23:28.25 ecs8OXuXd.net
>>536
それは別にかけ離れてはいないだろ
Macだとかプロのプログラマはかけ離れている

548:デフォルトの名無しさん (ワッチョイ a76f-E/h9)
17/07/26 14:25:46.34 /aun+12z0.net
プログラマとしてって言いだしたのって(オッペケ Sr1b-QbI6)だな
自演までして何がやりたいんだか・・・

549:デフォルトの名無しさん (JP 0H4f-QK4i)
17/07/26 14:27:35.77 +1cN/gIlH.net
>>527
> オブジェクト指向にドップリしてたら使いにくいことこの上ないと思うし
俺は逆だと思うよ
オブジェクト指向をよく知ってたほうが、VBAを使いこなせる
・クラスモジュールを使いこなす
・いわゆる「インタフェース継承」を使いこなす
・WithEventsを使いこなす
大抵の奴は「クラスモジュールっていつ使うんですか」レベルだから

550:デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
17/07/26 15:11:24.07 ZPUGQ/usa.net
>>540
俺の言いたいことを一ミリも汲んでくれてないなw
そりゃオブジェクト指向的なプログラミングを知ってれば非オブジェクト指向言語でも構造的に自然と書くようになる
それとこれとは別の話
機能がないからわざわざ自分で作らにゃいかんから不便だって話をしてる

551:デフォルトの名無しさん (ワッチョイ df06-pqVL)
17/07/26 16:52:15.43 6VvQXdi20.net
この手の下らんやり取りはこれまでもあったし、これからもウンザリするほど続くんだろうなぁ┐(´д`)┌ヤレヤレ

552:デフォルトの名無しさん (オッペケ Sr1b-QbI6)
17/07/26 18:04:37.55 o5MQIZHRr.net
>>539みたいに、自演自演て騒ぐ奴をしばしば見かけるけど、彼は何がしたいの?
つか、そもそもここは自演ができないスレなんだよね?
こういうのはスルーしたほうがよいのでしょうか。

553:デフォルトの名無しさん (ササクッテロル Sp1b-8s/R)
17/07/26 18:16:40.16 VQAVDfi4p.net
>>541
オブジェクト指向と機能は別の概念だけどな
機能は言語がなんであっても追加出来るだろうし
オブジェクト指向は言語に関する概念だから

554:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/26 18:30:45.45 19gyZHTT0.net
オブジェクト指向は設計に対する概念

555:デフォルトの名無しさん (JP 0H4f-QK4i)
17/07/26 18:33:38.33 +1cN/gIlH.net
>>541
オブジェクト指向の一切を封じられてるから使いづらいというのなら、それはそうでもないってことさ
機能が足りないというんなら、先人が作ったライブラリでも探せば?
URLリンク(github.com) とか

556:デフォルトの名無しさん (ササクッテロル Sp1b-8s/R)
17/07/26 18:41:04.50 VQAVDfi4p.net
>>545
設計と言語両方じゃね?

557:デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
17/07/26 19:21:44.23 rbCQuCda0.net
>>540
自作クラスってどういう時に使うの?
excelが思いっきりオブジェクトだから、それに対する手続き的な操作しかしないわ

558:デフォルトの名無しさん (スップ Sdff-AsiQ)
17/07/26 19:28:41.05 ecs8OXuXd.net
>>548
状態を持ったモノを扱いたいときじゃね?
状態を持たないんだったら関数の組み合わせで表現するのは簡単だ。

559:デフォルトの名無しさん (ドコグロ MM9f-efHF)
17/07/26 19:39:55.05 pjdGyN9QM.net
>>534
言語で仕事選べるとか無職の発送は素晴らしいな w

560:デフォルトの名無しさん (ワッチョイ a791-8s/R)
17/07/26 19:42:18.93 W1HWCg900.net
>>549
状態を持つ⇒オブジェクトを使う
対偶は
オブジェクトを使わない⇒状態を持たない
対偶は必ず真とはいえなくない?

561:デフォルトの名無しさん (ドコグロ MM9f-efHF)
17/07/26 19:45:32.31 pjdGyN9QM.net
>>548
ログクラスとか作ってたな
書き込むシートと書き込む行を別々に管理するのは嫌だったから
でも継承もできないしコンストラクタの引数も持てない状況ではあまり使いやすくならないし結局クラスはほとんど使わない
そもそも俺がずっと保守するわけにもいかんから

562:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/26 19:45:44.80 19gyZHTT0.net
>>547
オブジェクト指向言語は「オブジェクト指向的な設計が可能な言語」の事だから、
言語によってオブジェクト指向が決まるわけではないし、言語に対する概念というと違うと思うなぁ。
>>550
募集要項に何の言語が出来るかとか普通書いてないか?
Javaで募集かけたけどC#での開発がメインですみたいなカオスな職場もあんまりないだろ。

563:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/26 19:46:32.77 +NZ2Dbuu0.net
>>544
オブジェクト指向をサポートしてるかって話だよ
なんとなく分かるべ
>>546
ことさ、じゃなくてさ
俺はそういうところがクソだと言ってるの
クソはクソでも使わなきゃいから使うだけで
ライター、チャッカマン、バーナーが他所であるのにマッチでも火をおこせるしこれはこれで良いもんだぞって言ってるようなもん

564:デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
17/07/26 19:52:11.21 rbCQuCda0.net
>>552
ログはfunctionだなぁ
コンストラクタ使えないと、わざわざNewしてクラス無いメソッド呼び出してって二度手間じゃね。
functionならいつでもどこでも一行で済む

565:デフォルトの名無しさん (スップ Sdff-AsiQ)
17/07/26 19:53:00.06 ecs8OXuXd.net
>>551
⇒(ならば)とは言ってないけどな
まあ、オブジェクトを使わない⇒状態を持たせづらい(グローバル変数を使うはめになる)
あくまでVBAでの話だよ

566:デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
17/07/26 19:53:37.44 rbCQuCda0.net
>>549
例えば、具体的にどういう時に使うの?
状態って言っても初期値とかExcelから拾ってくるから、それをわざわざclassにほーり込むのもなー

567:デフォルトの名無しさん (ワッチョイ a791-8s/R)
17/07/26 19:56:29.43 W1HWCg900.net
>>553
オブジェクト指向言語は
オブジェクト指向設計したものを
そのまま実装し易い言語じゃないかな
言語の概念でもあると思うけどな
オブジェクト指向言語じゃなくても実装できるのは確かだけど
それならVBAでもオブジェクト指向設計を実装できるんじゃないかな

568:デフォルトの名無しさん (スップ Sdff-AsiQ)
17/07/26 19:57:08.36 ecs8OXuXd.net
>>557
初期値より途中の経緯を記憶しておかないと次の計算ができないものとか?
「ワークシートに書き出す」じゃ再利用性に欠ける

569:デフォルトの名無しさん (ワッチョイ bf6d-1kH5)
17/07/26 20:08:20.48 rbCQuCda0.net
>>559
だから具体的にどんなことをするんだよw
ゲームとかはナシでね

ちと思いつかない

570:デフォルトの名無しさん (ワッチョイ a791-8s/R)
17/07/26 20:09:21.78 W1HWCg900.net
>>556
グローバル変数を使わなくても状態を表現できるんじゃね?

例えば再帰関数みたいに状態を引数にするとか

571:デフォルトの名無しさん (ドコグロ MM9f-efHF)
17/07/26 20:11:22.90 pjdGyN9QM.net
>>553
> オブジェクト指向言語は「オブジェクト指向的な設計が可能な言語」の事だから
そんなことを言い出したらアセンブリ言語でもオブジェクト指向は可能だよ
そういう極端な話をしたい訳じゃないんだと思うよ
> >>550
> 募集要項に何の言語が出来るかとか普通書いてないか?
ああ、そういう働き方してるひとなのね
もっとでっかい案件レベルのつもりだったから話が噛み合わないのも無理ないな

572:デフォルトの名無しさん (ドコグロ MM9f-efHF)
17/07/26 20:12:48.62 pjdGyN9QM.net
>>555
書き込み行はどうやって覚えてるの?
複数のログを扱うとか面倒じゃね?

573:デフォルトの名無しさん (ドコグロ MM9f-efHF)
17/07/26 20:15:20.68 pjdGyN9QM.net
>>558
> それならVBAでもオブジェクト指向設計を実装できるんじゃないかな
関数ポインタがないから継承とか無理じゃね?

574:デフォルトの名無しさん (ワッチョイ a791-8s/R)
17/07/26 20:15:48.34 W1HWCg900.net
状態を持つ必要がある入出力関係が
独立に多数ある場合は
クラスを使うと比較的実装が簡単になるのかな?

575:デフォルトの名無しさん (ワッチョイ bf6d-1kH5)
17/07/26 20:17:56.75 rbCQuCda0.net
>>563
ログはlogシート一つ、3列
時間 / タイプ / 内容
7/26 20:00 log 作業開始
7/26 20:05 success 作業成功
7/26 20:07 error err.discriptionの内容
7/26 20:10 log 作業終了
で、書き込む時に毎回A列の最終行を取得し、そこに記録してる
覚える必要はないと思う

576:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/26 20:24:18.05 +NZ2Dbuu0.net
表の検索とかsqlでやる人もいるんだろうけど自分としてはクラスにしちゃうのがしっくりくるわ
配列の操作もクラスにしてると楽
あと、似たような処理で操作する対象が違うメソッドなんかは同じ名前にしても問題ないところとかも地味に便利だよ
関数だと命名に困ることがよくある

577:デフォルトの名無しさん (スップ Sdff-AsiQ)
17/07/26 20:30:27.76 ecs8OXuXd.net
>>560
さあ?いろいろあるでしょ
数値を放り込むとその度に回数をカウントアップし、最大値・最小値、合計、時刻を記録する、とか。
これくらいだったらワークシートでもできるけど、そういう対象が数多くなるとオブジェクト配列でやりたくなる。
どのワークシートのどこに?とか考える必要なくなるしエクセル以外のOfficeでも使えるし。

578:デフォルトの名無しさん (ワッチョイ a791-8s/R)
17/07/26 20:51:20.79 W1HWCg900.net
>>564
一般的な形では難しいかもしれないけど
サブクラスに相当する関数から
スーパークラスに相当する関数を呼べばいいんじゃね?
逆にスーパークラスに相当する関数に
スイッチみたいな引数を付けて
サブクラスに相当する関数に分岐するとか

579:デフォルトの名無しさん (ワッチョイ df6f-QK4i)
17/07/26 21:00:52.52 7P86XL9W0.net
>>567
SQLを使うのって速度的な理由。
自作クラスでSQL以上のスピードが出るなら、
みんなそうするわ。

580:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/26 21:20:54.79 19gyZHTT0.net
>>558
VBAで出来ないと思っているならオブジェクト指向を何か勘違いしているからオブジェクト指向設計の本を読むといいよ。
他の言語みたいな書き方が出来ないだけで、VBAでもオブジェクト指向プログラミングは普通に出来るから。

581:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/26 21:34:48.38 +NZ2Dbuu0.net
>>570
まあ、あんまり大きなデータは扱わんからな
別に検索する形式が決まってるなら内部的にsqlで値抜き出してもいいわけだし
データの塊をオブジェクトとして扱っちゃったほうが何かまとまり感あってしっくり来るって感じかな

582:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/26 21:36:24.28 +NZ2Dbuu0.net
>>571
できるできないの話じゃないんだって
あとオーバーライドはちょっと厳しくないか
どうやって実装する?

583:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/26 21:54:31.59 kYPrva630.net
>>564
AddressOf あるし使おうと思えば使える

584:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/26 22:02:04.56 19gyZHTT0.net
>>573
自身のメンバとして基底クラスを宣言して、基底クラスに自身を登録して、
基底クラスのメソッドを実行すると基底クラス側で自身の特定のメソッドが呼ばれるとかかな。

585:デフォルトの名無しさん (ワッチョイ df11-efHF)
17/07/26 22:05:43.16 gz+R3HSW0.net
>>569
さすがにそれはないわ...

586:デフォルトの名無しさん (ワッチョイ df11-efHF)
17/07/26 22:09:54.70 gz+R3HSW0.net
>>574
アドレス取るのはいいけどどうやって使うつもり?

587:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/26 22:32:43.94 kYPrva630.net
>>577
ごめんVBAから直接には使えなかった

588:デフォルトの名無しさん (ワッチョイ bf23-FdGq)
17/07/26 23:08:50.27 +wB1yzpw0.net
>>511
officeも何もなくてもc#書けるけど。
コンパイラ初めからあるから。

589:デフォルトの名無しさん (ワッチョイ bf23-FdGq)
17/07/26 23:11:34.30 +wB1yzpw0.net
vbaでオブジェクト指向とか中級者がやることだな。
初心者よりタチ悪いこともある。

590:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/26 23:58:17.75 kYPrva630.net
上級者はなにするんだ?

591:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 00:50:19.96 Gu8HEug70.net
>>576
なぜ?
で、どうするの?

592:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 01:05:44.74 Gu8HEug70.net
>>571
VBAと言う言語にクラスとかオブジェクト指向の概念が入っている
つまりオブジェクト指向の概念は言語にもつながる
と言う主張
一方でオブジェクト指向は設計にのみ関わる概念と言う主張もある
オブジェクト指向の概念を取り入れた言語でオブジェクト指向設計したものを実現するのと
オブジェクト指向の概念がない言語で実現するのでは
生産性とかに差が生じるだろう

593:デフォルトの名無しさん (ワッチョイ 2623-toSE)
17/07/27 01:36:25.07 Ddw23w1u0.net
>>581
上級者はvbaは大人しく手続き型的にやるよ。

オブジェクト指向しようとして、これできないかなーあれできないかなーとか悩むだけ無駄。

594:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 01:54:44.40 Gu8HEug70.net
>>584
各シートの統計情報を取りたい時はどうする?
例えば、セルを更新した回数、最大値、最小値、平均値
を各シート毎に知りたい時

後から分散とか標準偏差とかも知りたくなったらどうする?

595:l (ワッチョイ 0fcf-GNib)
17/07/27 02:24:19.55 lqCZB24a0.net
Youtuberヒカルが月収を明らかに!!おはよう朝日です出演
URLリンク(www.youtube.com)
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
URLリンク(www.youtube.com)
ユーチューバーの儲けのカラクリを徹底検証!
URLリンク(www.youtube.com)
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
URLリンク(www.youtube.com)
誰も言わないなら俺がYouTuberのギャラ相場を教えます
URLリンク(www.youtube.com)
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
URLリンク(www.youtube.com)

最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいい
顔出したくないならラファエルみたいに仮面かぶればいい
手っ取り早く視聴数稼ぐには有名ユーチューバーへの物申す系動画がオススメ

596:デフォルトの名無しさん (ワッチョイ 2623-toSE)
17/07/27 04:56:34.97 Ddw23w1u0.net
>>585
クラスやらユーザ定義型を作るね。

597:デフォルトの名無しさん (オッペケ Srb3-ZCwv)
17/07/27 05:41:33.30 8/6stQ5Xr.net
>>584
つ 上級者の定義

598:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 06:25:09.17 Gu8HEug70.net
>>587
クラスってオブジェクト指向じゃないの?

上級者的に手続き型でやらないの?

599:デフォルトの名無しさん (ドコグロ MM8a-gqKx)
17/07/27 06:47:24.74 P1js1uXhM.net
>>582
> なぜ?

> 逆にスーパークラスに相当する関数に
> スイッチみたいな引数を付けて
> サブクラスに相当する関数に分岐するとか
サブクラスを増やす度にスーパークラスに手を入れるつもりなの?
真顔で言ってるなら単なるアホだろ w

> で、どうするの?
無理じゃね?
って書いてあるんだが...

600:デフォルトの名無しさん (ドコグロ MM8a-gqKx)
17/07/27 07:00:09.74 P1js1uXhM.net
>>585
> 各シートの統計情報を取りたい時はどうする?
要件次第
> 例えば、セルを更新した回数、最大値、最小値、平均値
> を各シート毎に知りたい時
更新回数以外は全セルなめて計算することもあるしイベント毎に合計、最大、最小を更新していくのもあるだろうな
> 後から分散とか標準偏差とかも知りたくなったらどうする?
そういう機能を実装するだけ
イベント以外はオブジェクト指向関係ないと思うぞ

601:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 07:12:45.05 Gu8HEug70.net
>>590
でいちいち同じ処理をコピペするの?

602:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 07:13:37.01 Gu8HEug70.net
>>591
生産性が違うんじゃね?

603:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 07:15:00.43 Gu8HEug70.net
>>591
全セルなめるとか性能要件を満たせなくなる可能性が高いだろ

604:デフォルトの名無しさん (ワッチョイ 666d-V1Wy)
17/07/27 07:17:39.18 mlaDFoVL0.net
>>594
それはその時に考えたほうが良いと思う
大体
> 例えば、セルを更新した回数、最大値、最小値、平均値
> を各シート毎に知りたい時
こんな状態がまずないw

605:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 07:17:56.55 Gu8HEug70.net
>>590
サブクラスからスーパークラスを呼ぶ方は?

606:デフォルトの名無しさん (ドコグロ MM8a-gqKx)
17/07/27 07:37:59.47 P1js1uXhM.net
>>592
どこからコピペが出てきたのか意味不明

>>593-594
だから「要件次第」って書いてあるんだが
最初に一度はなめないといけないから一回しか呼ばれないと言う要件ならその方が効率的だし

>>596
それになんの意味があるんだ?
マジでオブジェクト指向の基礎からやり直した方がいいレベルだぞ

607:デフォルトの名無しさん (ワッチョイ 2623-toSE)
17/07/27 07:40:20.87 Ddw23w1u0.net
>>589
そうだよ。
データ構造だけ定義するんだよ。

608:デフォルトの名無しさん (アウアウエー Sae2-kGGk)
17/07/27 08:16:42.60 LMuXn2N9a.net
>>575
結局それだと要らんもんまで呼び出したり不便なんだよ
やれんことはないけど不便
オーバーロードもやれんことはないけど実装がめんどくさい
使いたい場面は結構出てくると思うけどね
インターフェースもなんかスマートじゃないし

609:デフォルトの名無しさん (ワッチョイ 1f73-cdfR)
17/07/27 08:50:43.35 f8l+azOG0.net
お前らスレタイ読んで他所へ行け

610:デフォルトの名無しさん (ワッチョイ db5a-PZKh)
17/07/27 09:44:44.74 cQuO+1bD0.net
【IT】10代のネット環境「スマホのみ」が7割、「PCのみ」は25%にとどまる [無断転載禁止]©2ch.net
スレリンク(bizplus板)

611:デフォルトの名無しさん (スップ Sd8a-y7IM)
17/07/27 09:49:36.92 yI2DKD3yd.net
>>600
クラスモジュールがある以上、このスレの話題として守備範囲内

612:デフォルトの名無しさん (JP 0H76-ZO1u)
17/07/27 10:22:34.31 ZNB0F0Q0H.net
>>554
> ライター、チャッカマン、バーナーが他所であるのにマッチでも火をおこせるしこれはこれで良いもんだぞって言ってるようなもん
マッチだけでも十分OOできる
それにWithEventsもあるしね
URLリンク(github.com) のソース読んだか?以外といろいろできるぞ

613:デフォルトの名無しさん (スップ Sd8a-y7IM)
17/07/27 10:40:17.72 yI2DKD3yd.net
>>603
これはあなたが作者さんなの?

興味深いが手っ取り早く知りたい
VBEX /testから読めばいいのかな?

614:デフォルトの名無しさん (JP 0H76-ZO1u)
17/07/27 10:55:11.44 ZNB0F0Q0H.net
>>604
> これはあなたが作者さんなの?
いや、俺じゃないよ
コードサンプルとして読んでみたらってこと

あとこれとか
URLリンク(github.com)

OOの知識があって、いわゆる「インターフェース継承」を視野に入れれば、かなりのことができる
さらに、WithEventsを使えば双方向データバインディングなんかも実装できる

615:デフォルトの名無しさん (ドコグロ MM22-toSE)
17/07/27 11:24:49.36 698/A489M.net
インタフェースなんかvbaで使うなボケ

616:デフォルトの名無しさん (スップ Sd8a-y7IM)
17/07/27 11:56:09.26 yI2DKD3yd.net
>>605
うーん、、、
日本語のないかな?(ボソッ

617:デフォルトの名無しさん (アークセー Sxb3-PRKf)
17/07/27 12:01:06.07 SAqwCo2Mx.net
>>606
ほーわーいー

618:デフォルトの名無しさん (スップ Sd8a-y7IM)
17/07/27 12:17:23.37 yI2DKD3yd.net
チンリン山脈

619:デフォルトの名無しさん (アウアウエー Sae2-kGGk)
17/07/27 13:24:05.39 LMuXn2N9a.net
>>603
いやだからさ
俺の言いたいこと伝わらないし理解する気無いよね
こっちはマッチしか無いから仕方なくマッチ使ってんの
不満だからって努力を放棄してるわけじゃないからな?
ただどう考えても手間だろ
そんだけの話

620:デフォルトの名無しさん (JP 0H76-ZO1u)
17/07/27 14:02:53.37 ZNB0F0Q0H.net
>>610
君も俺の言いたいこと1ミリも理解しようとしてないから、お互い様だね

621:デフォルトの名無しさん (ササクッテロル Spb3-ntdb)
17/07/27 14:43:39.94 DPiXNUUHp.net
>>597
意味がわからない?
学びなおした方が良いぞ

622:デフォルトの名無しさん (ドコグロ MM8a-gqKx)
17/07/27 16:09:11.81 P1js1uXhM.net
>>612
> サブクラスに相当する関数から
> スーパークラスに相当する関数を呼べばいいんじゃね?
そこまで言うならなんの意味があるのか説明してみな

623:デフォルトの名無しさん (ワッチョイ ea06-HJpE)
17/07/27 16:44:21.21 7xCZa4oD0.net
だからさぁお前らは雑談したいだけだろ?スレ立ててそこでやれっつーの
クソうぜぇ

624:デフォルトの名無しさん (アウアウエー Sae2-kGGk)
17/07/27 16:44:34.77 uf/My/5wa.net
>>611
使い方によってはvbaだってoopできるよ!って言いたいんでしょ?

625:デフォルトの名無しさん (JP 0H76-ZO1u)
17/07/27 17:00:44.58 ZNB0F0Q0H.net
>>615
さいしょから言ってるでしょ
> オブジェクト指向にドップリしてたら使いにくいことこの上ないと思う
なことないよ

626:デフォルトの名無しさん (スップ Sd8a-y7IM)
17/07/27 17:11:23.71 yI2DKD3yd.net
使いたいときに便利な機能を自由につまみ食いできるのがいいライブラリだと思っているんだが、
オブジェクト指向のライブラリって少しおせっかいというか世界観を押し付けてくるところがある。
会員にならないと利用できないサービスみたいな感じ。
自分で作ったものを自分で利用する分には当然問題ないんだけどね。
VBAの言語機能の弱さを考えると、クラス間の関連のある体系的な使い方を実現するのは厳しいだろう。

627:デフォルトの名無しさん (アウアウエー Sae2-kGGk)
17/07/27 17:44:10.44 uf/My/5wa.net
>>616
俺は工夫を強いられてる時点でうんちだと言�


628:チている 以上です



629:デフォルトの名無しさん (JP 0H76-ZO1u)
17/07/27 17:59:09.25 ZNB0F0Q0H.net
経験不足だね
言語10個くらいマスターしてこい

630:デフォルトの名無しさん (アウーイモ MM9f-k5Qo)
17/07/27 19:42:01.40 xCwJ4jCdM.net
某サイトを参考にメールを一括作成するVBAを書いています。
createitemfromtemplateの行で「実行時エラー13 型が一致しません」というエラーが出ます。
どうやらcreateitemfromtemplateがうまく機能していないようなのですが、解決方法を教えていただけませんでしょうか。
よろしくお願いいたします。
※「Microsoft Outlook 14.0 Object Library」の参照設定はONになっています。
-----------------------------------
Sub main()

Dim OL As New Outlook.Application
Dim M As MailItem

Dim MaxRow: MaxRow = Range("A1").End(xlDown).Row

For i = 2 To MaxRow
Set M = OL.createitemfromtemplate("D:\本文.msg")

M.To = Cells(i, 列.件名).Value
M.Subject = Cells(i, 列.件名).Value
M.Attachments.Add "D:\" & Cells(i, 列.添付ファイル).Value
M.HTMLBody = Replace(M.HTMLBody, "●●", Cells(i, 列.氏名).Value)
M.SaveAs "D:\" & Cells(i, 列.企業名).Value & "_" & Cells(i, 列.氏名).Value & ".msg"
Next

End Sub
-----------------------------------

631:デフォルトの名無しさん (ワッチョイ 6623-V1Wy)
17/07/27 20:32:44.20 60P4ZjAM0.net
>>620
msdnのリファレンスをみると
Outlookテンプレート(.oft)を指定しろって書いてあるので
怒られているとおり、型がちがうのでしょう。

CreateItemメソッドを使えばいいんじゃないでしょうか。

632:デフォルトの名無しさん (ワッチョイ 0fe4-Tef8)
17/07/27 21:59:25.00 aAe8+IMH0.net
オブジェクト指向がどうこうって語りたいなら

オブジェクト指向
って言葉と
オブジェクト指向言語
って言葉をちゃんと区別して発言して下さい

633:620 (アウーイモ MM9f-k5Qo)
17/07/27 22:07:28.99 xCwJ4jCdM.net
>>621
返信ありがとうございます!!
すみません、CreateItemでも変わらずエラーでした・・。
ちなみに下記のように.oftを指定しても同じでした。
これは本当に不思議です・・・。

---------------------------------------
Sub test03()

Dim OL As New Outlook.Application
Dim M As MailItem
Set M = OL.CreateItemFromTemplate("D:\本文.oft")

M.To = "aaaa@bbb.co.jp"
M.SaveAs "D:\test03.msg"

End Sub
---------------------------------------

634:デフォルトの名無しさん (ワッチョイ 6aaa-V1Wy)
17/07/27 22:19:54.50 eHKEweRs0.net
関西のお笑いと関西のお笑い芸人も区別して語るべきなのか?

635:デフォルトの名無しさん (アークセー Sxb3-PRKf)
17/07/27 22:40:28.48 SAqwCo2Mx.net
>>624
そうよ

636:デフォルトの名無しさん (ワッチョイ ea6f-ZO1u)
17/07/27 22:46:54.67 e65zqkX+0.net
俺予想だと、2023年くらいに.NETと統合されるので、大丈夫じゃないの。

637:デフォルトの名無しさん (ワッチョイ 6623-V1Wy)
17/07/27 23:04:48.75 60P4ZjAM0.net
>>623
Sub test()

Dim ol As New Outlook.Application
Dim mi As MailItem
Set mi = ol.CreateItem(olMailItem)
mi.Display

End Sub

この最小構成でメール編集画面がでるかお試しを。
出なかったら参照設定が変なのかも。
Excelのバージョンが変わると勝手に参照設定のバージョンも
変わるという罠に引っかかったことがあるので。
実行時バインディングでやってみると言う手もあり。

638:620 (アウーイモ MM9f-6wLz)
17/07/27 23:18:55.37 xCwJ4jCdM.net
>>627
最小構成でやってみると、やはり同じエラーでした!
これは、参照ができていないのですか??

639:デフォルトの名無しさん (オッペケ Srb3-ZCwv)
17/07/27 23:25:30.12 8/6stQ5Xr.net
'// 1行目の項目名が、A列から順に
'//[アドレス][件名][添付ファイルパス][本文]
'// のとき、

Dim dataSet
Dim lastRow As Long
Dim i As Long

lastRow = Cells(Rows.Count, 1).End(xlUp).Row
dataSet = Range(Cells(2, 1), Cells(lastRow, 4)).Value

With CreateObject("Outlook.Application")
  .GetNamespace("MAPI").GetDefaultFolder(16).Display
  For i = 1 To lastRow - 1
    With .CreateItem(olMailItem)
      .To = dataSet(i, 1)
      .Subject = dataSet(i, 2)
      .Attachments.Add dataSet(i, 3)
      .Body = dataSet(i, 4)
      .Save
    End With
  Next i
End With

640:デフォルトの名無しさん (ワッチョイ 6623-V1Wy)
17/07/27 23:27:06.45 60P4ZjAM0.net
>>628
よく考えたら、参照ならその前にエラーを吐きそう。
ためしに

Sub test()

Dim ol As Object
Set ol = CreateObject("Outlook.Application")
Dim mi As Object
Set mi = ol.CreateItem(olMailItem)
mi.Display

End Sub
これをOption Explicitを無効にして実行したら
どうなるでしょうか?

だめならOS再起動してみる。
どうにも理解不能なエラーがこれで直ったことがあるw。

641:デフォルトの名無しさん (ワッチョイ 0fe4-Tef8)
17/07/27 23:56:32.00 aAe8+IMH0.net
>>628
まず、そのユーザーでOutlookはちゃんと動いてメールの送受信できるのか?

642:620 (アウーイモ MM9f-6wLz)
17/07/28 00:24:24.58 EJW5hZGgM.net
>>630
試しましたが同じエラーでした。

>>631
問題なくできています。


みなさん、ご協力ありがとうございます。ご迷惑おかけしてすみません。
今気づいたのですが参照先が14.0でした。最新は15.0なんですよね?これが原因でしょうか?

643:620 (アウアウアー Sab6-6wLz)
17/07/28 04:23:09.57 Kx1QSHwna.net
皆様ありがとうございました! 
理由はわかりませんが突然できるようになりました!
本当にご迷惑おかけしました!

644:デフォルトの名無しさん (オッペケ Srb3-ZCwv)
17/07/28 04:32:44.73 ccATQH/dr.net
>>632
ごめん。コード間違ってた。orz

参照設定をoffにし、↓のコードで試してみて。

'// olMailItemを直値(0)に変えた
Dim dataSet
Dim lastRow As Long
Dim i As Long

lastRow = Cells(Rows.Count, 1).End(xlUp).Row
dataSet = Range(Cells(2, 1), Cells(lastRow, 4)).Value

With CreateObject("Outlook.Application")
  .GetNamespace("MAPI").GetDefaultFolder(16).Display
  For i = 1 To lastRow - 1
    With .CreateItem(0)
      .To = dataSet(i, 1)
      .Subject = dataSet(i, 2)
      .Attachments.Add dataSet(i, 3)
      .Body = dataSet(i, 4)
      .Save
    End With
  Next i
End With

645:デフォルトの名無しさん (オッペケ Srb3-ZCwv)
17/07/28 04:34:16.17 ccATQH/dr.net
一歩遅かったか…orz

646:620 (アウアウアー Sab6-6wLz)
17/07/28 06:49:10.86 Kx1QSHwna.net
>>635
おはようございます!
ありがとうございます!

647:デフォルトの名無しさん (ワッチョイ db11-AITk)
17/07/28 23:02:57.85 +oxMyCi10.net
win10
excel2016で
MSXML2.XMLHTTPを使って
responseTextでgoogle検索結果のページを取得しようとすると、
responseTextで返ってきたものが、今までwin7 excel2007などで返ってきたものと全然違うんですが、win7の時のように受け取る方法ってありませんか?

win7の時はhtmlそのものが返ってきてましたがwin10では最初の方が判読困難です。

やろうとしていることは、vbaでgoogle画像検索の結果の画像をセルに表示しようと思ってます。

648:デフォルトの名無しさん (ワッチョイ 6aaa-V1Wy)
17/07/30 10:16:32.82 WZc9I6Vq0.net
そういえば responseBody しか使ったことないなあ
(adTypeBinary な ADODB オブジェクトに Write するために)

649:デフォルトの名無しさん (ワッチョイ db11-AITk)
17/07/30 12:41:33.40 ND/Yhbfk0.net
すみません、いろいろ試してたんですが、google以外ではちゃんと同じようなものを受け取れてました。
googleでは環境によって返すものが違うのかもしれません。
その先はスレ違いになるので自分でいろいろやってみます。ありがとうございました。

650:デフォルトの名無しさん (ワッチョイ 666d-fl5W)
17/07/30 15:24:50.24 LIjBkUDz0.net
api以外でgoogleの検索結果を取得しないほうがいい
すぐにアクセス禁止になる

651:デフォルトの名無しさん
17/08/02 00:57:39.97 O3oN8G+MM.net
Function Name2Adr(str As String)
Dim Cts As Folder, Ct As ContactItem
Set Cts = CreateObject("Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
Set Ct = Cts.Items.Find("[Email1DisplayName] = '" & str & "'")
If Ct Is Nothing Then Name2Adr = "不明" Else Name2Adr = Ct.Email1Address
Set Cts = Nothing: Set Ct = Nothing
End Function
↑ローカルのアドレス帳から表示名を検索しメアドを返す関数です。これはうまくいくのですが、
↓下のグローバルアドレス帳を検索するものがうまくいきません。エラーメッセージは「オブジェクト


652:はこのプロパティまたはメソッドをサポートしていません」です。 どなたか解決法をご教示ください。よろしくお願いします。 Function gName2Adr(str As String) Dim olApplication As Outlook.Application Dim olNameSpace As Outlook.Namespace Dim olAddressLists As Outlook.AddressLists Dim olAddressList As Outlook.AddressList Dim olAddressEntries As Outlook.AddressEntries Set olApplication = New Outlook.Application Set olNameSpace = olApplication.Session Set olAddressLists = olNameSpace.AddressLists Set olAddressList = olAddressLists.Item(2) Set olAddressEntries = olAddressList.AddressEntries Dim olAddressEntry As Outlook.AddressEntry Set olAddressEntry = olAddressEntries.Items.Find("[Email1DisplayName] = '" & str & "'") '←この行でエラー If olAddressEntry Is Nothing Then gName2Adr = "不明" Else gName2Adr = olAddressEntry.Email1Address End Function



653:デフォルトの名無しさん
17/08/02 02:57:39.31 9fnjiac4a.net
>>641
名前長いな

654:デフォルトの名無しさん
17/08/02 06:22:21.40 Yub86NHXr.net
少々長くてもわかりやすい名前をつけるのが基本だからね。
ハンガリアンよりは全然いい。

655:デフォルトの名無しさん
17/08/02 06:31:28.66 SLRN4nNP0.net
少々長くても分かりやすい名前を付ける、それがハンガリアン記法

想像してるのはたぶんシステムハンガリアン記法

656:デフォルトの名無しさん
17/08/02 07:20:47.27 Mrcj6vwlM.net
変数はAddressなのにメソッド名はAdrで統一してないのは理由あるの?

657:デフォルトの名無しさん
17/08/02 07:40:08.64 ed9o3kBwx.net
変数名長いなぁ
olAppとかAdrListとかにすれば良いやん

658:デフォルトの名無しさん
17/08/02 07:40:35.97 Yub86NHXr.net
>>644
単に「ハンガリアン」と言った場合は、システムハンガリアンの意味で用いられていることが多い。

ということでどうかひとつ。

659:デフォルトの名無しさん
17/08/02 07:44:09.62 Yub86NHXr.net
>>646
むしろ関数名を

GetNameToAdddress

にしたほうがいいかも。

660:デフォルトの名無しさん
17/08/02 07:44:43.49 boOv7Sns0.net
>>641
Dim Cts As Folder, Ct As ContactItem

ユーザー定義型が定義されてません
エラーが出た

661:デフォルトの名無しさん
17/08/02 08:11:17.19 i5+f8wczM.net
>>649
参照設定してないだけじゃね?

662:デフォルトの名無しさん
17/08/02 08:56:23.68 boOv7Sns0.net
>>650
まぁそうだけど、どれ参照するのか探すのめんどい
開発用に、コンポーネント参照の全選択ほしいな。それともあるんかな?

663:デフォルトの名無しさん
17/08/02 09:10:48.85 Y/LidHA/0.net
>>650
649は店に来たお客さんのつもりのようだから、まともに相手する必要はないよ

664:デフォルトの名無しさん
17/08/02 11:50:02.54 a22879YUM.net
単なる自己満足なんだからそこまで突っ込むなよ
どうせ永遠に平行線なんだろ?

665:デフォルトの名無しさん
17/08/02 12:08:29.03 pZ2w6jYsM.net
>>648
メソッドの頭文字は小文字にしたいな
あとd多いのはなんか意図あるの?

666:デフォルトの名無しさん
17/08/02 12:26:23.95 Yub86NHXr.net
>>654
ごめん、dはタイプミスだ。

メソッドの頭文字を小文字にするのは何流?
VBA流では大文字だよね。

667:デフォルトの名無しさん
17/08/02 12:33:57.68 x+1N4OhAM.net
>>655
言語関係なくただのキャメルケースだよ

668:641
17/08/02 13:14:55.44 1uis+HfsM.net
みなさん、ご迷惑おかけしてすみません。
outlook vbaのスレに書くべき質問だったでしょうか、、

>>649
すみません、outlookのライブラリです。
よろしくお願いします。

669:デフォルトの名無しさん
17/08/02 15:50:17.32 Yub86NHXr.net
>>656
いや、だからメソッドをキャメルケースにするのは何流なのかなと。

670:デフォルトの名無しさん
17/08/02 16:45:06.13 pmz5Ebvba.net
>>658
javascriptはキャメルだと思う

671:641
17/08/02 16:56:06.29 uQ5PKG3iM.net
みなさん、ご迷惑おかけしてすみません。
outlook vbaのスレに書くべき質問だったでしょうか、、

>>649
すみません、outlookのライブラリです。
よろしくお願いします。

672:デフォルトの名無しさん
17/08/02 18:07:23.96 Yub86NHXr.net
>>659
IDの最後がvbaだ。カコイイ

なるほど、メソッドキャメルはJS流だったのね。サンクス

673:デフォルトの名無しさん
17/08/02 18:28:23.95 i5+f8wczM.net
>>660
Outlook VBA スレないからまあここでもいいと思うが仕事中に軽くググった範疇だといい方法が見つからん
> Set olAddressEntry = olAddressEntries.Items.Find("[Email1DisplayName] = '" & str & "'") '←この行でエラー
Items.Find( ) は Folder オブジェクトしか持ってないからここでエラーになるのは当然
グローバルアドレス帳(Global Address List)は GetGlobalAddressList( ) で取得できるし内容も入っているんだが取得したリストの GetContactsFolder( ) を呼び出しても Nothing しか返ってこない
何か設定が要るのか根本的に頓珍漢なのかさっぱりわからん

674:デフォルトの名無しさん
17/08/02 19:58:09.08 Yub86NHXr.net
ここでも聞いてみれば?

つ【VBAなんでも質問スレ Part2】
スレリンク(tech板)

675:620
17/08/03 06:23:52.11 y8hiM9O7a.net
>>662
ありがとうございます!勉強になります。

> グローバルアドレス帳(Global Address List)は GetGlobalAddressList( ) で取得できるし内容も入っているんだが

↑その内容というのは、debug.printで見ることはできますでしょうか??

676:デフォルトの名無しさん
17/08/03 07:51:33.57 T58VKPgl0.net
>>664
foo = bar.GetGlobalAddressList( )
をどこかに入れてfooをウォッチ式で見る

677:デフォルトの名無しさん
17/08/03 08:16:18.57 8PSWLe0hM.net
>>664
Set GlobalAddressList = Namespace.GlobalAddressList( )
Debug.Print GlobalAddressList.AddressEntries.Item(1).Name
とかすれば見れるよ
全件エクスポートするサンプルとかあるので見てみて
URLリンク(www.slipstick.com)

678:デフォルトの名無しさん
17/08/04 13:47:28.51 2SBD/wKoM.net
バージョンが上がって日付時刻型の除算ができなくなりました。バリアント型にしても空になります。
対応方法はありませんでしょうか?
また、こういう仕様変更はどこで確認できますか?

679:デフォルトの名無しさん
17/08/04 19:09:28.11 HbiPV4wFd.net
>>667
Dateの除算てなんのためにやるんだっけ?
CLngとかしてからじゃダメなの?

680:デフォルトの名無しさん
17/08/04 19:49:21.85 EaU+sIDF0.net
日付じゃなくて時刻(時間)で除算したいのでは?
1950/1/1を2で割って1925/1/1…なんてことはしないだろう

>>667
office 更新プログラム等で検索
URLリンク(support.office.com)

681:デフォルトの名無しさん
17/08/04 20:11:22.22 CfFJ59fY0.net
時刻ですね

682:デフォルトの名無しさん
17/08/05 08:53:42.25 3n3qQbM6r.net
>>667
エラーの出たコードを書いてみて。
あとバージョンも。2016?

683:デフォルトの名無しさん
17/08/05 09:48:36.05 7J5Re5fS0.net
2010でも時刻の割り算できたけど?

684:デフォルトの名無しさん
17/08/05 10:09:48.61 3n3qQbM6r.net
じゃあ、この話題はこれで終わりだな。

685:デフォルトの名無しさん
17/08/05 11:28:42.39 J2w+rLAY0.net
エラーコードは51
データ型が日付時刻の除算はエラーでる

686:デフォルトの名無しさん
17/08/05 12:58:50.71 kXEyZiX90.net
Sub foo()
bar = Date / 2
Debug.Print bar
End Sub

2010、win7だけどエラーでない

687:デフォルトの名無しさん
17/08/05 13:00:51.75 J2w+rLAY0.net
>>675
時刻同士で割って見て

688:デフォルトの名無しさん
17/08/05 13:07:29.37 j7okUzoP0.net
ダブルにキャストしてから計算したら
ずれるのかな?

689:デフォルトの名無しさん
17/08/05 13:08:47.84 kXEyZiX90.net
>>676
Sub foo()
bar = Date / Date
Debug.Print bar
End Sub

普通に1になったけど

690:デフォルトの名無しさん
17/08/05 13:35:11.02 1ncAb1Zc0.net
URLリンク(www.youtube.com)

691:デフォルトの名無しさん
17/08/05 16:53:51.52 3n3qQbM6r.net
質問者からのエラーコードの提示がないので無駄な回答だな。

692:デフォルトの名無しさん
17/08/05 18:06:14.68 fC/MwjWZ0.net
時刻を時刻で割る意義は? どんな分野で必要と成るんだ? それは知りたい

693:デフォルトの名無しさん
17/08/05 18:54:05.96 UH683s5QM.net
バージョンが上がって…
とか言いながらバージョンを書かない馬鹿
指摘されても書かないという

694:デフォルトの名無しさん
17/08/05 18:58:41.09 NpEI7ikB0.net
>>681
8時間の就業時間の間に25分掛かる作業を何回できるか見積るとか

695:デフォルトの名無しさん
17/08/05 19:00:17.07 90gBDUFU0.net
しょうもない質問はほっとけばいいんじゃ?
それとも答えたくてウズウズしてる感じ?

696:デフォルトの名無しさん
17/08/05 19:45:20.37 ze59kfDf0.net
>>683
無理くり理由をこじつけてもその程度だよな…ほんと何がしたいんだろうな

697:デフォルトの名無しさん
17/08/05 20:31:20.41 2UigV3EYM.net
質問するのにバージョンも書かない
ID変わってるのに名無しのまま
環境書けと言ってるのに無視
こんな処理する理由は?と聞かれても無視


こんな人間の生産物を現場で使う恐怖

698:デフォルトの名無しさん
17/08/05 20:47:12.34 fC/MwjWZ0.net
それは時刻で無くて時間だろ と

699:デフォルトの名無しさん
17/08/05 23:20:40.34 3n3qQbM6r.net
>>686
何のためにここで質問したのかわからないよね。

つか、俺たちが釣られただけ?

700:デフォルトの名無しさん
17/08/05 23:56:01.89 dqSa99my0.net
質問者が軌道修正のために必要な情報を提供しないってのはここではザラにあることだろ。
そんなのによく付き合ってられんなー

701:デフォルトの名無しさん
17/08/06 00:12:38.56 7dbJmn2Z0.net
質問室じゃねえんだよ

702:デフォルトの名無しさん
17/08/06 12:22:25.32 hXGNAkd3r.net
また教えたがりの無能が暴れとるのかw

703:デフォルトの名無しさん
17/08/06 16:09:44.69 wM27hiyIa.net
暴れているのはただの煽り

704:デフォルトの名無しさん
17/08/07 16:41:33.18 /LwpuoG3M.net
>>678
dim a as date
dim b as date
dim test as date

a = time
b = time
test = a / b

でエラー出た

705:デフォルトの名無しさん
17/08/07 16:59:56.15 PHW4jpUx0.net
>>693
地域オプションで先頭が数字以外になるような書式だったとか?

706:デフォルトの名無しさん
17/08/07 19:35:32.88 9LTblBy60.net
>>693
環境書けよ
なんでエラー出たとか言うやつは環境書かないの
VBAの日付型は原則数値として扱えるはずので
日付型である事が原因でエラーが出るとは考えにくいけどなぁ
ちなみにエラー51のヘルプ(2007)には
>このエラーが Error ステートメントまたは Raise メソッドで生成されたものでなければ、Microsoft 製品テクニカル サポートに連絡して、メッセージが表示されたときの状況を知らせてください
ってあるから、ホントにエラー51出たならEXCELのバグの可能性もないではないな

707:デフォルトの名無しさん
17/08/07 20:09:27.70 PGc1T+jA0.net
excel2010 win7
エラーが起こるのは除算の分母側がdateだった時
longにキャストするか、variantで宣言していれば問題ない(もちろん宣言してない場合も問題ない)
バグくさい挙動だなぁ
Sub foo2()
Dim a As Time
Dim b As Time
Dim test As Date
a = Time
b = Time
test_long = (a * 1) / (b * 1) 'ok
test = a / (b * 1) 'ok
test = 1 / b 'error
test = (a * 1) / b 'error
test = a / b 'error
End Sub
Sub foo()
Dim a As Variant
Dim b As Variant
Dim test As Date
a = Time
b = Time
test = a / b 'ok
End Sub

708:デフォルトの名無しさん
17/08/07 20:36:42.78 5JtEoMJq0.net
Cdbl()で分母をDoubleにキャストすればいいだけじゃね?

709:デフォルトの名無しさん
17/08/07 20:39:22.17 PGc1T+jA0.net
>>697
まぁ解決法としてはそれでも何でもいいし、そもそもdateで除算って事をやらないんだけど
根本的な原因が分からないと、変なとこで悪影響受けそう

710:デフォルトの名無しさん
17/08/07 20:54:07.86 5JtEoMJq0.net
Time って
DateTime.Time プロパティのことだよな
Property Time As Variant
だからもともとVariant型
dim a As Time がエラーになるんだが

711:デフォルトの名無しさん
17/08/07 21:05:47.61 5JtEoMJq0.net
Date型はVBAのデータ型で"21:02:32"みたいな文字列なんじゃね?
だから計算するとエラーになる
分子にDate型を持ってきたときはDoubleに自動的にキャストされてると予想

712:デフォルトの名無しさん
17/08/07 21:13:12.34 PGc1T+jA0.net
>>699
ごめんなさい訂正前の送ってしまいました
定義部分は以下に変えてください
Sub foo2()
Dim a As date
Dim b As date

713:デフォルトの名無しさん
17/08/07 23:25:10.55 kmFs6vPH0.net
>>695
2007じゃエラーでないよ

714:デフォルトの名無しさん
17/08/07 23:33:20.74 elxVZ6u90.net
データベースのDATETIME型の値がそのままVBAのDate型変数にマップできれば楽なのに、
1900年以前だとうまくいかないのが残念だ。

715:デフォルトの名無しさん
17/08/07 23:39:54.26 5JtEoMJq0.net
>>702
2010とかだとエラーになる
分母にDate型を持ってくるときは
明示的にCdblでキャストすればエラーにならなくできる
MS側にバグレポートしたところで修正するかどうかはMS側次第
仕様変更したと言うかもしれない

716:デフォルトの名無しさん
17/08/07 23:59:58.12 HViBOnBI0.net
そろそろ日付時刻での除算の意味を教えて

717:デフォルトの名無しさん
17/08/08 00:39:23.26 sJaKEDtc0.net
>>705
>>683
全くない需要ってわけでもないと思う

718:デフォルトの名無しさん
17/08/08 00:57:18.12 ZuuTozCK0.net
キャストしてできるんならなんの問題もないだろう
キャストできない理由があるんじゃないのか?
まさか発想になかったわけじゃないだろうし


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch