Excel VBA 質問スレ Part59at TECH
Excel VBA 質問スレ Part59 - 暇つぶし2ch337:デフォルトの名無しさん
19/02/19 20:17:18.51 f2qQz3/xx.net
>>323
クラスにしたらいいんじゃないの
vbaで引数付きコンストラクタの実現は難しいけど、
四つの座標情報を引数に取るプロパティ関数を用意して、Rect構造体のプロパティを持たせるようにすればそれらしいことができるのでは

338:デフォルトの名無しさん
19/02/19 20:41:15.17 XJA9DtkM0.net
>>331
VBAでもクラスって出来たんですね。 ちょっとググってみました
ありがとう。 これは知らなかった

339:デフォルトの名無しさん
19/02/19 21:21:04.93 eXSGnhOj0.net
>>323
構造体でできなくはない
VBAの構造体、制限多いけどな
Public Type Rect
Top As Integer: Left As Integer: Bottom As Integer: Right As Integer
End Type
Public Function CRect(Top As Integer, Left As Integer, Bottom As Integer, Right As Integer) As Rect
Dim r As Rect
r.Top = Top: r.Left = Left: r.Bottom = Bottom: r.Right = Right
CRect = r
End Function
Public Function PtInRect(Rect As Rect, x As Integer, y As Integer) As Boolean
If Rect.Left < x And Rect.Right > x And Rect.Top < y And Rect.Bottom > y Then
PtInRect = True
End If
End Function
Public Sub test()
Dim r(10) As Rect
r(1) = CRect(10, 10, 100, 100) '...
If PtInRect(r(1), 15, 180) Then
MsgBox "In Rect1"
End If
If PtInRect(CRect(10, 10, 100, 100), 15, 80) Then
MsgBox "In Rect2"
End If
End Sub
改行多すぎらしいので:で詰めて書いてる

340:デフォルトの名無しさん
19/02/19 21:25:35.60 eXSGnhOj0.net
>>329
エクセルでCSV開いてシートをそのまま2次元配列に突っ込めば良いんじゃないか

341:デフォルトの名無しさん
19/02/19 21:47:03.10 LH3y88CS0.net
>>319
え?
そうなの?
それは知らなかった。
ちなみに最新はASP.netのcore2.1だと思うんだけど
VisualStudioでASP.Net Coreプロジェクトを作る際、
.Net Coreと.Net Freamworkのどちらのプラットフォームを選択するか聞いてくるけどあれは何なの?

342:デフォルトの名無しさん
19/02/19 22:14:11.03 +ssFN3TXa.net
>>335
ASP.NET Core 3.0以降ではFull .NETが切り捨てられることが公式に明言されてる
3.0はまだPreviewだけどね

343:デフォルトの名無しさん
19/02/19 22:33:29.04 LjPGQpms0.net
Dimってどこに書いてますか?
全部最初に書きますか?
For i= 0 to 100
for j = 0 to 100
iとjを使った処理
next
next
この時、Dim j as Integer ってどこに書きますか?
「For i= 0 to 100」の上か下かという質問です。

344:デフォルトの名無しさん
19/02/19 22:37:52.77 XTzrMDQC0.net
定義は一番最初にまとめて全て書くと管理しやすい
個人的にはそもそも書かないけどな~

345:デフォルトの名無しさん
19/02/19 22:45:04.21 VgLhyIar0.net
>>330
自分でも調べてたけど、「最後の要素しか増やせない」って同じこと書いてありました。これは
例えば、行数読んだ結果がLcnt=10だとして
まず
ReDim(Lcnt,0)で作り
配列(0 to 10,0)ができ
Redim Preserve(Lcnt,Ubound(Split(1行目))
区切った値が5なら
配列(0 to 10,0to5)が出来てしまい、いっぺんに右の要素数が変更されるってことで合ってます?
と言うことは、1行目が5列で次に読んだ2行目が3列なら右の要素数は3に減るって事ですかね?
ifか何かで要素数は増える時だけRedim Preserveのが良いですかね?

346:デフォルトの名無しさん
19/02/19 22:50:47.62 VJWnLClRd.net
>>337
VBは上にまとめ
C#は使う時
他の言語はしらん。あくまでイメージ。
スコープは短くが理想だから長くなって下部に変数が初登場ならFunctionとかCallで余分そうなものは排除。
だからそのループも逃がす

347:デフォルトの名無しさん
19/02/20 00:08:08.78 Hgznwu9O0.net
>>339
あなたの用途に合ってるのは2次元配列じゃなくて配列の配列。
ReDim arr(0 To n)
arr(i) = 別の配列  ` i : 0~n
みたいなことができる
「別の配列」のところに、csvの一行分を処理して配列を返す関数を当てはめればいい。
もちろんクラス化してもいいけどさ

348:デフォルトの名無しさん
19/02/20 03:34:25.29 B2QSVSiS0.net
>>329-334
Ruby では普通に、2次元配列に入る
require "csv"
p CSV.read( "test.csv" )
結果
[["id", "first name", "last name", "age"],
["1", "taro", "tanaka", "20"],
["2", "yumi", "adachi", "21"]]

349:デフォルトの名無しさん
19/02/20 07:38:24.67 5mnmpgTAH.net
クラスって要素名を予め宣言しないといけないからcsvの要素が変わると対応できない?
教えてエロい人

350:デフォルトの名無しさん
19/02/20 07:54:07.56 KjQRkkj7x.net
要素名で名前解決する処理がないなら、レコード値を配列プロパティで受け渡すだけで良いと思う
名前解決が必要なら要素宣言しないといけないね

351:デフォルトの名無しさん
19/02/20 11:17:04.40 Aqbfj0bAp.net
教えてください。
エクセルのマクロです
PDFファイル(100ページくらいある)を、エクセルに、全ページをたて一列に貼り付けたいのですが、
どう書けばいいでしょうか

352:デフォルトの名無しさん
19/02/20 11:58:45.20 EgtCXVwuM.net
RPAを買ってコピペを自動化するのが手っ取り早いよ

353:デフォルトの名無しさん
19/02/20 12:07:33.49 crzgHpZv0.net
なぜPDFを貼り付けるのか
そのまま印刷すればええやん
そのPDFは1つのファイルの中に100ページあるの?
1ページだけのPDFファイルが100個あるの?
バラバラのPDFファイルを1つに結合したいだけならフリーウェアでできるよ

354:デフォルトの名無しさん
19/02/20 12:28:15.94 Aqbfj0bAp.net
>>347
印刷のためじゃなく、PDFをシートにはり、横にエクセルでコメント入れたい。

355:デフォルトの名無しさん
19/02/20 12:36:44.12 5mnmpgTAH.net
コメントならPDFファイルでも入れられるよ

356:デフォルトの名無しさん
19/02/20 12:37:09.49 HgkG/6H60.net
>>345
PDFを画像に分割→エクセルに貼り付け
って流れになる
PDFから直接どうこうは止めたほうが良い、PDFを触るのはかなりめんどくさい
PDFを画像に分割するソフトがあると思うから、まずはそれを探して試してみて
どういう形式で画像が出て来るかが分かれば、後はvba簡単に書けると思う
>>349
そういやそっちの方が早いね

357:デフォルトの名無しさん
19/02/20 12:38:58.44 Aqbfj0bAp.net
>>349
大量のコメントや式です

358:デフォルトの名無しさん
19/02/20 12:39:49.65 Aqbfj0bAp.net
>>349
大量のコメントや式です

359:デフォルトの名無しさん
19/02/20 12:41:03.23 zcHFtFOnd.net
>>345
「教えてください」で始まる質問をするのは馬鹿しかいない法則

360:デフォルトの名無しさん
19/02/20 12:53:11.56 Aqbfj0bAp.net
分割するとは?
100ページのドキュメントだから100個のファイルを作成するということでしょうか。

361:デフォルトの名無しさん
19/02/20 12:55:03.75 HgkG/6H60.net
そういう事

362:デフォルトの名無しさん
19/02/20 13:15:01.09 Aqbfj0bAp.net
分割しないで、ページを読み込み、貼り付けはできないのでしょうか?

363:デフォルトの名無しさん
19/02/20 13:17:35.13 5mnmpgTAH.net
100in1で出力すればいけんじゃない?

364:デフォルトの名無しさん
19/02/20 13:27:36.70 zcHFtFOnd.net
エクセル方眼紙の厚かましい馬鹿は死ね

365:デフォルトの名無しさん
19/02/20 13:27:47.31 5mnmpgTAH.net
PDFを画像にするっていうのはプリンタで印刷するのと同じイメージだから基本1ページ1ファイルね

366:デフォルトの名無しさん
19/02/20 13:48:22.42 HgkG/6H60.net
>>356
できるけどめんどくさいんだって。
自分用ですら>>350の手順踏む
この件は誰もやらんって断定するから諦めたほうが良い

367:デフォルトの名無しさん
19/02/20 13:51:25.06 5mnmpgTAH.net
pdfをtxtにできるサイトがあるね

368:デフォルトの名無しさん
19/02/20 14:19:25.05 3CKo6tJGF.net
そもそもスレタイ読めない馬鹿は死ね

369:デフォルトの名無しさん
19/02/20 14:49:29.70 crzgHpZv0.net
どうしてもVBAとExcel上でやりたかったら
100ページのPDFを100枚の画像に変換するのはフリーウェアで一発でできる
画像をワークシートに並べるだけならVBAで簡単に書ける
上司の命令とかで他の選択肢がないなら、俺ならこうする

370:デフォルトの名無しさん
19/02/20 16:49:36.00 RE4oCyjZM.net


371:l="noopener noreferrer" target="_blank" class="reply_link">>>345 >エクセルのマクロです なにがどうエクセルのマクロなのか全くわからなくて面白かった



372:デフォルトの名無しさん
19/02/20 17:37:12.40 HgkG/6H60.net
>>362>>364
エクセルのマクロだけでいけるとおもったんやろ
実際出来なくはないと思うけどすげーしんどいって事にまで気が回らなかったことは仕方ない

373:デフォルトの名無しさん
19/02/20 17:59:23.96 lkHSh4f40.net
「○○したいんですけど教えて下さい」
「なんでそんなことしたいの?バカなの?」
何でこんな回答いちいちすんだろ
答えてくてウズウズしてる自称プロが自分のわからない質問来てカリカリしちゃってるのか?

374:デフォルトの名無しさん
19/02/20 18:50:33.54 fho/sw2r0.net
なんでそんなめんどくさいことするの?
〇〇でよくね?
とかよく見るけど、質問者が聞いてる事だけ教えればいいのにと思う。

375:デフォルトの名無しさん
19/02/20 19:09:49.05 W87kh7t10.net
できない。
以上。

376:デフォルトの名無しさん
19/02/20 19:09:49.63 HgkG/6H60.net
>>366
大正解
vbaと実務の範囲を分かってない未熟者
>367
それを言うと
「〇〇はやりたくないんですw」
という回答が帰ってくるのがもう過去何度も

377:デフォルトの名無しさん
19/02/20 19:19:56.14 xmZEnq49a.net
QAに集中したいならteratailかstackoverflow.jpがオススメですよ

378:デフォルトの名無しさん
19/02/20 19:30:07.27 Aqbfj0bAp.net
1ページ目が貼り付けられるけど、ページを指定できないのかな

379:デフォルトの名無しさん
19/02/20 21:05:48.46 Wi/z/KN10.net
>>311
htmlに書かれているJavaScriptを実行したい時とか。

380:デフォルトの名無しさん
19/02/20 22:38:30.49 jH2rY7Fc0.net
めんどくさいっていうか、AcrobatOLE使えないと無理じゃない?
Excelだけで完結できる手法あるの?

381:デフォルトの名無しさん
19/02/20 22:49:49.45 pZJkKCoer.net
>>367
質問者が気付いてない、知らないだけの場合もあるから

382:デフォルトの名無しさん
19/02/20 22:57:03.31 Wi/z/KN10.net
上司から言われてるだけというケースもあるだろうな。

383:デフォルトの名無しさん
19/02/20 23:14:04.77 zOoel5SRx.net
手順固定で指示する糞上司っているよね
その手順がボトルネックになって糞の塊のようなツールが出来上がったりする

384:デフォルトの名無しさん
19/02/21 01:06:52.19 wp9rEEne0.net
>>373
ハンドアセンブルを覚える。
バイナリで書き出す。

385:デフォルトの名無しさん
19/02/21 05:02:12.65 fo0B5AuF0.net
>>376
組織はそれが普通。趣味で仕事やりますというわけには行かない

386:デフォルトの名無しさん
19/02/21 07:46:17.08 X1BgxDGFM.net
昭和の労働集約的な企業の紹介乙

387:デフォルトの名無しさん
19/02/21 08:00:03.08 WrVB68JS0.net
趣味で作り上げたとしても説明してレビュー受けないといけない。その労力って結構きついしいっそ言われたまま作り上げた方が精神的にラクね

388:デフォルトの名無しさん
19/02/21 08:15:00.93 Uwc+mrjba.net
>>376
固定するのは百歩譲って良いんだけど説明も了解もなく決める人には困るね
より良い方法を提案する機会がないままルールとして決まってしまう

389:デフォルトの名無しさん
19/02/21 08:24:52.09 hsBre2j/H.net
マニュアル化できるレベルの仕事しかできないって自虐だろ

390:デフォルトの名無しさん
19/02/21 12:40:21.42 tE5CGhgad.net
1.質問に回答する。
2.質問者から、「その場合だと~が上手くいきません。」と返事。
3.その場合は~すれば良いと回答する。
4.質問者から「それだと~」...
5.2-4を何度か繰り返す。
6.質問者に「そもそも君はその処理で何をやりたいんだ?」と聞く。
7.質問者の返事を聞いて、結局質問者の設計が糞だったと知る。
8.1-7をを何度となく経験してると、質問を見た時に設計の糞さ加減がかなりの確度で予想できるようになる。
9.質問者の聞いてることだけ回答すると糞設計のせいでドツボに嵌まるので聞いてることだけ回答するのは辞めようという結論になる。
10.質問者は自分の糞設計に気付かないので、質問にだけ回答すれば良いのにと思う。

391:デフォルトの名無しさん
19/02/21 16:01:26.14 EV12A9vO0.net
こうやって質問者をひとくくりで決めつけちゃうような視野が狭い人が一番の癌なんだよな
バカほどなんでも決めつけて単純化させようとする
勝手に単純化させた結論を赤の他人にいきなり押しつけるから当然理解されない
理解されないことを相手がバカだからと決めつけていきなり罵り出す
頭がおかしい人なのかな?と放置されると論破して黙らせたと思い込んで悦に浸り出す
そしてプロ回答者としての自信を増して増長して居座る

392:デフォルトの名無しさん
19/02/21 16:10:32.99 7HScUEGsM.net
大抵の事務仕事は本来単純なことをわざわざ難しくして仕事を作っているだけなのは事実だね
VBAや最近だとRPAのような小手先の自動化ツールのは、本質的なプロセスの見直しに対するモチベーションを削いでいる面もある

393:デフォルトの名無しさん
19/02/21 16:23:50.23 YsIQ3BIo0.net
営業はそれが売上に繋がってると信じてやまないので、
どうにもなんないのよ~

394:デフォルトの名無しさん
19/02/21 18:36:57.10 tE5CGhgad.net
>>384
お前が碌に回答したことが無い初心者なだけだろ。
いろんな所で回答してる奴らは皆同意する。

395:デフォルトの名無しさん
19/02/21 18:47:24.87 7HScUEGsM.net
>>387
同意するわ
明らかに知識の乏しい初心者が妙に具体的に手段を特定して助けを求めてきた場合、
「そんなことはどうでもいいから目的を教えろ」と対応するのが最も確実で効果的で手っ取り早い

396:デフォルトの名無しさん
19/02/21 18:56:23.16 YsIQ3BIo0.net
>>383
>8.1-7をを何度となく経験してると、質問を見た時に設計の糞さ加減がかなりの確度で予想できるようになる。
この辺りになると回答でイライラする事が無くなるゾ

397:デフォルトの名無しさん
19/02/21 18:57:24.28 ZuxKbWfpM.net
>>384
お前が決めつけててワロタ

398:デフォルトの名無しさん
19/02/21 19:18:39.73 AiPG59Hd0.net
プログラムって書き方って人それぞれ違うと思うけどみんな書き方どんな?
EXCELのセルデータをComboBoxに格納
メイン文
caii addcbo(FilePath,1,Me.cbo1)
caii addcbo(FilePath,5,Me.cbo2)
caii addcbo(FilePath,8,Me.cbo3)
Function addcbo(....)
※DAOでEXCEL開く
第2引数の列を下にループ
第3引数に空になるまで格納
End Function
てな感じのコードってどうなの?
俺は先に2次元配列でシート丸ごと持ってきてから入れてく感じにしたんだけど、ここにいる人達はどう書く?

399:デフォルトの名無しさん
19/02/21 19:30:43.16 UHF1Q6o+0.net
データ取得は別プロシージャにして配列につっこむ

400:デフォルトの名無しさん
19/02/21 19:43:21.62 YsIQ3BIo0.net
caiiってcallの事か
>>392が綺麗と思うけど、大抵>>391ぐらいで終わる

401:デフォルトの名無しさん
19/02/21 19:53:49.02 dFUlMofS0.net
>>391
おまえプロさんか?
まだプロさん予備軍やったら気いつけや
そこからプロさんに堕ちるんはあっちゅう間やで

402:デフォルトの名無しさん
19/02/21 19:57:47.93 EV12A9vO0.net
>>387
さすがプロ回答者の鏡
嫌なら別に回答者なんてやらなくてもいいんだよ?
質問者をひとくくりに見下すようなひねくれ者になってまでプロ回答者をやり続けてる目的ってなに?
こんなとこで他人を見下してなきゃ自尊心保てないとかそんな感じ?

403:デフォルトの名無しさん
19/02/21 19:58:58.69 YsIQ3BIo0.net
>>395
回答も質問もしないならさっさと消えて

404:デフォルトの名無しさん
19/02/21 20:03:08.56 mRRRBv2X0.net
>>384
こうやって回答者をひとくくりで決めつけちゃうような視野が狭い人が一番の癌なんだよな

バカほどなんでも決めつけて単純化させようとする
勝手に単純化させた結論を赤の他人にいきなり押しつけるから当然理解されない
理解されないことを相手がバカだからと決めつけていきなり罵り出す
頭がおかしい人なのかな?と放置されると論破して黙らせたと思い込んで悦に浸り出す

405:デフォルトの名無しさん
19/02/21 20:08:15.12 pV/9VR1fx.net
質問に対する回答よりも糞みたいな煽り合いに熱中する奴ってなんなの

406:デフォルトの名無しさん
19/02/21 20:14:11.51 UHF1Q6o+0.net
質問者は基本的に馬鹿
「インターネットは開くんですけどxxシステムが開きません」と言われてTraceやらブラウザ設定やらやった挙句、LANケーブルが挿さってないだけでインターネットはキャッシュでした、っていうようなオチが山ほどある
奴らの言葉を鵜呑みにしてはいけない

407:デフォルトの名無しさん
19/02/21 20:40:34.06 8KPV6qY80.net
ループから抜けるときにブレイクとかコンティニューないのこれ?

408:デフォルトの名無しさん
19/02/21 20:44:24.69 YsIQ3BIo0.net
>>400
exitがある
Sub foo()
For i = 1 To 1000
Debug.Print i
If i > 100 Then
Exit For
End If
Next
End Sub

409:デフォルトの名無しさん
19/02/21 20:49:56.47 dFUlMofS0.net
>>399←こいつホンマもんのプロさんやんwww
Traceてwwwwwwww


410:



411:デフォルトの名無しさん
19/02/22 00:25:53.24 9R98EKTp0.net
>>402


412:デフォルトの名無しさん
19/02/22 00:44:27.12 EpE2F9dV0.net
混沌とした質問ではなくてある程度整形された質問ならお互いに健全かもしれないね。
「例えば質問のためのテンプレ埋めてもらう」とかだけでもやり取りの回数減るんじゃないかな。
テンプレの内容はよくわからないけど、例えば「配列が解るか、オブジェクトが解るか、APIが解るか」とか書いてもらえれば質問者のレベルか解りやすいから罵ることもないだろうし
全体の流れの一部として困ってるのか、単純に言語仕様で困ってるのかだけでも質問者に必要なのがコンサルなのか解答なのか切り分けしやすいと思う。

413:デフォルトの名無しさん
19/02/22 00:57:28.09 nGlWTBX9a.net
【目的】
【何がわからないのか】
【どうなることを期待しているのか】
【何故それが必要だと考えたのか】
でいいよ
質問者のレベルなんてレスの内容見りゃわかるだろ

414:デフォルトの名無しさん
19/02/22 01:31:51.52 1cZDvNG50.net
>>405
>【目的】
>【何故それが必要だと考えたのか】
これは無くてもいいかも
多分あんまり良い情報は返ってこない気がする
>【何がわからないのか】
これも無くて良いかもしれないけど、
まぁ一応質問スレなので
後は最初の状態が欲しい
初めと終わりがあれば何とでもなる
それと反復頻度。一回だけなら一回だけ用の雑コードで済ますし、毎日ならもうちょい丁寧に書く
ってわけで以下になっていると楽
【作業前の状態】
【終了時の状態】
【何がわからないのか】
【作業の頻度(一回だけ or 何度も)】

415:デフォルトの名無しさん
19/02/22 05:05:38.47 +/kCrfoP0.net
データ量も欲しいなあ
1万件なら雑コード、100万件なら処理速度も意識してコード書く

416:デフォルトの名無しさん
19/02/22 09:18:19.59 OJD9m6ZlH.net
あんまり敷居を高くすると質問者が減るよ

417:デフォルトの名無しさん
19/02/22 09:36:13.35 tzlpYPDLx.net
質問者が減れば珍回答で恥をかくリスクも減って回答者のプライドが保たれるので問題ない

418:デフォルトの名無しさん
19/02/22 09:46:06.70 OJD9m6ZlH.net
>>409
そう考えてるのはお前だけだよ

419:デフォルトの名無しさん
19/02/22 09:53:52.37 HFM6F1Kc0.net
まぁプロ回答者どもが罵り合いやってますが、質問者の方はそんなの気にせず
どんどん質問してくださいな w

420:デフォルトの名無しさん
19/02/22 10:30:26.16 1cZDvNG50.net
>>408
どうすればいいか提案してくれ

421:デフォルトの名無しさん
19/02/22 16:26:24.07 brEIpzdG0.net
このスレの本質はプロ回答者選手権だからな
プロ回答者の敵はプロ回答者
質問者など餌に過ぎない
その餌を誰が一番上から踏み潰すかを競い合う
ちなみにプロ回答者にもなると質問に答えたりしない

422:デフォルトの名無しさん
19/02/22 16:41:48.96 1cZDvNG50.net
>>413
なるほど!
まさに>>413さんのような方ですね

423:デフォルトの名無しさん
19/02/22 16:46:43.90 8DxZ0bMn0.net
なるほど
プロ回答者ってのは「質問スレにおける回答活動」のプロって意味か

424:デフォルトの名無しさん
19/02/22 20:37:47.33 O594Y42ea.net
まぁ別に目的の記述は無くてもいいけど
何を目的にしているかの記述があれば
代替案考えてくれる人もいるだろうし
欲しい解答が得られやすい場合もあるわな
逆に余計なこと言って欲しくないのなら
書かないのも有りだと思うけど
解答者がゲスパーして答えるのも
また有りだと思うし

425:デフォルトの名無しさん
19/02/22 20:44:37.13 O594Y42ea.net
>>400
ループから抜けるのは>>401の人が言う通り
Exitを使えばいいけど、次のループに行くような
.Netで言うContinueはないので
分岐でループしているロジックの最後に持って行くしかないんじゃないかな?

426:デフォルトの名無しさん
19/02/22 21:01:06.12 Pvmgb/R80.net
ここの質問を見ると、よほど変なもん作らされてるんだろうなって思う。
何に使うのかわからないようなのが多くて、
実務で使いそうなのがあまり出てこない。

427:デフォルトの名無しさん
19/02/22 21:23:19.91 yyymEZ9cM.net
実務では文字列解析とデータベースからの検索程度で難しくは無いんだけど
適当に組んだせいか妙に遅いのが悩み
高速化するテクニックとかないかな

428:デフォルトの名無しさん
19/02/22 21:42:30.22 +/kCrfoP0.net
>>419
VBAを捨てる

429:デフォルトの名無しさん
19/02/22 22:11:55.73 moZ6n3ck0.net
>>419
早いpcに買い替える

430:デフォルトの名無しさん
19/02/22 22:45:12.67 Pvmgb/R80.net
二重Forループ
 ↓
VLOOKUP
 ↓
高速VLOOKUP
 ↓
SQL
これより速いのって、やっぱアセンブラ?

431:デフォルトの名無しさん
19/02/22 22:46:15.97 Pvmgb/R80.net
アドバンスフィルタが抜けてた。

432:デフォルトの名無しさん
19/02/22 23:22:12.68 Ig/cWVtXM.net
>>422
インデックスを張ってSQLでJOIN
オンデマンドなトランザクションじゃなくて単発の巨大なバッチならHiveとか使うのもいい

433:デフォルトの名無しさん
19/02/23 01:23:52.97 CTQXI+x50.net
エラーがわかりにくいのがいちばんのストレス
そのほかにも可変長引数とかジェネリクスとかwithの糞文法とか短絡評価未搭載とかインターフェイスが歪んだ設計になるとか色々遅れすぎ
所詮底辺が一発ツールで使う言語

434:デフォルトの名無しさん
19/02/23 01:28:03.84 M/apCBqcx.net
短絡評価がないせいでネストを深くせざるをえないときがあるんだよね

435:デフォルトの名無しさん
19/02/23 04:42:29.90 GIBqdFBY0.net
短絡的なVBerは多いのにな

436:デフォルトの名無しさん
19/02/23 07:16:01.49 F2VDrfwR0.net
>>425
その辺は仕方ない
C#やRubyやってる人がJavaは糞だって言ってるのと大差ない

437:デフォルトの名無しさん
19/02/23 09:04:33.17 Cm202fZQ0.net
>>425
エラーチェックは本当にな
これでforが無いって言われる。本当にないのはもちろnendif
さすがにもう迷う事は無いけど、
初心者の頃は散々苦しめられた
Sub foo()
For i = 1 To 10
If True Then
Next
End Sub

438:デフォルトの名無しさん
19/02/23 09:20:01.07 CvvsLWYy0.net
エラーってコードのエラーのことか
実行時のことかと思った

439:デフォルトの名無しさん
19/02/23 09:21:13.09 Cm202fZQ0.net
あぁ、実行時エラーの可能性もあるか
あれはactiveにしてないsheetのcellをselectした時はハマったけどそれ以外は特に・・・

440:デフォルトの名無しさん
19/02/23 09:21:56.77 CvvsLWYy0.net
唯一(?)の短絡評価である Select Case のリストはクソだと思いながらたまに使う

441:デフォルトの名無しさん
19/02/23 10:29:43.91 AFk0uxx90.net
短絡評価ってなんですか?

442:デフォルトの名無しさん
19/02/23 10:35:04.36 sW0ZRaO0a.net
>>433
お前がGoogleの採用選考を受けても学歴で足切りされて職務経歴の中身すら見てもらえないだろ?
結果が決まってるのに余計な評価をするのはリソースの無駄だからだ
そのように、評価が確定した時点で残りの評価を省いて結果を出す戦略を短絡評価という

443:デフォルトの名無しさん
19/02/23 10:49:47.77 CvvsLWYy0.net
>>434
GoogleはOr評価かもしれないよ

444:デフォルトの名無しさん
19/02/23 11:44:31.84 AFk0uxx90.net
>>434
お前バカだな
Googleは学歴より経歴重視だよ

445:デフォルトの名無しさん
19/02/23 12:14:20.39 yEreZVJRM.net
>>436
低学歴にも凄い経歴の奴はいるが、高学歴の中にはもっと沢山いるんやで
採用のための人的リソース最適化問題に対する戦略として、学歴フィルタが有効であることは十分に証明されている

446:デフォルトの名無しさん
19/02/23 13:07:59.71 AFk0uxx90.net
>>437
履歴書と職務経歴書って同封して送られてくるんだから同時に見ればいいじゃん
それとも30秒くらいの時間を惜しんで職務経歴書読まずにお祈りするの?
大した戦略だねw

447:デフォルトの名無しさん
19/02/23 15:21:22.50 yEreZVJRM.net
>>438
学歴なら人が見る必要すらないでしょ
書類選考のコストは一桁違うかと

448:デフォルトの名無しさん
19/02/23 16:24:43.18 UPmGtBeI0.net
>>438
たかが30秒と言う奴は10,000件あったら何時間かかるかを考えてからレスしろ

449:デフォルトの名無しさん
19/02/23 18:43:00.90 AFk0uxx90.net
Googleはそもそも学位が必要ない時点でお前らズレてんだよ

450:デフォルトの名無しさん
19/02/23 19:03:21.30 FI/m1MnA0.net
うんむ

451:デフォルトの名無しさん
19/02/23 19:33:38.12 to9UN42C0.net
ただの例にここまで突っ込むか?

452:デフォルトの名無しさん
19/02/23 20:37:03.99 CvvsLWYy0.net
短絡評価の例としてはわかりやすかった

453:デフォルトの名無しさん
19/02/23 22:13:21.58 CTQXI+x50.net
配列をインラインで生成する方法でもあればいいのに

454:デフォルトの名無しさん
19/02/23 23:20:45.04 E54ZDPfM0.net
>>400
ブレイクは >>401
Continueは、Nextの前に例えば CONTINUE:とラベル付けて、Goto CONTINUE で代替可。
これで何も過不足ないし、意図を読めないやつは(周りに)いないので、しょっちゅう使ってる。

455:デフォルトの名無しさん
19/02/24 04:42:51.56 ZjoVn9Sx0.net
goto使うと負けた気分になるけどネスト深くなるくらいなら使う

456:デフォルトの名無しさん
19/02/24 10:14:59.06 PMakJCH00.net
>>445
そういう関数を作れば解決する話では?

457:デフォルトの名無しさん
19/02/24 11:16:37.13 x1+EfWpB0.net
昔から言われてるけどGoToとかExitみたいな無条件ジャンプはできるだけ使うべきじゃない
ループから抜ける条件が複数ある時は、条件判定部分を関数にして外に出せばたいがい解決する

458:デフォルトの名無しさん
19/02/24 11:20:53.15 UtSvB3y70.net
>>449
3重構造のFor文とかって、いちいち全部のFor文に条件を書くんか?

459:デフォルトの名無しさん
19/02/24 11:27:07.38 cR8EPyISM.net
下向き限定なら許す
バカみたいな脱出フラグ使われるよりよっぽどマシ
上向きgotoは死ね

460:デフォルトの名無しさん
19/02/24 11:31:30.55 UtSvB3y70.net
>>446
VBAにはなんでContinueがないんだろうな
これ、ほんとめちゃ不便だわ。 これのためにもgotoは使ってるわ。てか、必須になっている

461:デフォルトの名無しさん
19/02/24 11:34:47.34 UtSvB3y70.net
Forの3重構造の場合、例えば、i, j, kで回したとき、一番中の処理で、
i=10000
j=10000
k=10000
とか設定したら、全部抜けるという技は使ったことはあるが、Next k の次に処理があってNext jとかってなってるときは
やはりgoto を使うので、結局こういう技は使わなくなった

462:デフォルトの名無しさん
19/02/24 12:03:06.64 laz54YR/0.net
for、特に二重ループから抜ける時はgotoで良い
if flg then exit for
こんなもん何個もあったら余計見づらいし間違う
>>449
気持ちはわかるけど、どうしても>>450になって余計に見づらい
>>45
20年前の言語で全く進化してないからな
python2.x→3.xの悪夢を見た者としてはこれはこれで良い

463:デフォルトの名無しさん
19/02/24 14:56:48.98 eghZe4V2x.net
Case (i) ⊇ Case (j) ⊇ Case (k)....っていう感じの線形の包含関係が無条件に成り立たない限り、3次元以上のループ管理はややこしくなるだけだよな

464:デフォルトの名無しさん
19/02/24 15:43:11.74 Jr9LmcmNd.net
>>429
それに苦しめられたのはお前が悪い。
きちんとインデントする自分なりのルールがあればそんなことには最初からならない。

465:デフォルトの名無しさん
19/02/24 15:50:41.15 Jr9LmcmNd.net
三重のル―プで条件によって全部から抜けるって処理自体あんまり無いだろ。
設計が悪いんじゃないの?

466:デフォルトの名無しさん
19/02/24 16:01:32.16 laz54YR/0.net
>>456
>それに苦しめられたのはお前が悪い。
どう見てもvbaのエラーチェックがしょぼすぎる
少なくとも>>429みたいなエラーチェックはあり得ない。あっても修正される
>>457
殆ど無いが、エクセルはそもそもがセルが行列の二次元+シートの三次元
開いてるブックを含めれば四次元だけど、さすがにこれは無い
全シートもあんまりないけどな
全セル(usedrange)に処理をかけて特定条件で抜けるというのは何度かあるな
ただまぁ別に抜けんでもそんあに変わらないというのもあるけど

467:デフォルトの名無しさん
19/02/24 16:43:43.47 EsuDtWv80.net
エラーがわかりにくいという話に
エラーを出すおまえが悪いとマウント取りに行くプロ回答者
マウントがとりたくてやってるのか本当にただのバカなのかどっちなんだろ

468:デフォルトの名無しさん
19/02/24 17:14:34.21 PMakJCH00.net
まあでも多重ループから一気に抜ける方法がExit Function/Sub しかないんだから
ループを含む部分をサブルーチンとして切り出す以外あるまいよ

469:デフォルトの名無しさん
19/02/24 17:42:50.42 RNHs4bDba.net
ループを回す以上はループを回す理由があるはず
その理由をわかりやすい関数名にしてループを切り出す
途中で抜けたければExitする

470:731
19/02/24 17:45:18.70 DRTFUInr0.net
いや、doとfor組み合わせれば二重ループ、三重ループからも抜けれるよ。
実用性は置いといて。

471:デフォルトの名無しさん
19/02/24 17:54:50.07 +Nxplz4k0.net
>>454
N88さわってたからループからgotoするのは違和感あるわ

472:デフォルトの名無しさん
19/02/24 18:03:52.89 vPp3qwU80.net
>>459
ただのバカだと思うよ。
あの場合は明らかにエラーメッセージがおかしい。
でも、エラーチェックしてると2つ以上の原因(またはどちらかが間違い)が考えられる場合がよくある。
その時どうメッセージ出すかは、作る人(仕様)次第。
ちなみに、
If xxx Then Exit For
If xxx Then _
Exit For
If xxx Then
Exit For
End If
それぞれ意見はあるだろうが、無駄に行増やしたくないが、マルチステートメントもな… なので、自作では2番目をよく使う。(もちろん仕様で決まってるならそれ優先。賛否について議論はしない)

473:デフォルトの名無しさん
19/02/24 18:39:00.05 L3+XvQB40.net
いつまで経ってもほったらかしにされてるVBAが悪い
Pythonがどうたら言う話はどうなった

474:デフォルトの名無しさん
19/02/24 19:22:57.41 PMakJCH00.net
資産が多すぎて移行不可

475:デフォルトの名無しさん
19/02/24 22:11:47.76 Jr9LmcmNd.net
>>464
最後の奴を使う。
インデントで明らか。
というか、そんなエラーを出すこと自体無い。
が、もちろんスタイルの問題だから一番最初の奴を使おうが2番目のを使おうが問題無い。
エラー出してもすぐに分かるならな。
ちなみにその最後の奴ならIfとEndIfを書いてからExit Forを書く。For Nextの場合も中身は後だ。
染み付いてるんでね。
別にそういう書き方をすべきと言ってるんじゃない。
エラーにすぐ気付くなら何も問題は無い。

476:デフォルトの名無しさん
19/02/25 05:22:32.65 +5CiRMIi0.net
PythonAという新しい言語が誕生します

477:デフォルトの名無しさん
19/02/25 09:04:42.27 8UCufaEGM.net
VBAって遅い?
セルにもの入れると遅くなるって以外で全般的に。

478:デフォルトの名無しさん
19/02/25 09:16:19.92 RXoXH9qp0.net
>>469
遅い
どうしてもエクセルが枷になる
大規模な計算をしたいならvbaは避けたほうが無難

479:デフォルトの名無しさん
19/02/25 10:41:49.47 8lMUk5exM.net
純粋な数値計算部分は遅くはないんだけどね
シートアクセスが遅いのはまあ

480:731
19/02/25 12:13:02.41 lRskRR3f0.net
>>469
ようするにVBの部分の話か?
変数の大ニュースとかループとか、配列のメモリ確保とか

481:デフォルトの名無しさん
19/02/25 12:31:17.59 iOBpdHSUd.net
確かに遅いんだけど、遅いと言ってる奴の大半はそいつのコードに問題があるような気がする。
コード変えたら100倍速くなったとかざらだし、VBAが遅いせいでと感じることは殆ど無い。
遅い場合でも処理を考えたら仕方ないと思える場合が殆ど。

482:デフォルトの名無しさん
19/02/25 12:42:50.70 iOBpdHSUd.net
>>471
純粋な数値計算部分が遅いと思うよ。
だからAPI使ってマルチスレッドのコード書いても処理が追い付かなくなる危険性があるわけで。
ただ、そんなの遅いと感じるようなものじゃないし、遅さが気になったら自分のコ―ドを疑った方が良い。

483:デフォルトの名無しさん
19/02/25 13:56:48.78 avG/zv9MM.net
裏で動かせるなら、処理遅くても他の作業してればエエねん。
終わったら、アイコン点滅して教えてくれればエエねん。

484:デフォルトの名無しさん
19/02/25 17:45:36.59 +5CiRMIi0.net
javascriptとvbaをネストする方法ってありませんか?
Dim ie As InternetExplorer
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate ("URLリンク(kakaku.com))
中略
ie.navigate "javascript:var i; for(i=1;i<18;i++){page(i);}"
これで1から18までpage関数をまわすことができると思いますが
1ページごとに情報を抜き出すための処理をvbaで書きたいです。
対象のwebページはjapvascriptのpage関数を使ってしかページ移動ができません。
ちなみに対象ページは↓です
URLリンク(kakaku.com)

485:デフォルトの名無しさん
19/02/25 19:16:52.45 fA1JAyF+0.net
>>476
kakaku.comなら「この検索結果を友達に知らせる」から直リンの情報が得られて、そこにページ番号も書かれてるからVBAだけで全データを取得できる

486:デフォルトの名無しさん
19/02/25 19:23:27.43 v0J7eUlyx.net
javascriptでページ情報を適当な外部ファイルにダンプして後でvbaでまとめて読み込めば良いだけでは?

487:デフォルトの名無しさん
19/02/25 19:42:45.75 RXoXH9qp0.net
変なページはキーボードマクロでやったほうが手っ取り早い場合も

488:デフォルトの名無しさん
19/02/25 19:47:45.89 +5CiRMIi0.net
>>477
こんな方法があったんですね!
ありがとうございます
getの形で見ることができるんですね
これならfor文でまわせそうです
>>478
javascriptの知識がvbaの知識より薄くてできません・・・
>>479
その方法もありですね
勉強になります
ありがとうございます

489:デフォルトの名無しさん
19/02/25 19:50:39.60 lqq1zerAa.net
for i = 0 to 10
ie.navigate "javascript: page(" & i & ")"
vba_code_here()
next

490:デフォルトの名無しさん
19/02/25 20:05:06.80 +5CiRMIi0.net
>>481
これでもいけますね!
ありがとうございます
自分でも試してたつもりだったんですが&の端がシングルクオーテーションだったからだめだったんだと思います。
これでもネストできそうです。ありがとうございます。

491:デフォルトの名無しさん
19/02/25 22:06:28.97 U7AKD+aj0.net
フォームに張り付けたMediaPlayerプレイヤーのコントロールのプロパティが勝手に変わる謎のエラーが頻発。
どうもフォームのサイズを変更するAPIがイタズラしているらしい。
こまかく切っていってようやくまさかの原因が解ったが対処方法わからずに対処療法してしまったがそれでも半日あまりを費やした。
よくわからないサンプルコード使うと謎のエラーが出てハマることを覚えた。
プログラマーってすごいな、これ毎日やってたらほんと禿げるわ。

492:デフォルトの名無しさん
19/02/25 22:14:43.73 RXoXH9qp0.net
>>483
>よくわからないサンプルコード使うと謎のエラーが出てハマることを覚えた。
これやると一番時間を無駄にする
・サンプルコードをざっと眺めて全体の流れを把握
・APIの仕様をしっかり読む
・一からテストコードを書く
・APIもう一回読み直しながら、もう少し詳細に作り直し
・本番環境で書く
こんな感じ。仕様を把握してから書いたほうが絶対に早い

493:デフォルトの名無しさん
19/02/25 22:46:07.98 TP8zPbuZ0.net
>>448
オーバーロードってあったっけ?それに、ジェネリクスがないから全部の定義されてる型について生成しなきゃいけないから地獄なんだよ!リテラルで配列を生成できたらいちいちDimしなくてもいい

494:デフォルトの名無しさん
19/02/25 22:51:30.74 TP8zPbuZ0.net
ちなみに、望むシグニチャーはこんな感じ
' T = Generic
Public Function ArrayOf(/* vararg */ element As T) As Array<T>
どうせVBAは浮世離れしすぎてて書けないけどな!

495:デフォルトの名無しさん
19/02/25 23:00:26.05 F8HPsJ9/0.net
ジェネリックはないがヴァリアント型つかえば良いのだよ
無いものねだりしてもしょうがない
問題解決のためにあるものを使うだけ

496:デフォルトの名無しさん
19/02/26 06:28:56.69 QryMFy3y0.net
>>429
これ。面白いな。試していないが、頭から見て行ってまずForが出て来るのにForがないって言われるの?w
VBAも構文を修正するのはいろいろと問題があるだろうけど、こういうペリフェラルな部分では改良できるところは
いくらでも残ってるよねえ

497:デフォルトの名無しさん
19/02/26 06:39:06.54 QryMFy3y0.net
構文チェックくらいなら、どっかサードパーティが作ってアドオンとか出来ないのかな
xlsファイルの中からプログラム文ってテキスト抽出って出来ないんだっけ

498:デフォルトの名無しさん
19/02/26 06:56:12.34 Dl2cSn2NM.net
>>488
If~Thenでブロック作るからNext出て来たらForがないと見なされる
C言語とかはEnd IfとNextの両方が } なので発生しないけどイメージとしては
for(i = 0; i <= 10; i++)
 if(true){
next
 }
みたいな感じになってる

499:デフォルトの名無しさん
19/02/26 07:22:50.54 Dl2cSn2NM.net
>>489
やれるやれないという意味ならやれる
そもそも*.basとか*.clsとかにエクスポートしたらテキストファイルだし
セキュリティの設定はいるけどCOM経由ならそんなに難しくない
ただ>>429みたいなケースでわかりやすいメッセージを出すのは思ったより難しい

500:デフォルトの名無しさん
19/02/26 07:28:56.02 wxY2HVgtM.net
>>487の言うとおりだ
生成もジェネリックに出来ないが使う方の関数だってジェネリックは出来ない。
つまりVariant を避けてると型別定義地獄になるって事だ

501:デフォルトの名無しさん
19/02/26 12:32:40.78 5MxkS3P70.net
>>476-482
wget は簡易クローラーだから、これで複数ページをダウンロードすれば?
その後、vba で処理すれば?
まあ、適度に時間をおきながら、アクセスしなよ。
頻繁にアクセスすると、営業妨害で逮捕されるかも

502:デフォルトの名無しさん
19/02/26 17:27:28.56 8+gQOZAja.net
win10(64bit)にoffice2013(32)入れたら動作おかしくなったので
新しいoffice買ってきた

503:デフォルトの名無しさん
19/02/26 21:19:16.14 bIfQynSTx.net
bitsadmin.exeやPowerShellを使う手もあるな

504:デフォルトの名無しさん
19/02/26 21:29:55.31 7VOH1icT0.net
Variantか…型安全をぶち壊してる気がするけど…

505:デフォルトの名無しさん
19/02/26 21:52:08.87 3hFiWozk0.net
>>496
いいんだよ
型安全な汎用プログラムを書けない時点で、個別のプログラムを型安全にする気は失せるというものだ

506:デフォルトの名無しさん
19/02/26 21:57:39.80 tGZ/aMnha.net
>>493
有料のRPAツールを使ってもダメなんでしょうか?

507:デフォルトの名無しさん
19/02/26 23:46:14.88 VNg9bOSA0.net
暗黙の型変換が拡大縮小の両方に効く時点で型安全なんてあり得ないわけで

508:デフォルトの名無しさん
19/02/27 03:06:02.10 s/3R2a1B0.net
vbaで型安全ってなんのギャグだよ
Sub foo()
Dim bar As Long
bar = 1 & "0"
msgbox bar
End Sub

509:デフォルトの名無しさん
19/02/27 06:45:27.86 OKB4dgT5x.net
>>500
これって 1 & "0" のところが 1 + 0 と評価されて出力が 1 になるのか?

510:デフォルトの名無しさん
19/02/27 09:24:25.27 94mgNWr4H.net
数値を“”で括って連結させるって普通はやらないよな
もはやクレーマーの域

511:デフォルトの名無しさん
19/02/27 09:27:38.25 ev0DPtJU0.net
>>501
ならない。
---------------------------
Microsoft Excel
---------------------------
10
---------------------------
OK
---------------------------

512:デフォルトの名無しさん
19/02/27 10:08:05.65 TCTVEEoa0.net
>>502
アホはお前

513:デフォルトの名無しさん
19/02/27 10:14:24.05 94mgNWr4H.net
>>504
自己紹介かな?

514:デフォルトの名無しさん
19/02/27 10:21:18.29 TCTVEEoa0.net
>>505
本当、馬鹿は食いつきがいいな。エラーも起こさずに動くのが問題なんだよ。
馬鹿には難しいか?

515:デフォルトの名無しさん
19/02/27 10:48:04.11 hD6s3+cfM.net
&演算子が勝手に文字列に変換するのは利便性考えたらわかるし
Long型の変数に文字列代入する時に暗黙のキャストするのもわからなくはない
けど警告ぐらいは出してほしいね

516:デフォルトの名無しさん
19/02/27 10:48:12.18 94mgNWr4H.net
>>506
それはエラーであってほしいというお前の願望だろ

517:デフォルトの名無しさん
19/02/27 11:32:27.96 WN1Wln/+0.net
VBAにも当然、厳密な構文ルールは存在するだろう
数字 & 文字列は文字列にするってのがルールじゃね。 一度覚えたらそれでいい

518:デフォルトの名無しさん
19/02/27 11:45:10.68 K1qNq431M.net
& が + に解釈されたらたまったもんじゃない

519:デフォルトの名無しさん
19/02/27 12:38:47.93 JcvtiT+vd.net
>>497
Variantは意識して使う。
型安全も意識する。
当然、暗黙の型変換でどうなるのかも意識して組んでいれば、そうそう問題になることもあるまい。

520:デフォルトの名無しさん
19/02/27 12:41:38.23 JcvtiT+vd.net
どんな言語でもツボは有るわけでね。
押さえてコードを書けない奴がアホなだけだろ。
初めて触った初心者じゃあるまいし警告なんて全く必要無い。

521:デフォルトの名無しさん
19/02/27 13:03:51.61 aJqXXkY2d.net
>>509
代入先が数値だろ

522:デフォルトの名無しさん
19/02/27 13:08:23.01 OA+HeXxoM.net
同じマクロを使っている複数の文書があって、マクロの一部を修正したいんですが、
別ファイルのモジュール内の変更を行うマクロは VBA を使って書けますか?
または、別ファイルのモジュールを削除(開放)してインポートする形でも構いません。
実際はワードでやりたいことですがワードVBAスレがなさそうなのでこちらで質問しました。
Norm


523:al を書き換えて対応するというのはできない前提です。



524:デフォルトの名無しさん
19/02/27 13:17:59.19 aJqXXkY2d.net
>>514
スレ一覧よく見てみろ。そういういい加減で他人にすぐ聞くからできないことだらけなんだよ。

525:デフォルトの名無しさん
19/02/27 13:19:02.81 K1qNq431M.net
ByRef x As Variant

526:デフォルトの名無しさん
19/02/27 13:19:50.19 94mgNWr4H.net
>>514
書けるよ

527:デフォルトの名無しさん
19/02/27 14:41:22.10 +oDGw9vfM.net
>>503
Option Explicit付けてもエラーにならないのかな?

528:デフォルトの名無しさん
19/02/27 15:47:12.82 WN1Wln/+0.net
>>510
お前は何を言ってるんだ?
& は文字の連結子だろ。 だから、文字としての1と0を連結したんだよ
>>513
代入先は数値だな。 文字処理をしてそれがVariantだからそれから数値変換したんだな
文字処理が優先なんだろ

529:デフォルトの名無しさん
19/02/27 15:48:15.94 WN1Wln/+0.net
>それがVariantだから
すまん。これはなし
まあ変な構文ではある

530:デフォルトの名無しさん
19/02/27 16:29:49.69 K1qNq431M.net
>>519
だから連結じゃなく加算と解釈されたらたまったもんじゃない
と言っている

531:デフォルトの名無しさん
19/02/27 17:58:08.46 HrTieKXOM.net
>>507
& 演算子は文字列同士の連結だから
2 & 1 ⇒ "21"
"2" & 1 ⇒ "21"
2 & "1" ⇒ "21"
"2" & "1" ⇒ "21"
になる
逆に - 演算子は数値同士の引き算だから
2 - 1 ⇒ 1
"2" - 1 ⇒ 1
2 - "1" ⇒ 1
"2" & "1" ⇒ 1
になる
問題は + 演算子で普通は数値の足し算なんだけど両辺が文字列の時は文字列連結になるので
2 + 1 ⇒ 3
"2" + 1 ⇒ 3
2 + "1" ⇒ 3
"2" + "1" ⇒ "21"
になる
なのでVariant使っててA + Bとかやってると両方が文字列の時にはあ?ってなことになったりする

532:デフォルトの名無しさん
19/02/27 18:25:55.24 hD6s3+cfM.net
>>522
>"2" + "1" ⇒ "21"
&、-と合わせて考えるとめちゃくちゃ気持ち悪いなこれ

533:デフォルトの名無しさん
19/02/27 18:25:56.15 U+okKr8Fa.net
出力する時以外に文字列と他の型を演算させる需要ってあるか?
すごい変なプログラム書いてそう

534:デフォルトの名無しさん
19/02/27 18:31:15.76 hD6s3+cfM.net
>>524
Cells(1,1) + Cells(1,2)
とか気軽に書いて文字列セルなのに気づかず発狂するがいい

535:デフォルトの名無しさん
19/02/27 18:45:49.28 U+okKr8Fa.net
>>525
セルの値同士の計算をダイレクトにやろうとする発想にまず疑問を感じる

536:デフォルトの名無しさん
19/02/27 18:48:38.08 JcvtiT+vd.net
だから、型を意識してコード書かない奴は駄目なんだ。
あと、Cells(1,1) + Cells(1,2)じゃなくて、Cells(1,1).Value + Cells(1,2).Valueとすべき。

537:デフォルトの名無しさん
19/02/27 18:53:54.71 sssEi30aM.net
>>524
セル値が16進で、その値で計算させるとかかな。
昔はよく使ってたが、最近は使わなくなったな…

538:デフォルトの名無しさん
19/02/27 19:19:30.96 s/3R2a1B0.net
>>527
いや、そこじゃない
cellsのデフォルトプロパティがvalueな事ぐらい皆分かっている
valueの型がヤバイんだ

539:デフォルトの名無しさん
19/02/27 19:31:13.45 zqU1UpTE0.net
>>527
> だから、型を意識してコード書かない奴は駄目なんだ。
そんなのわかってるからいちいちマウント取りに来なくていいよ
世の中には変数宣言すらしないやつとかもいるし使い捨てコードとかもある

540:デフォルトの名無しさん
19/02/27 19:35:36.50 kQabADAE0.net
本当によくできたプログラムっていうのは変数がどんどん減っていくものだよ

541:デフォルトの名無しさん
19/02/27 19:49:19.80 J+jPuAvg0.net
やっぱVBAってクソだわ

542:デフォルトの名無しさん
19/02/27 19:52:19.85 Vhp/GCq70.net
>>532
と罵りたいだけが為にここに来るんだろ?  プ

543:デフォルトの名無しさん
19/02/27 20:02:27.43 J+jPuAvg0.net
やっぱVBAスレってクソだわ

544:デフォルトの名無しさん
19/02/27 20:17:03.40 INBREE+00.net
クソレスすんなプロさん

545:デフォルトの名無しさん
19/02/27 21:22:24.52 rA0fzWNE0.net
>>531
デバッグはやりづらくなるけどな

546:デフォルトの名無しさん
19/02/27 21:48:46.20 WN1Wln/+0.net
まあやっぱり、1 & "0" とか  "2" + 1
とかが出てきたら、エラーで落とすのが普通だろうなあ
で、プログラマはそこで、Val関数で数値にするとか逆に文字列にするとか
やっぱり型変換、確認をプログラムの中に入れながら作るのが本来の筋だと思うわ
そもそもの構文を変えないのであればね

547:デフォルトの名無しさん
19/02/27 22:04:09.28 6/kMoeDHa.net
どうでもいいよ
所詮VBAだし

548:デフォルトの名無しさん
19/02/27 23:43:00.80 APPBNRQYM.net
>>538
そういうこと

549:デフォルトの名無しさん
19/02/28 00:41:55.86 ULaFt4eB0.net
質問です。お願いします。
public sub shuukei()
'集計してシートに書き出してそそのシートのコピーを別ファイルとして保存
end sub

こういうコードを作りましたが、少しでも速く処理されるようにもっと工夫したいと思っています。
そこで、少し書き直しては速度に変化があるか確認したいのですが、コードの実行速度を
測る方法がわかりません。教えていただけないでしょうか?
public sub jikantest()
  '計測スタート
  call shuukei
  '計測終り
  msgbox かかった時間
end sub

こんな感じでいちいち確認したいです。

550:デフォルトの名無しさん
19/02/28 00:46:39.13 3O1mZe4/0.net
>>540
dim st as single, ed as single
st = timer
(処理)
ed = timer
debug.print ed - st & "sec"
いつもこんな感じでやってる。

551:デフォルトの名無しさん
19/02/28 00:47:31.02 CZa6uBrL0.net
Debug.Print Now でもしとけ

552:デフォルトの名無しさん
19/02/28 00:51:18.30 ULaFt4eB0.net
>>541
ありがとうございました!

553:デフォルトの名無しさん
19/02/28 01:23:05.26 8R6HTxA70.net
変数の型はトレースの時だけでもシンタックスハイライトして欲しい。
それか左辺に合うように強制キャストで。

554:デフォルトの名無しさん
19/02/28 02:06:55.62 u4sOxAKE0.net
>>540
早くなってもわかりにくいのはやんない方がいいぞ

555:デフォルトの名無しさん
19/02/28 06:51:30.57 ULaFt4eB0.net
お恥ずかしい質問ですが、もうひとつお願いします。
私は、変数の中身でもなんでも、とにかく確認したいときはmsgboxを使うんです。
そのほうが楽だし。
でも、こういう場所で回答するような人のほとんどは、>>541-542さんのように、
debug.なんとか ってのを使いますよね?
よくわからないけど、debugって、msgboxとは違って、どこかのウィンドウに表示させるってことだけ
は知っています。
そして、msgboxよりも、そっちの方がなんとなく本格派っぽいことも感じてます。
みなさん、どうしてmsgboxよりそっちを使うんですか?本当にそっちが便利なんですか?

556:デフォルトの名無しさん
19/02/28 06:56:12.35 PI/gJuny0.net
>>546
msgboxだと毎回画面が出ちゃうから

557:デフォルトの名無しさん
19/02/28 07:04:09.83 TTqJ1VR80.net
Debugって俺も使ったことないんだが、過去何行くらいまで遡れるの?
それとその結果ってファイルに出力できる?

558:デフォルトの名無しさん
19/02/28 07:09:57.92 syDDbQ630.net
自分はstopとローカウルィンドウ派だな

559:デフォルトの名無しさん
19/02/28 07:10:06.15 3O1mZe4/0.net
>>546
OK押すのメンドいし、押したら消えるし。
Printならイミディエイトウィンドウにどんどん溜まっていくから比較しやすいし。
VBE上でCtrl+Gで呼び出せる。
コード書くときは常に表示してるな。
他にもいろいろ便利に使えるからGGってみて。

560:デフォルトの名無しさん
19/02/28 07:28:40.77 /X5EyKzha.net
debug.printなら開発画面を見ない他の使用者が
気付かないで済む

561:デフォルトの名無しさん
19/02/28 08:31:53.34 3CdGs56rM.net
>>540
ちょっと本格的にやるなら…
URLリンク(blogs.yahoo.co.jp)
注意!
中にも書いてあるけど使用時にコードを改変するから使うならバックアップはちゃんと取ること

562:デフォルトの名無しさん
19/02/28 12:28:10.25 wbPQJw42d.net
>>531
そうとも限らない。
速度の為に変数増やすこともあるから

563:デフォルトの名無しさん
19/02/28 12:32:41.06 wbPQJw42d.net
>>548
そんなに大量には残らないね。
1000行くらいか?
大量に残したいときは普通テキストファイルに書き出すだろ。

564:デフォルトの名無しさん
19/02/28 12:33:37.47 qWkUq+5ha.net
>>553
まああくまで傾向だな
システム開発に絶対はないから大まかに語るしかない
しかしまあプログラマって柔軟性がないから何か意見を言ったら必ず特殊な状況を想定して反論しようとする人が出てきて面倒くさいな

565:デフォルトの名無しさん
19/02/28 13:23:20.67 qor22oN3H.net
柔軟性がある人は出世するからね

566:デフォルトの名無しさん
19/02/28 13:59:45.70 TjDXn6TQM.net
>>555
後々のテスト工程考えてるからじゃない?
そこまで考慮しなくても…となる気持ちは分かる

567:デフォルトの名無しさん
19/02/28 14:20:36.03 x4ZPjfd7M.net
考慮すべき場面とするべきでない、しても意味がない場面の判断ができないとも言える

568:デフォルトの名無しさん
19/02/28 14:36:57.48 qor22oN3H.net
だから日本は開発が遅いんだよ
アジャイルでやれ

569:デフォルトの名無しさん
19/02/28 14:57:38.31 7AaSmpPf0.net
想定される状況なんか結局は本人にしか分からないし、説明すんのもめんどくさい
まあ本人が気付いてないこともあるけど

570:デフォルトの名無しさん
19/02/28 17:57:19.76 3CdGs56rM.net
>>555
決めつけで語って指摘されたら逆ギレかよ w

571:デフォルトの名無しさん
19/02/28 18:42:40.55 jqfgz8pY0.net
ーーここまで型変換関数なしーー
身内が意味がわかるっていうなら変換関数抜きにしてもいいかもしれない、けどコンテキスト的に関数噛ませたい

572:デフォルトの名無しさん
19/02/28 18:45:13.08 OctLDBwCx.net
Debug.Assertも割とよく使う

573:デフォルトの名無しさん
19/02/28 21:21:18.29 7AaSmpPf0.net
Variant使わなきゃいい

574:デフォルトの名無しさん
19/02/28 22:12:12.40 TWIU4lxdM.net
>>564
いやいやいやいや
ByRef As Variant
の意味論がわかってないだろ

575:デフォルトの名無しさん
19/02/28 23:20:59.71 JVzuLoidx.net
Variant型がないとそれはそれで不便
実行時にならないと変数の保持データの参照型やデータ構造が決定できないような関数を定義するときには必須
Object型では限界があるし、多態性とか考えたら特に

576:デフォルトの名無しさん
19/03/01 00:53:35.24 oijdm3qva.net
VBAにもInterfaceがあるの知らない人かな

577:デフォルトの名無しさん
19/03/01 08:24:19.03 KSyELWIpd.net
だから意識して使うぶんには良いんだよ。
Variant配列で高速化は良くやるだろ。
あるいはあえていろんな型を受け付ける関数を作る場合とか。
俺はInteraceはあまり使わんね。
同じプロパティを持ったクラスを複数作ってグループとして使う場合でもそこまでしなくて良いだろと考える。

578:デフォルトの名無しさん
19/03/01 08:58:16.79 IB7Yh9y1a.net
プログラムの基本的な良い習慣を実践すればVariantなんてそう使うことはない
使うとしてもシートIOなど僅かな用途だけだから業務ロジックまで影響することはまずない

579:デフォルトの名無しさん
19/03/01 09:03:46.13 BWIoX5Sk0.net
プロ雑談者どものくだらん蘊蓄語り合いなんぞどうでも良いから質問者の方々は
遠慮なさらずにどうぞ~

580:デフォルトの名無しさん
19/03/01 12:55:03.48 3XNO5Z9qM.net
コードって色々書く場所あると思うんですけど、ある程度共通の切り分けってあるんですか?
フォームにはあまりややこしいものはかかないで標準モジュールを使うとか。
逆にフォームで書けるものは複雑でもそこで終わらせたほうがいいとか。
今迷ってるのはシート1のデータを加工してシート2のデータにマージさせる場合どこに書けばいいんだろうってことです。
そのシートごとに別けるとバラけて解りにくくなるしみたいな感じです。

581:デフォルトの名無しさん
19/03/01 13:04:09.15 SCR8DJeBM.net
所詮VBAだしどうでもいいよ
VBAの可読性・保守性を高める唯一の指針があるとしたら、極力VBAを書かないでワークシートの機能を活用することかな

582:デフォルトの名無しさん
19/03/01 13:26:59.89 HgS5037SH.net
>>571
標準モジュールに Sub MergeSheet1To2 とか作ってCallすれば、他人が処理部を見なくても「このボタンを押すとマージされるんだなぁ」と想像ができる。
自分はフォーム内は処理に使うデータのチェックくらいにしてる。

583:デフォルトの名無しさん
19/03/01 14:04:11.91 +h/xS+gL0.net
フォームモジュールって細々としたイベントのプロシージャであふれちゃって見にくい
だからできるだけ標準モジュールに切り分けてる
例えばフォーム上の複数のTextBoxに全く同じ入力規則を設けたい時なんかは
TextBox・KeyCode・Shiftを引数とするプロシージャを標準モジュールに書いて使い回ししてる
さっきもそういうの書いてた

584:デフォルトの名無しさん
19/03/01 17:47:45.49 jYXMQwAma.net
>>571
シート1 IOクラス
シート2 IOクラス
コンバータークラス
マージサービスクラス

585:デフォルトの名無しさん
19/03/01 18:53:01.98 KSyELWIpd.net
>>571
そのフォームで完結させたい時はフォームに全部書く。
汎用的なのは標準モジュール、汎用的でなくてもいろんな所から使い回す場合も標準モジュールだな。
シートモジュールにはシートのイベントプロシージャ以外書かないのが基本だけどそのシートのイベントプロシージャと一緒にしたい理由でシートモジュールに書くこともある。
意味論というか、何処に書くかは内容で決める。その方が後でコード見る時に視認性も良くなる。

586:デフォルトの名無しさん
19/03/01 20:10:20.22 9ceAGmrya.net
俺ならスコープで書く場所変えてる

587:デフォルトの名無しさん
19/03/01 20:18:09.30 S/p2I5Nx0.net
シート1だけでしか使わない関数はシート1
その関数の中で使う関数で他でも使う汎用関数は標準モジュール
シート1のデータを加工ってあるが、それが将来にでも他のシートでも使いそうならその加工関数は汎用化して
標準モジュール。 シート1でしか使わないのならその加工関数はシート1に書く

588:デフォルトの名無しさん
19/03/01 21:39:17.32 41cCIQF20.net
上級者の人がどう使っているかなんとなく解ったような気がします。とりあえず
【クラスモジュール】汎用性のある関数
【標準モジュール】 大きな処理
【シートモジュール】【フォーム】極力使わないが他と絡まない短いコードなら完結しても良い
という感じで試してみようと思います。
あとは関数名の最後に呼び出しする関数がある場所を付けてみようと思います。
何をやりたいかで構成も変わると思うのでそこらへんも加味しながら試してみます。
参考になりました、ありがとうございます!

589:デフォルトの名無しさん
19/03/01 22:34:27.56 KieDV9lDM.net
ここに上級者なんていないぞ

590:デフォルトの名無しさん
19/03/01 22:48:58.94 eQhW3/JV0.net
>>579
関数名の最後になにを付けるって?

591:デフォルトの名無しさん
19/03/01 23:05:06.38 jYXMQwAma.net
また一人、道に迷ってしまった
やっぱりVBAで勉強するのは非推奨ダナ

592:デフォルトの名無しさん
19/03/01 23:30:05.02 zWZoP6hm0.net
>>546
俺もmsgbox。
イミデは、知らないうちにウインドウが消えちゃうから。
プロパティもそう。
何で勝手に消えるんだろ。

593:デフォルトの名無しさん
19/03/02 01:21:31.95 Po9hNmd9x.net
>>579
汎用性のある関数を記載する場所だけど、VBAの仕様ではクラスモジュールではなく標準モジュールの方が都合が良いよ
何故なら自作のクラスモジュールに記述した関数を呼び出す場合、その自作クラスのオブジェクトのインスタンスを生成した後にそのオブジェクトのメソッドとして書くという手間が要る
つまりマシンメメモリの無駄食いになるしコーディング量も増える
標準モジュールならば関数名を書くだけで呼べるので余程気楽
適当にググったときに出てくる、OOP原理主義のJavaプログラマあたりが言うところの「汎用性のある関数はクラスに」っていう考え方は、VBAには当てはまらないので注意だよ

594:デフォルトの名無しさん
19/03/02 02:50:08.40 eoNuxzNL0.net
>>572
ワークシートなんて可読性最悪じゃん
セルには数式が1つしか書けないし条件付き書式も内容を確認するのが面倒
条件付き書式が設定されてる範囲を視覚化する方法ってないよな?俺が知らないだけ?

595:デフォルトの名無しさん
19/03/02 03:08:30.41 vHLv5v7t0.net
>>585
数式タブ→数式の表示

596:デフォルトの名無しさん
19/03/02 09:24:48.87 Po9hNmd9x.net
>>572
>>585
可読性を高める唯一の方針とは言わんが、正直下手に変数にブックレベル以上の参照スコープを持たせて値やオブジェクトを操作するくらいならワークシートの機能を使った方がよくねって場面はいくらでもあるな
エラーとかでプログラムが停止したときにセル値と違って変数に格納された参照ポインタは揮発するし

597:デフォルトの名無しさん
19/03/02 09:34:34.03 heck9gfNa.net
ワークシート関数の何が良いかというと副作用がないことだよ
ぶっちゃけ重要なのはそこだけ
それ以外ではセル内にだらだら式を書くと醜いなどデメリットしかない
なのでVBAで普通に副作用がない関数を書けばいい
副作用のない関数ならVBAからもセル内式からも使いやすい
しかもセル内式と違って見やすく管理しやすい

598:デフォルトの名無しさん
19/03/02 09:47:47.22 Po9hNmd9x.net
VBAの方が見やすくて管理しやすくてワークシート関数は見にくいって図式が成り立つかどうかは正直処理を書くやつのスキル次第だけどな
ワークシート関数は必ず内部スコープが()で括られるリスト形式だから、処理構造が簡潔に可視化できるメリットがあるとも言えるわけだし

599:デフォルトの名無しさん
19/03/02 10:15:37.68 VydunwR60.net
自分は>>572とほぼ正反対のやり方でやってきた
シートは使い捨てのデータとちょっとした設定情報を置いたり、あとは結果を出力する場所としてしか使わないな。
使い捨てのは別だけど、ツールとして繰り返し使うブックのシートに関数はほぼ書いてない。

600:デフォルトの名無しさん
19/03/02 10:26:10.19 heck9gfNa.net
>>589
セル内数式はネスト入るとすぐに醜くなるじゃん
それに式に名前をつけて管理できないのもメンテナンス性を悪化させてる

601:デフォルトの名無しさん
19/03/02 10:34:03.78 1SfH4HCRa.net
>>591
式に名前を付けたければ単一値ならセルに名前付けりゃいいし、ベクトルならテーブルにしてカラム名付けりゃいい
VBAで関数自作してもいい
VBAの中でループぶん回すよりは遥かに見通し良いわ

602:デフォルトの名無しさん
19/03/02 10:46:06.68 heck9gfNa.net
>>592
そもそもセル名前自体が管理しにくいので論外
セル名と数式の関係性がパッと見てわからないし
セル名と数式がひも付けられて管理されてると言われなきゃ後任が気付かない
VBA関数ならこの関数名はこの定義って誰でも一目でわかる
本来の出力でない余計なカラムはノイズになって邪魔
名前で管理したい項目が増えたらノイズだらけになってなにを説明したい表なのかわからなくなる

603:デフォルトの名無しさん
19/03/02 10:57:15.96 ZJ+HN4z+0.net
visual studioに慣れ切ってしまってるのでVBAエディタがマジで苦手・・・

604:デフォルトの名無しさん
19/03/02 11:26:41.59 PSsyx6QoM.net
>>593
VBAでワークシート関数を作るのは否定しないよ
最悪なのはワークシート関数(VBA含む)でできることをVBA内でループ回す馬鹿

605:デフォルトの名無しさん
19/03/02 11:40:34.50 heck9gfNa.net
>>595
こ文脈でループを回すの意味がわからないしどっから出てきて何を意味してるんだ?

606:デフォルトの名無しさん
19/03/02 13:55:25.27 WupyvY1Q0.net
話変わるがセルのコピーとか移動したときに条件付き書式が壊れてやたら重くなって直すの苦労したことある

607:デフォルトの名無しさん
19/03/02 15:18:36.62 EfeqCtIS0.net
お前らまず、
ワークシートの機能を活用する
というのをどういうことかちゃんと合わせてから話してくれるか

608:デフォルトの名無しさん
19/03/02 18:22:41.70 BmvnLX83x.net
>>598
ワークシートの機能ってのはワークシートの機能一般のことでしかないだろ
ワークシートの特定の機能を想定して話をしてるんじゃない
ワークシートの機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話

609:デフォルトの名無しさん
19/03/02 19:24:09.91 PK2Geudt0.net
ワークシートって言いすぎww
Withでまとめたくなってきたわ。

610:デフォルトの名無しさん
19/03/02 19:30:50.79 6n8BrDHBH.net
With ワークシート
.の機能ってのは
.の機能一般のことでしかないだろ
.の特定の機能を想定して話をしてるんじゃない
.の機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
End With

611:デフォルトの名無しさん
19/03/02 20:23:41.79 VydunwR60.net
ワークシートの機能って単独のワークシート関数で実現できることなの?
それをVBAでやるのは確かに馬鹿らしい。
そうじゃないならVBAのほうがいいな。

612:デフォルトの名無しさん
19/03/03 01:17:47.50 5kU0Dorz0.net
>599
だからワークシートの機能一般ってなんのことを言ってるの?
セルの計算式?
計算式用のワークシート関数?
Application.WorksheetFunction?

613:デフォルトの名無しさん
19/03/03 03:16:39.28 1gVEOeax0.net
VBA以外のExcelで出来ること全てだろ
理解力低過ぎないか?

614:デフォルトの名無しさん
19/03/03 11:57:08.93 XBWTxj+a0.net
なんでVBAを外すのか分からない
このスレにいる連中ならワークシートにはイベントも含まれるという感覚の方が普通でしょ

615:デフォルトの名無しさん
19/03/03 12:44:05.38 87SKey7q0.net
シートを方眼紙だと思っている人の視点での機能一般だろう。
ここの人たちは、クラスモジュールの1つくらいの感覚かもしれんが。

616:デフォルトの名無しさん
19/03/03 14:18:18.29 ilhG1tLW0.net
そこはかとなく臭うというか湧き出るダサさが嫌い

617:デフォルトの名無しさん
19/03/03 18:57:15.36 dGd12yAna.net
EXCELの全ての機能のうちVBAを除いた残りってことじゃね

618:デフォルトの名無しさん
19/03/03 19:26:33.74 2dKZwCIHx.net
エクセルのオブジェクトモデルでメソッドが提供されてるような機能をわざわざVBAでスクラッチするなって意味もあるんじゃね
ListObjectオブジェクト(テーブル)の存在や機能を知らずに、同一列内のセル数式ほコピーの機能を自作するような話だろ

619:デフォルトの名無しさん
19/03/03 20:55:07.59 C10iXUczM.net
初心者です。わかる方いましたらお教えください。
IE.Visible = False
として、
IE.Quitが何らかの理由で実行されなかったり、それを書かなかった場合
どうなってしまうんでしょうか…?
バックグラウンドでずっとフワフワといるんでしょうか?
見方もよくわからないタスクマネージャーで見てみるとアプリケーションとしてはたぶん起動されていませんでした…
IE.Visible = Falseとした場合はもしかして特に閉じる指示が必要ないのでしょうか…?

620:デフォルトの名無しさん
19/03/03 21:00:52.17 sl8Y8jOC0.net
>>610
バックグラウンドでずっと動き続ける、が正解
ちゃんと起動してないのはコードがおかしいかタスクマネージャの見方がおかしい
そこをTrueに変えるだけでちゃんとIEのウィンドウが表示されるか確認

621:デフォルトの名無しさん
19/03/03 21:44:32.70 C10iXUczM.net
>>611
Trueに変えるだけで表示はされたので、タスクマネージャーの見方がおかしかったようです
ちゃんとバックグラウンドなんとかの欄では起動されていました
ありがとうございました…

622:デフォルトの名無しさん
19/03/04 09:46:01.18 TvaJY4yu0.net
関数使うかVBA使うかも内容で決める。
関数だと物凄く重くなることがある。
Sumproductとかを多用した場合とか、複数シートの集計を1日の集計としてさらに1ヶ月分の集計するとか。
自動計算を切れば良いんだけど、運用で微妙だね。
それに昔、銀行の仕事で大量のデ―タとSumproductのせいで1回の計算でさえいつまでたっても終わらないことがあった。
その時はVBAに書いたら5秒で終わった。

623:デフォルトの名無しさん
19/03/04 10:53:05.90 RuY9YBtCM.net
ワークシート関数を関数と表現するのってUSBメモリをUSBと呼ぶのと同様にアレな感じ

624:デフォルトの名無しさん
19/03/04 10:55:32.34 TFGUk6BN0.net
その違和感を持てる知識がない頭が残念な人なんだろ

625:デフォルトの名無しさん
19/03/04 11:15:22.83 gwy/L6iPH.net
WorksheetFunctionプロパティで呼ぶもの(sumとかvlookupとか)がワークシート関数
VBAでしか使えないもの(CIntとかInstrとか)がVBA関数
上記と自作関数をまとめて関数

626:デフォルトの名無しさん
19/03/04 11:25:35.49 vFn2j9Kt0.net
>VBA関数
標準関数だろう
エクセルの場合はVBA標準関数とでも言うべきか
>自作関数
ユーザー定義関数という名称がある
まぁ俺は関数としか呼ばんけどな、ハハハ
vbaでワークシート関数使う時はそう呼ぶ

627:デフォルトの名無しさん
19/03/04 11:45:46.92 gwy/L6iPH.net
>>617

628:デフォルトの名無しさん
19/03/04 14:30:16.31 TvaJY4yu0.net
関数とVBAと対比させてるのに勘違いする奴がいるとはとても思えないが。
いたらそいつはアホだよ。

629:デフォルトの名無しさん
19/03/04 14:32:37.46 TFGUk6BN0.net
>>619
馬鹿が恥の上塗りに来ましたよ、と

630:デフォルトの名無しさん
19/03/04 14:57:43.98 TvaJY4yu0.net
>>620
あらら、アホが恥の上塗りに来たよw

631:デフォルトの名無しさん
19/03/04 15:02:35.15 vFn2j9Kt0.net
vbaだし何でもええやろ
どうせ大事に至ることはない、争う程の事ではない

632:デフォルトの名無しさん
19/03/04 15:28:20.01 TFGUk6BN0.net
>>621
馬鹿はVBAに関数がないと思っているのか?
馬鹿は早く死ねよ

633:デフォルトの名無しさん
19/03/04 16:20:08.03 RuY9YBtCM.net
「文脈上USBメモリのことであるとわかるときはUSBでいい」
「そもそもそんな呼び方普段からするなよ」

634:デフォルトの名無しさん
19/03/04 18:20:48.65 FDpjfwBmM.net
わかるかどうか判断するのは読み手側だからな
書く側が勝手に略すのは読ませる気がないんだろう

635:デフォルトの名無しさん
19/03/04 23:23:23.24 dF1M3atd0.net
そういえばCD-ROM2をロムって呼んでたやついたな
これSUPER CD-ROM2だから

636:デフォルトの名無しさん
19/03/05 00:24:00.61 YDI1bFmR0.net
ID:TvaJY4yu0みたいな馬鹿がメンテできなくなるVBAを作る

637:デフォルトの名無しさん
19/03/05 00:37:29.46 yUBkGE+g0.net
jsのAPI使える人いる?
使い方がサッパリ分からない

URLリンク(docs.microsoft.com)
URLリンク(docs.microsoft.com)

638:デフォルトの名無しさん
19/03/05 03:34:27.88 VDry4yCPa.net
馬鹿には無理

639:デフォルトの名無しさん
19/03/05 05:56:45.90 pou1Iepn0.net
>>628
見てきたけ


640:ど、なんかすげえめんどくさそう。出来ることも見新しいことってほとんどないじゃん 普通のWin32APIとかやったことあるのか。そっち勉強した方が遥かにまし。 VBAでもやれるから



641:デフォルトの名無しさん
19/03/05 07:48:42.24 VSxyPtP8a.net
いやMacとかOffice Onlineで使えることに意味があるんだろ
まあOffice Online使うくらいならGSuite使うという企業が殆どだろうけどw

642:デフォルトの名無しさん
19/03/05 08:12:27.21 yUBkGE+g0.net
>>628
はこういう事だった
誰も使ってないのね
URLリンク(qiita.com)
>>629
自己紹介乙
>>630-631
もちろんやれることは同じ
jsで書ける事自体がメリット
googleSpreadsheetのマクロを移植する時に使える
一生に一回もないと思うけどな

643:デフォルトの名無しさん
19/03/05 08:56:53.06 K5flI6jox.net
Win32APIとOffice JavaScriptAPIどっちを勧めるかと聞かれたら今なら後者かな
後者の案件あるのか知らんが

644:デフォルトの名無しさん
19/03/05 12:20:11.68 IGhfqt8ja.net
そもそも全くの別物を比較してどうすんねん

645:デフォルトの名無しさん
19/03/05 12:44:55.98 bZMGULjeF.net
>>623
日本語が理解出来ないようだな。
VBAと関数を対比させているんだからここで関数と言ってるのは"VBAの関数"のことでは無いと解釈するのがまともな日本人だ。

>>624
???
それは日本語として変だ。
USBメモリはUSBでは無い。
VBAの関数は関数ではある。
そもそもの例が適当でないわけだ。
>>625
文脈や、やり取りでVBAの関数なのかワークシート関数なのかを判断する必要があるのは>>66>>142>>172も一緒だ。
お前らと違って普通の日本人は文脈ややり取りから判断出来てるんだよ。
>>614のようなことを言い出すのはお前らのような頓珍漢な奴らだけだよ。

646:デフォルトの名無しさん
19/03/05 12:47:21.71 bZMGULjeF.net
>>142>>186>>448
も文脈で判断するな。

647:デフォルトの名無しさん
19/03/05 12:51:32.81 bZMGULjeF.net
>>634
正にその通り。
Win32APIではじめて出来ることがjsで出来るなら分かるけどね。

648:デフォルトの名無しさん
19/03/05 13:01:00.32 yUBkGE+g0.net
>>634
あぁやっぱりそうだよね
知識不足かと思って調べてしまったわ

649:デフォルトの名無しさん
19/03/05 13:14:26.63 YDI1bFmR0.net
ID:bZMGULjeF
マジモンのアスペルガーのキチガイ

650:デフォルトの名無しさん
19/03/05 13:18:51.34 yUBkGE+g0.net
jsアドインもう少しぐらい使われてるのかと思ったけど、
誰も使ってないようで安心した

651:デフォルトの名無しさん
19/03/05 13:32:20.37 YOwkwz810.net
Excel Python API とかも Excel.js Office.js とかと同じ扱いになる悪寒

652:デフォルトの名無しさん
19/03/05 13:36:30.59 yUBkGE+g0.net
>>641
ゲェッ
vbaはこの手軽さが最強の武器なのに、VSからアドイン作成とかあまりに残念すぎる

653:デフォルトの名無しさん
19/03/05 20:23:23.29 ruLmgCaM0.net
>>639
これだからアホは困る。
お前、出版社にはクレーム入れるなよw
URLリンク(www.amazon.co.jp)関数

654:デフォルトの名無しさん
19/03/05 20:34:12.08 ruLmgCaM0.net
URLエンコードしてなかったな。
URLリンク(www.amazon.co.jp)

655:デフォルトの名無しさん
19/03/05 20:39:11.81 yUBkGE+g0.net
逆引き系辞典はネットあると本当に使わない

656:デフォルトの名無しさん
19/03/05 21:11:49.71 WmyrgrGT0.net
会社で異動になった人が作ったマクロの稀に出るバグを直そうと頑張っています。
ちょっと怪しいかなと思ったプロシージャがあるので見にくく長いと思うのですが見て頂けませんか?
勉強しながらの初心者です。
Sub wait(IE As InternetExplorer)
Const リトライ = 2
Dim IEDOC As HTMLDocument
Dim ReCount As Long,i As Long
Do
«略»
Set IEDOC = IE.Document
«略»
Loop While IEDOC Is Nothing
If IEDOC.frames.Length < リトライ Then
ReCount = リトライ
Else
ReCount = IEDOC.frames.Length
End If
For i = 0 To ReCount
Do While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Next
End Sub
このあとすぐに書き込みに参ります

657:デフォルトの名無しさん
19/03/05 21:26:50.63 WmyrgrGT0.net
オレンジの部分がIE.Busy = Trueという風に教科書通りになっていないのですがこれで大丈夫なのでしょうか
上手いことちゃんとなっているか調べようとやってみましたが私には難しかったです
そして水色の部分なのですが、フレーム数を取得してその数だけ念の為回しておくという感じでしょうか
フレームがいくつかあると取得のたびにIE.BusyがTrue,Falseに切り替わると聞いたのでそのためで合っていますか
それよりもさっき調べて出てきた
'完全にドキュメントが読み込まれるまで待機する
Do Until IE.document.ReadyState = "complete"
DoEvents
Loop
ではダメなのでしょうか、別物でしょうか
ざっとみておかしい部分はありますか?
図々しくすみません
URLリンク(i.imgur.com)


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