Excel VBA 質問スレ Part68at TECH
Excel VBA 質問スレ Part68 - 暇つぶし2ch331:デフォルトの名無しさん
20/09/19 18:39:28.33 DdZzGNwy0.net
>>319
実際にそういう動きをする言語もあるからな
>>325
それは開発方法とフェーズによる
いつでも好き勝手コード弄れるような環境ばかりではない
まあ、VBAではあまりないだろうけど

332:デフォルトの名無しさん
20/09/19 18:41:22.13 HTxR1ogMM.net
>>326
お前の会社のレベルが低いだけだろ
まあそんな会社にしかいられない自分を省みたほうがいいなw

333:デフォルトの名無しさん
20/09/19 20:51:03.26 kGiNzl5D0.net
>>329
ふーん
そっちの会社ではそういうの見つけたら
調べないでチャチャっと直しちゃうのかー
よっぽど優秀なんだねー
俺みたいな無能にはとても怖くて出来ないやーw

334:デフォルトの名無しさん
20/09/19 21:40:33.28 b3MmLDI3M.net
>>326
お前以外にチャッチャッと直すなんて言ってる奴いないんだけどw
レベルの話は
> こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから
の部分な

335:デフォルトの名無しさん
20/09/19 22:13:23.39 TN+kKyJDd.net
>>325
いや、そうじゃなくて…
そうか、確かにVBAはそれでメシ食ってる奴は少ないから分からんかもしれんな。
ウォーターフォールでやってて、プロジェクトの目的が決まってるのに、いくら高速化しても余計なことすれば怒られるのが当然なんだよ。
それが原因で不具合が出てみろ。
大変なことになるんだから。
確かに、思いつきでどんどん改変してく仕事も結構やったことある。

336:デフォルトの名無しさん
20/09/19 22:16:29.20 TN+kKyJDd.net
>>327
開発全般によくある話として言ったまで。
cとかbとかの話に参加したわけじゃない。
動いてるなら、触らないというのはよくあることだ。

337:デフォルトの名無しさん
20/09/19 22:21:26.21 TN+kKyJDd.net
>>328
確かに少ないかもね。
考えてみれば俺も今の職場で初めて。
でも他言語じゃよく聞く話だよな。

338:デフォルトの名無しさん
20/09/19 22:26:15.60 cNAZP0Op0.net
>>333
話の流れが読めないバカということはよくわかった

339:デフォルトの名無しさん
20/09/19 22:48:23.19 RlUx9i/e0.net
どんなに簡単な修正でも、思い込みやミスは誰にでもある
うっかりエンバグする可能性があるから、先方から高速化などの要求がない限りは動いてる物を勝手に修正はしないのが基本かなあ

340:デフォルトの名無しさん
20/09/19 23:01:33.58 Q45ivJBB0.net
修正するか確認してからじゃないとしないな

341:デフォルトの名無しさん
20/09/20 01:28:31.38 Hljg9CcL0.net
>>332
それは逆だ、今のコードが悪いかのを直したせいで不具合がおきるのは直し方が悪いせい
自分できちんと直す能力もない奴が今のコードが悪いとか語るなよ

342:デフォルトの名無しさん
20/09/20 01:34:05.40 Hljg9CcL0.net
というのは言い過ぎなのかもしれんな、直せる自信がないなら直さないでいいんじゃね

343:デフォルトの名無しさん
20/09/20 01:38:55.36 Hljg9CcL0.net
俺から見れば細かい変更もできない人が重要な処理を変更する方が不具合が起きるだろって思うが

344:デフォルトの名無しさん
20/09/20 03:34:03.51 G6tFT8m8M.net
なんで動いてるものの話になってるのかわからんけど元々の話は
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
だから、修正ありきだろ
修正の手順はその組織で違うだろうけど

345:デフォルトの名無しさん
20/09/20 08:02:49.76 MxR9qqIJa.net
ここの会話見てると仕事してる時に戻ったみたいでイヤになる

346:デフォルトの名無しさん
20/09/20 08:29:09.75 lYpGB0SB0.net
技術的に可能(can)なのと
プロジェクトとして可能(may)なのはべつだって言ってるんだが
VBA使いを悪く言う気はないが
まともなプロジェクトでやってないから理解できないんだろうな

347:デフォルトの名無しさん
20/09/20 09:11:52.63 jB/qzKKfa.net
内製なら結構気軽に弄るもんだよ
俺は以前はSIにいて今は自社サービス兼社内SEだから両方の立場がわかるけど、
システムって君のような外の人が思ってるほど重要なものでも神聖なものでもない

348:デフォルトの名無しさん
20/09/20 09:13:39.89 WRa/xy2u0.net
だれも技術的に可能かどうかなんて言ってないのに意味不明なことを言い出してて笑う

349:デフォルトの名無しさん
20/09/20 10:58:42.70 uHe9qv/N0.net
企業や仕事がどういうものかを理解していない馬鹿ばっかりで草

350:デフォルトの名無しさん
20/09/20 11:39:55.26 bN/HvUsh0.net
内製でも気軽に弄らないなぁ

351:デフォルトの名無しさん
20/09/20 12:04:24.67 WRa/xy2u0.net
自分とか周りの数人しか使わないとかならリファクタリングで弄るケースもあるし全社レベルのシステムとかなら影響調査からってケースもあるわな
そのプログラムがおかしくなった時の影響度とかも関係するし
要はケースバイケース

352:デフォルトの名無しさん
20/09/20 16:05:38.71 Q2tD94P+d.net
>>338
>>339
先のAccessの話なら直せる自信ならある。
というか、ここにいる奴で俺が出来ないんだったら出来る奴はいないと思うぜ。
それぐらい自信ならある。
ただし、まとも奴なら誰でも言うがバグを出さない自信は無い。

353:デフォルトの名無しさん
20/09/20 16:13:52.61 WRa/xy2u0.net
ふと、
日本人のできません
韓国人のできます
中国人のできました
を信用しちゃダメ
って言うのを思い出した… w

354:デフォルトの名無しさん
20/09/20 16:52:11.86 qZo3Wq6A0.net
>>348
だよな、さすがに自分とか周りの数人しか使わないとかなら
時間見て許可取ってリファクタリングするわ
自分が作ったツールやシステムなら空き時間見て少しづつリファクタリングだな
さすがに全社レベルのシステムで勝手にリファクタリングはないな
そもそも許可取るのが大変

355:デフォルトの名無しさん
20/09/20 20:23:41.76 r+WJtgDsM.net
VBAの後継言語がExcelに標準搭載されると知識も勉強時間も無駄になる
と考えてしまいVBAの学習が捗らないのですが、どうしたらよいでしょうか

356:デフォルトの名無しさん
20/09/20 20:29:51.63 w1btmlsr0.net
開発する能力と言語の習熟は別と考えた方がいいと思うよ
弘法筆を選ばずって言うし

357:デフォルトの名無しさん
20/09/20 20:39:12.03 Q2tD94P+d.net
>>352
そんな風に考えたことは無いなあ。
その時に必要だから覚えるんだよ。

358:デフォルトの名無しさん
20/09/20 20:46:14.34 IR23Mwdta.net
VBAなんて勉強するもんじゃなくて使っていくうちにわかるもんだし

359:デフォルトの名無しさん
20/09/20 20:55:59.15 6QmidxOBa.net
セルの中身が
--------------------------
あああ325gsdsが|
aaaojgwe |
33333 |
|
いいksが |
bbb93502g |
^^^^^^^ |
|
|
888っふぁふぁ |
aaawopfjw |
f-bgんlsgさ |
-------------------------|
のような感じの際、「あああ325gsdsが」や「aaaojgwe」のように1行づつ取得する方法はあるでしょうか?

360:デフォルトの名無しさん
20/09/20 21:02:07.06 bN/HvUsh0.net
vblfで分割

361:デフォルトの名無しさん
20/09/20 21:04:12.62 w1btmlsr0.net
セル内の改行コードはCRとLFとCRLFがあるのでどれかに統一して
統一した改行コードでsplitすれば

362:デフォルトの名無しさん
20/09/20 21:09:38.60 ce1O3kmIH.net
VBAやっててもオブジェクト指向が全然身につかないんだけどどうしよう

363:デフォルトの名無しさん
20/09/20 21:30:48.40 Q2tD94P+d.net
>>358
セル内の改行はLFだよ。
キーボード入力ならの話だけど。

364:デフォルトの名無しさん
20/09/20 21:31:49.13 Q2tD94P+d.net
>>359
VBAとは別にオブジェクト志向に親和性のある言語勉強すれば?
それがVBAにも役に立つよ。

365:デフォルトの名無しさん
20/09/20 21:35:54.17 w1btmlsr0.net
>>360
よそからコピペしたりするとLF以外も混じるよ
念のため統一する方が安心

366:デフォルトの名無しさん
20/09/20 22:02:19.77 BARJaSzG0.net
>>359
オブジェクト指向を身につけるためにVBAをやっているのか?

367:デフォルトの名無しさん
20/09/20 22:16:21.98 ce1O3kmIH.net
>>361
>>363
フローチャートは書けても
オブジェクト指向というものがあるということがなんとなく判っていても
じゃあオブジェクト指向できっちり設計しようという発想が浮かばないというかまだ怖さがあるんだよね
MVCって言葉もネットサーフィンをして先週巡り合ったくらいの素人だから
とりあえず新たな設計手法を試そうと思っても
何に手をつければいいかわからん

368:デフォルトの名無しさん
20/09/20 22:48:07.21 lUm0Ft460.net
=EVALUATE()を使ったらマクロだよって保存するときに言われた。
見た目関数なのに実はマクロっていうものが他にどんなのがあるか知りたいんだけど、こういうのなんて言うの?
検索ワードが思い付かないんだけど知ってたら教えて。

369:デフォルトの名無しさん
20/09/20 22:53:39.67 Q2tD94P+d.net
>>364
いや、VBAはあまりオブジェクト志向とは親和性がないんだよ。
VBAそのものの根幹はオブジェクトそのものを扱うし親和性も有るんだけど、それで何かを作る時には俺はあまりオブジェクト志向で作らないな。
それでも、感覚的にピッタリ来るときもある。
そういう感覚の為にも他言語の経験が役に立つ。
でも、VBAでオブジェクト志向って上級者じゃないとピッタリ来ないんじゃないかな。

370:デフォルトの名無しさん
20/09/20 23:22:55.87 szIFBvS40.net
>>365
Excel 4.0 マクロ

371:デフォルトの名無しさん
20/09/20 23:26:29.37 lUm0Ft460.net
>>367
さんきゅー

372:デフォルトの名無しさん
20/09/20 23:28:59.95 bN/HvUsh0.net
>>358
crでセル内改行はしない

373:デフォルトの名無しさん
20/09/20 23:29:16.08 pX+ICxi/0.net
フレームワークどうするよ

374:デフォルトの名無しさん
20/09/20 23:30:38.40 szIFBvS40.net
そもそもVBAが古いMS-BASICの言語仕様をほとんどそのまま踏襲してるもんだからオブジェクト指向との親和性はあんまり高くない
まだVB.netの方が色々やりやすい

375:デフォルトの名無しさん
20/09/20 23:38:32.30 wTyEOUZY0.net
>>369
セルをアクティブにするとCRでも改行するらしいよ
自分はそういうよくわからない挙動に振り回されたく無いから変換するよ

376:デフォルトの名無しさん
20/09/20 23:40:59.31 XhiE7Cxv0.net
>>372
らしいよ

377:デフォルトの名無しさん
20/09/20 23:44:11.30 wTyEOUZY0.net
LFとCRLFが混在するのは確かめたよ
なので片方に寄せてる
CRも混ざる可能性はあるのでついでに処理してるよ

378:デフォルトの名無しさん
20/09/20 23:47:19.77 GTzW+qv5H.net
>>366
なるほどそうなんですね
別言語で勉強してみます

379:デフォルトの名無しさん
20/09/20 23:51:14.87 bN/HvUsh0.net
セル内で改行するとlfが入る
テキストファイルとかでcrlfで改行されたものをセルにコピペすればcrlfがそのまま貼り付けられるが、lf部分が改行されるだけでcrは無視される

380:デフォルトの名無しさん
20/09/21 23:04:27.19 lAfdaJg/0.net
もともとマック用のソフトウェアだから、改行コードが揃っていないんだ。

381:デフォルトの名無しさん
20/09/22 09:46:47.28 9vuxubOza.net
で、そのままの仕様で残すんだろ

382:デフォルトの名無しさん
20/09/22 09:47:44.43 9vuxubOza.net
変に直すと他で問題が起きるかもしれんし

383:デフォルトの名無しさん
20/09/23 18:03:19.32 a1crOWFAM.net
今開いてるエクセル3つを左右で3分割させるマクロとかありますか?

384:デフォルトの名無しさん
20/09/23 18:23:33.24 18wwGwYm0.net
表示→整列じゃだめなのか?

385:デフォルトの名無しさん
20/09/23 19:23:23.78 nN1KQy3b0.net
あるけど、マクロっていうかWindowsAPIで画面サイズ調整だろうな。
3画面用意する方が楽かも。

386:デフォルトの名無しさん
20/09/23 20:26:43.04 kiC/kEHG0.net
Windows.Arrange ArrangeStyle:=xlVertical

387:デフォルトの名無しさん
20/09/23 20:34:38.55 Dfniq8Ns0.net
>>381
ありがとう
>>383
本当にありがとう
馬鹿すぎる質問して親切に教えてくれて本当に感謝
教えてくれたコードの方を頂きます
3画面揃ったときについでに分割させたら良い動きしてくれました
めちゃくちゃ後付けですみませんが
これを一番右でこいつは真ん中とか
任意の配置は流石に無理ですか?
出来そうなら自分でも何とか調べてみます

388:デフォルトの名無しさん
20/09/23 21:30:49.65 kiC/kEHG0.net
>>384
できる

389:デフォルトの名無しさん
20/09/23 22:06:19.89 gKXTj3UI0.net
こういう馬鹿の特徴は、少し教えるとつけあがって自分で考えることもせずあれもこれもとねだること
少しは頭を使えよ

390:デフォルトの名無しさん
20/09/23 22:26:51.67 uvIhcfbN0.net
特徴っていうかこれいつもの人

391:デフォルトの名無しさん
20/09/25 20:09:48.08 48EvNsnc0.net
accdb   → 問題なく型指定出来る。
csv    → schema.iniで型指定出来る。
自シート → どうすんの? IMEX=1も利いたり効かなかったりで当てにならん。

392:デフォルトの名無しさん
20/09/25 21:07:06.86 1nrszLVg0.net
そういう報告はいらないです

393:デフォルトの名無しさん
20/09/25 21:36:41.69 WSuN06d1F.net
罫線の所属するセルについて質問です
セルの値を条件にして罫線の種類を変えようと考えているのですが、
隣合うセルの境界線はどちらのセルの罫線が優先されて表示されるのでしょうか?
よろしくお願いします

394:デフォルトの名無しさん
20/09/25 22:18:01.90 JBJKUwWVM.net
>>390
実験して報告よろしく

395:デフォルトの名無しさん
20/09/25 22:34:46.55 48EvNsnc0.net
後から指定した方だな。
思いっきり拡大すれば、線が2本引いてあるのが見えるのかと思ったが、そんなことはなかった。
ちなみに、ストIIで2人同時に投げ技をかけた場合、どちらが優先されるのかはランダムで50%/50%らしい。

396:デフォルトの名無しさん
20/09/25 23:34:29.90 3gugGrYy0.net
>>390
これ、たしか罫線の種類で、基本ごっつい順に優先順位があったはず
ついでに、セルの書式設定で罫線設定すると、隣のセルの罫線設定も消えたり変わったりする

397:デフォルトの名無しさん
20/09/26 11:57:49.22 aYgi9d/P0.net
太いほうだった(Excelばーじょん2016)
URLリンク(i.imgur.com)
印刷境界とかは分けて認識されてるから、なんだかんだ自分のコードを検証したほうがいいな

398:デフォルトの名無しさん
20/09/26 13:23:27.50 aYgi9d/P0.net
あ、宣言とかしときながらシート指定するん忘れてやがる

399:デフォルトの名無しさん
20/09/26 19:01:46.19 J5kcfwi60.net
ワラタ

400:デフォルトの名無しさん
20/09/26 20:07:30.98 wDXyaCpN0.net
getElementBy飽きたんだけど、RPA的制御じゃなくて、htttp通信を駆使してどうにかする、みたいのない?
APIとか使えない古いシステムに対して。

401:デフォルトの名無しさん
20/09/27 07:29:13.82 KJpIeh7z0.net
htttp通信がわからんがセキュリティー的に問題起きるんじゃね

402:デフォルトの名無しさん
20/09/27 15:17:02.78 a7rnW+2W0.net
htttpは、ハイパー・トンマ・トンチンカン・タコ・( ´,_ゝ`)プッの略かな

403:デフォルトの名無しさん
20/09/27 15:27:50.06 o5RjmHqkd.net
>>397
アセンブラやりたいってこと?
というのと同じ話。
InternetExplorer.Applicationじゃ無くてもみんなgetElementBy使う。
こういう便利なものを放棄するならhtmlのソースを自前テキスト処理で頑張るしかないと思うが。
普通はmsxml2.xmlhttpとかでソース取得して、それをDocumentに入れてgetElemetsByだな。

404:デフォルトの名無しさん
20/09/27 17:34:22.53 V5qiYsAI0.net
>>397
その辺は自作ライブラリでビブラートに包めばOK

405:デフォルトの名無しさん
20/09/27 18:37:04.65 ZqjiPey8M.net
>>401
> >>397
> その辺は自作ライブラリでビブラートに包めばOK
震わせてどうすんのさ。オブラートだろって釣られた

406:デフォルトの名無しさん
20/09/27 18:40:59.82 6iq7bspN0.net
>>400
マジか!
xmlがどうとか、APIがないとダメなんだと思ってたわ。

407:デフォルトの名無しさん
20/09/27 18:44:20.59 6iq7bspN0.net
ん?
それだと、逆に何のためにGUI操作(IE制御)の方法があるの?
初心者用?

408:デフォルトの名無しさん
20/09/28 07:43:08.08 VRZutR0gd.net
>>403
勘違いしてる。
別のAPI使ってるということだ。
で、別のAPIにもgetElemetByが出てくると言ってる。

409:デフォルトの名無しさん
20/09/28 13:09:33.23 LAwWa5+y0.net
RPA的制御がなにかよくわからんが
getElementしたくなかったら、API利用してxml取得しろみたいな話を言われたんじゃないか
それでAPI使えないけどgetElementしない方法ないの?と
取得できるものがhtmlなら、すなおにgetElementしとけ 以上
ちなみにxmlだろうとhtmlだろうとcsvだろうと、それは多くの場合httpで取得してるだろうがな

410:デフォルトの名無しさん
20/09/28 15:51:42.57 m7hqrCGdM.net
>>402
オブラートに包んでもおかしくないか
普通ラップするとかカプセル化するとか言うんじゃ・・・
>>404
どれもhttp通信でデータを取得できる共通点があるだけで、目的はそれぞれ違う
IEクラスはブラウザを操作する為のコンポーネントの一部
mshttpクラスはIEがスクリプトでhttp通信をするためのコンポーネントの一部
WinHttpRequestクラスはWindowsがhttp通信をするためのコンポーネントの一部
(コンポーネントっていうのはプログラムの部品として使うのが想定されている小さいプログラムのこと)
それぞれ色んなシステムで使えるようにCOMインターフェースっていう取説のようなものが実装されていて、VBAはそのおかげで間借り出来てるだけ
どれもVBAの為だけに作ったプログラムではない
ちなみにIEクラスの利点として、ブラウザ上でjsが実行されているページにアクセスすることができる点がある

411:デフォルトの名無しさん
20/09/28 16:26:17.24 gMLgNw+wd.net
それをVBAでやる意味は何?
もっと他に簡単に出来る言語でやれは?

412:デフォルトの名無しさん
20/09/28 16:37:22.01 oE/worxcM.net
結果をexcelで扱うならVBAが最適では?

413:デフォルトの名無しさん
20/09/28 18:37:13.13 jqaTJ4CpM.net
CSVで吐いてExcelで開くだけだろう

414:デフォルトの名無しさん
20/09/28 19:21:37.82 JyFvX52s0.net
あーい
あーい
ああああーい

415:デフォルトの名無しさん
20/09/28 21:25:16.14 d76PIxro0.net
質問させていただきます
ユーザーフォームのテキストボックスにフォーカスがあたってる(入力状態)でwindowsのデスクトップがアクティブもしくは他アプリケーションがアクティブを検知することはできますでしょうか?
タッチパネルなどでユーザーフォーム外をタッチしてしまった時を検出したいです。
できるのであればご教授願いたい…

416:デフォルトの名無しさん
20/09/29 00:06:40.59 bEee4vhd0.net
Windowオブジェクトにどんなプロパティがあるんだっけ

417:デフォルトの名無しさん
20/09/29 00:29:27.68 zU8eGPuC0.net
フォームのdeactivateイベント拾ってテキストボックスのフォーカス状態見て処理するとかどうかな

418:デフォルトの名無しさん
20/09/29 00:32:40.28 zjqvAHva0.net
deactivateは用途が違う

419:デフォルトの名無しさん
20/09/29 00:49:54.82 Iz7+ZlTk0.net
HTML, XML, CSV などのスクレイピングなら、
Ruby で、Nokogiri, Selenium Webdriver などが簡単
curl, wget でも、ファイルをダウンロードできるし
Rubyで、nokogiri, curl を使った例
require 'nokogiri'
html = `curl URLリンク(www.example.com)
doc = Nokogiri::HTML( html )
elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain

420:デフォルトの名無しさん
20/09/29 06:58:50.11 iE38wEdU0.net
外部プロセスの起動、待機、出力の取り込みまで実装してくださいよ

421:デフォルトの名無しさん
20/09/29 09:56:21.75 UZS7qkIf0.net
Rubyの自動運転は使いやすかったけど
早々にサポート切られたから印象悪い

422:デフォルトの名無しさん
20/09/29 11:55:53.23 NIgnBYPca.net
>>413
調べて見ましたがそれっぽいものは発見できませんでした…
>>414
>>415さんのおっしゃる通りブックやユーザーフォームのDeactivateイベントでは機能しませんでした。

423:デフォルトの名無しさん
20/09/29 23:34:39.45 Rcn+G4xKd.net
VBAでやる意味?
VBA以外だとアホな操作が必要だぞ。
1.Excelを閉じる。
2.他言語で実行。
3.csvをExcelで開く。
全くアホらしい。
運用についての考え方がまるで違う。
他言語でやる場合ってのはバッチ処理なのか?
それしか無いのか?
そういうブツ切りでデータ加工していくというなら寧ろExcelなんぞ使わん。

424:デフォルトの名無しさん
20/09/30 00:00:14.29 BPaZHsLq0.net
>>407
jsしたかったらIEするしかないのね。
今時のHPほぼ全滅じゃん。

425:デフォルトの名無しさん
20/09/30 00:36:25.50 5bnpK3a00.net
>>419
WINAPIでポーリング
URLリンク(i.imgur.com)

426:デフォルトの名無しさん
20/09/30 06:50:20.08 RkFeWfqX0.net
イルカのカイル

427:デフォルトの名無しさん
20/09/30 16:18:36.41 7F4wikGt0.net
>>419
そのマルチタスク、マルチウィンドウを否定したい理由は何なの?

428:デフォルトの名無しさん
20/09/30 16:57:41.88 QOxpj5qw0.net
>>424
フォームのテキストボックスに機器の計測値が入るようになっており
テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れないのでおじーちゃんたちにも気づくようにフォーカスが離れた時に警告ユーザーフォームを出したいのです。他アプリケーションなどを立ち上げる事も想定されます。
>>422
情報ありがとうございます
画像の通りやってみましたがイルカさんは働いてくれませんでした…

429:デフォルトの名無しさん
20/09/30 20:43:21.94 2p9V72Q+M.net
>>425
アホとしか言えんわ
そもそも設計が間違えてる

430:デフォルトの名無しさん
20/09/30 21:46:10.98 d9KXZKY60.net
>>425
値を入れる部分を直せよ

431:デフォルトの名無しさん
20/09/30 22:51:09.04 wQcBlxXT0.net
RPAとか使ったらこんなおぞましいものができたりするのかな?
でも普通はExcelぐらいサポートしてるよな。。。

432:デフォルトの名無しさん
20/09/30 23:05:33.83 FnwBo45S0.net
むしろRPA向きの案件だと思う

433:デフォルトの名無しさん
20/10/01 01:07:42.33 lGabW6tFM.net
>>425
> フォームのテキストボックスに機器の計測値が入るようになっており
wの前にデータ取得しとるわなw
>テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れない
wそんな業務データを取りこぼすとか意味不明w
>のでおじーちゃんたちにも気づくように
wなんだ?老害か?w

434:デフォルトの名無しさん
20/10/01 01:18:01.34 eVzeZjSn0.net
意味がわからないなら黙ってればいいじゃない

435:デフォルトの名無しさん
20/10/01 07:38:17.90 v/kjpRq5M.net
業務用ツール作るのってホント大変よな……
使いたい人向けに配信するんじゃなくて、使わされる人に使ってもらうツールだからどんなに優しいUIにしても平気で想像を上回るイレギュラーな操作して動かなくなった!ポンコツめ!みたいなクレーム出してくる人もいるし
単純に新しい物を使いたくないからってワザとメチャクチャな操作したりもしてるんだろうけど
ツールを要求してくる上の人達は現状の環境で対応出来るようにしたいからExcelのマクロでどうにかしてよ!とか言ってくるし、VBAはなんでも出来る魔法のツールだと思ってるし
長々と愚痴ってスマンな
スレチだよな

436:デフォルトの名無しさん
20/10/01 07:49:06.10 H0TKMoBwd.net
Windowsの標準のユーザーインターフェイスを意識しないと、使いやすいと思ったものが結局つかいにくくなる。
フォーカスがあたってなくても計測値が取れるように作るという発想が無いのが厳しい。
そんなこと出来ないなら根本から違うユーザーインターフェイスを採用すべき。
こういう処理でユーザーに何かさせる必要は無い筈。

437:デフォルトの名無しさん
20/10/01 10:04:49.32 +ML6JMtp0.net
初心者がツール作るように言われたら大変なんだろうな、俺は大変だと思ったことないが

438:デフォルトの名無しさん
20/10/01 10:34:23.83 6DJ6J+GDM.net
タブレットでバーコードリーダーのキーボード入力モードでも使ってるんだろうなと想像
COMで操作できるライブラぐらい付いているだろうからそれ使えば解決

439:デフォルトの名無しさん
20/10/01 16:54:34.45 Ld5Ou2iR0.net
>>435
まさにおっしゃる通りで作業進捗をバーコードで管理するものを作りました。
次は工程内のチェックシートと計測値などのトレーサビリティです禿げそう
とりあえず計測器具も試用で借りてる段階なのでメーカーにライブラリの事聞いてみます…

440:デフォルトの名無しさん
20/10/01 17:12:49.41 W6bAQtLIM.net
>>431
知ってた

441:デフォルトの名無しさん
20/10/01 18:58:16.32 9Yax9dsI


442:a.net



443:デフォルトの名無しさん
20/10/01 21:36:53.69 dM4yb7Ap0.net
罫線で囲われてたり、色塗りされたりするセルをマウスでドラッグ移動した時移動した場所は何もなくるなるのを罫線のみを残す方法ってありませんか?
簡単に言うと罫線で作った表の形式を保持したい。

444:デフォルトの名無しさん
20/10/01 21:50:29.37 5ESnmk3DM.net
>>439
テンプレートを隠しシートに保存しておいて、
ボタン押下で書式をコピペしてくるってどう?

445:デフォルトの名無しさん
20/10/01 22:00:05.10 gLHdGUpR0.net
>>439
切り貼りじゃなくてコピーアンドペーストした後に元のところの数式と値をクリア(右クリック+N)すればよいのでは

446:デフォルトの名無しさん
20/10/01 23:26:28.37 ywfP0KwV0.net
changeイベントで常に罫線引くことしか思いつかん

447:デフォルトの名無しさん
20/10/01 23:48:07.63 2OGRwJxy0.net
移動できないようにする

448:デフォルトの名無しさん
20/10/02 01:42:30.77 MWdBgx4Q0.net
セルをマウスでドラッグって何だよ?
エクセルで将棋でもやるの?

449:デフォルトの名無しさん
20/10/02 01:43:49.39 ChxT/cO/0.net
>>425
それExcel VBAでやるものではない。
自分のやりたいようにやりたければ、Windows SDKでの開発をしてください。

450:デフォルトの名無しさん
20/10/02 01:49:29.59 ChxT/cO/0.net
>>439
そもそも手順というものを考えた方がいい。
移動する前の情報を移動先には持ってくるが、移動元にはその情報を適用しないのはなぜ?

451:デフォルトの名無しさん
20/10/02 10:09:18.16 A7BNHAQE0.net
指定したフォルダ内の全てのCVSファイルを配列に追記していき対のですが、コードを教えてください
配列の0列目(1次元目)にはそれぞれのCSVファイルのファイル名をいれたいです。
Sub Sptyou()
Dim FolderPath As String, buf As String, TargetDate As String
'■フォルダを指定する
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
FolderPath = .SelectedItems(1)
End With
'■指定されたフォルダ内の全てのCSVファイルを開いて、そのファイルA列からGH列を配列に入れていく
ReDim BiforeArraybar(1, 190) As Variant

452:447
20/10/02 10:09:56.74 A7BNHAQE0.net
つづき
buf = Dir(FolderPath & "*.csv")
Do While buf <> ""
Open buf For Input As #1 'インプットモードでファイルを開く
Line Input #1, TargetDate
Do Until EOF(1) 'ファイルの終点まで
Line Input #1, Tardt '開いたファイルを上から順に読み込んでいき、変数TargetDateに代入していく
If Split(TargetDate, ",")(1) = "" Then Exit Do
'配列に追記する
ReDim Preserve BiforeArray(Ubound(BiforeArray) + 1 To ??, 1 To 190) = Sprit(TargetDate,",")
Loop
Close #1
buf = Dir()
Loop
End Sub

453:デフォルトの名無しさん
20/10/02 10:42:45.10 cHoSzh9XM.net
ReDim Preserveで操作可能なのは最右端の次元だけだから2次元配列で1次元目に使いたいなら一旦反転させた状態で操作して出力時にWorksheetfunction.transpose使って吐き出す必要があるぞ
いまいち最終目的が分からなかったから取り合えず読んでて気になった所だけ

454:デフォルトの名無しさん
20/10/02 10:56:02.65 ooD45Zz30.net
Linux のcat なら、複数のファイルを連結できるけど

455:デフォルトの名無しさん
20/10/02 12:25:22.61 XdHW2/g2M.net
win dosならcopyで連結できるけど

456:デフォルトの名無しさん
20/10/02 12:29:54.55 a296oIK60.net
>>448
内側のLoop内で Tardt ってのが気になった

457:447
20/10/02 13:32:21.66 A7BNHAQE0.net
>>449
右端にファイル名を入れるにはどうしたらいいですか?
それと、配列のUpperをどう設定したらいいですか?

458:デフォルトの名無しさん
20/10/02 15:56:01.43 7/1+1goB0.net
また馬鹿な質問者か。それともいつもの厚かましい馬鹿か?

459:デフォルトの名無しさん
20/10/02 16:13:26.37 XdHW2/g2M.net
右端の次元と右端の列では話の次元が違うけどわざとやってんのかなー?
excelなんだからとりあえずシートに格納すればいいと思うんだけどなー
配列に1行づつ追加するよりはやいんじゃね?
VBは動的配列無いんだからパフォーマンス出すには頭を使わにゃいかんよ
行数をキーにしたDictionaryもいいかもね

460:デフォルトの名無しさん
20/10/02 16:51:14.94 p6rjz1Jr0.net
>>453
配列のUpperが何を意味してるのかいまいち分からんがこんな感じで良いんか?
Line Input #1, TargetDate
BeforeArray(0, Ubound(BeforeArray, 2)) = ファイル名
For文[1~190](BeforeArrayにSplit(TargetDate, ″,″)を放り込む)
ReDim Preserve BeforeArray(0 to 190, Ubound(BeforeArray, 2)+1)
Do Until EOF(1)
Line Input #1, TargetDate
For文[1~190](BeforeArrayにSplit(TargetDate, ″,″)を放り込む)
ReDim Preserve BeforeArray(0 to 190, Ubound(BeforeArray, 2)+1)
Loop

461:デフォルトの名無しさん
20/10/02 18:32:48.78 a296oIK60.net
>>453
こういうことじゃないのか
targetdata = buf & "," & targetdata

462:デフォルトの名無しさん
20/10/02 22:17:00.26 MWdBgx4Q0.net
>>455
サイドブレーキを使う坂道発進をダサイと感じるようなもので、
どう考えてもシート格納が合理的なのに、無理して配列を使うわけですよ。

463:デフォルトの名無しさん
20/10/02 23:43:54.67 ooD45Zz30.net
CSV の規格では、各要素をクォート文字で囲めば、
各要素中に、列区切り文字も入れられる
"a,b", x
Ruby などのCSVライブラリを使わず、
自力で、列区切り文字で分割すると、バグるだけ
CSVの規格を知らない香具師が、よくやってる

464:デフォルトの名無しさん
20/10/03 00:18:46.98 DSTQ9BDR0.net
csvに規格ってあったんだ

465:デフォルトの名無しさん
20/10/03 07:11:14.79 umHauNXS0.net
ExcelでCSVをダブルクリックで開いて編集、上書きして事故る人が多いね

466:デフォルトの名無しさん
20/10/03 07:17:22.78 NCQ7EVNV0.net
>>460
一応あるけど結局Excelで読めないとダメって言うケースが大多数だったりする
URLリンク(www.kasai.fm)

467:デフォルトの名無しさん
20/10/03 08:43:50.77 2jz2H7gQ0.net
そのRFCって、たくさんあるローカルルールの1つを紹介してるだけだよな
強制力もなさそうだし、現時点ではあんまり意味がなさそう

468:デフォルトの名無しさん
20/10/03 11:51:59.59 ylT9+9xh0.net
>>459
マイクロソフトの製品はそれに沿っているものがあるが、クォーテーションがついたり、つかなかったりするのは、人間にとってもタチが悪く、完全に失敗した仕様と結論が出ている。

469:459
20/10/03 13:01:37.98 /wA+nWqo0.net
列区切り文字は、必要なければ省略できる
つまり、x も、"x" も同じ。
全ての要素に、付けてもよい
ただし、"a,b" みたいに要素内に、
行区切り文字・列区切り文字・クォート文字を含む場合は、省略できない

470:459
20/10/03 13:03:38.87 /wA+nWqo0.net
>>465
修正
>列区切り文字は、必要なければ省略できる
クォート文字は、必要なければ省略できる

471:デフォルトの名無しさん
20/10/03 13:04:25.84 DSTQ9BDR0.net
できないって言われましても強制力無いですし

472:デフォルトの名無しさん
20/10/03 13:34:48.02 zZGrTJee0.net
まあそもそも多数の実装が出てからそれ集めて決めた仕様だからな

473:デフォルトの名無しさん
20/10/03 19:43:36.45 WrZNWJut0.net
そういやあれ何だろうな。
QueryTableだとセル内改行でずれるのに、
ADOだとずれないとか。

474:デフォルトの名無しさん
20/10/04 19:09:07.88 mqiPq7lq0.net
配列を戻す自作関数を呼び出し先Subから複数回実行して、配列を結合したい
んだけど、どうすればできますか? redim preserveとUBoundを使うのかも
しれないけど、いい感じにまとまったコードが書けない。
例えば、下の関数を、別のSubから2回実行させて、
「Ary(3) ※中身:path1,path2,path1,path2」
の結果を得たいです。
Function TestFunc()
Dim testPath(1)
testPath(0) = "path1"
testPath(1) = "path2"
'return
TestFunc = testPath
End Function

475:デフォルトの名無しさん
20/10/04 19:09:08.25 mqiPq7lq0.net
配列を戻す自作関数を呼び出し先Subから複数回実行して、配列を結合したい
んだけど、どうすればできますか? redim preserveとUBoundを使うのかも
しれないけど、いい感じにまとまったコードが書けない。
例えば、下の関数を、別のSubから2回実行させて、
「Ary(3) ※中身:path1,path2,path1,path2」
の結果を得たいです。
Function TestFunc()
Dim testPath(1)
testPath(0) = "path1"
testPath(1) = "path2"
'return
TestFunc = testPath
End Function

476:デフォルトの名無しさん
20/10/04 19:09:56.24 mqiPq7lq0.net
連投すいません

477:デフォルトの名無しさん
20/10/04 19:15:03.93 l1LxtJm7d.net
注意
ID:mqiPq7lq0
いつもの馬鹿です

478:デフォルトの名無しさん
20/10/04 21:13:23.82 3bz1Ts/P0.net
>>471
検索したらいいんじゃね

479:デフォルトの名無しさん
20/10/04 21:42:10.14 NRUY+ZF00.net
>>471
例えとかいい感じとかじゃなくて正確にコードを提示してどの部分をどうしたいのか明確に説明した方がいいよ

480:デフォルトの名無しさん
20/10/04 21:43:28.32 hlbFeQNpd.net
後出し続けて全部作ってもらおうという魂胆の奴だぞ

481:デフォルトの名無しさん
20/10/05 01:21:09.51 Roj0MJiCr.net
VBAからIEを操作して、タグを指定して.valueやselctedで自動化しているのですが、ヤフオクの商品説明だけどうしても値の挿入ができません。
Tabや近い要素をフォーカスしたりクリックし、SendkeyなどでShift +Tabからエンダーなど試していますが、一向に解決できません。
直接でか無くてもカーソルが点滅させれれば、クリップボード経由で貼り付けるような仕様にしようと考えています。

482:デフォルトの名無しさん
20/10/05 07:08:41.25 z7kgQPv30.net
漏れは、Ruby, Selenium Webdriver で、ブラウザを自動操作して、
send_key で、ユーザー名・パスワードを自動入力して、ヤフーにログインしてる
require "selenium-webdriver"
options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大
driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 10 # default timeout
driver.navigate.to "URLリンク(login.yahoo.co.jp)
element = driver.find_element(:id => "username")
element.send_key "ユーザー名"
driver.find_element(:id => "btnNext").click
element = driver.find_element(:id => "passwd")
element.send_key "パスワード"
driver.find_element(:id => "btnSubmit").click

483:478
20/10/05 07:11:02.53 z7kgQPv30.net
そもそも、IE なんか動くのか?
漏れは、Chrome

484:デフォルトの名無しさん
20/10/05 12:57:11.88 BlyIycRMM.net
>>475
すみません。
Sub test
Dim i,ary()
For i = 1 to 2
ary = TestFunc ※ary配列の要素の最後に呼び出した配列を追加していきたい
Next
End

485:デフォルトの名無しさん
20/10/05 13:22:13.75 PJYbs+y10.net
配列に配列を追加するのを初心者がつくるなら
追加する2つの配列と結果を格納する配列の計3つを用意して順番に格納すればできないかな?

486:デフォルトの名無しさん
20/10/05 14:35:29.71 8f5Gi5TxM.net
>>480
いい加減にしろや糞が

487:デフォルトの名無しさん
20/10/05 14:54:20.99 3En1oQ3G0.net
>>471
redim preserveとUBoundを使うのかも
まあしかし、その処理ほんとに配列でやるのが良いのか検討したほうが良いんだが
VBAコレクション系弱いからなぁ

488:デフォルトの名無しさん
20/10/05 15:05:07.42 PJYbs+y10.net
検索すればすむのにね

489:デフォルトの名無しさん
20/10/05 17:50:38.43 BlyIycRMM.net
>>481
>>483
ありがとうございました。

490:デフォルトの名無しさん
20/10/05 17:58:27.13 FAPvswgpM.net
喧嘩腰だなあ
何しにきてんのさ

491:デフォルトの名無しさん
20/10/05 18:26:34.61 KW0b9HJla.net
くれくれ君だからしょうがないだろ

492:デフォルトの名無しさん
20/10/05 19:48:49.79 UUAqkjmTM.net
>>484
F1キー押す方が早くね?

493:デフォルトの名無しさん
20/10/05 19:51:04.71 0f3oInSL0.net
>>488
押すだけならワンキーだけど、オンラインヘルプはそこからが長い

494:デフォルトの名無しさん
20/10/06 10:31:57.17 9/35+5mY0.net
大人の対応でうまく誘導してやろうぜ

495:デフォルトの名無しさん
20/10/07 19:45:01.41 FTOZLATq0.net
下記のように特定の文字を削除して、改行をやめて1行文にしたいのですがコードのご教示いただけないでしょうか

やんやんつけ棒§
めちゃ美味い
ポテトチップス§
めちゃ美味い

やんやんつけ棒めちゃ美味い
ポテトチップスめちゃ美味い

496:デフォルトの名無しさん
20/10/07 20:04:32.74 7ZMz7DKjM.net
まともなテキストエディタ(VSCodeとかサクラエディタとか)で開いて正規表現置換で§¥r¥を空に置換すればよい

497:デフォルトの名無しさん
20/10/07 20:05:03.03 7ZMz7DKjM.net
訂正
§¥r¥n

498:デフォルトの名無しさん
20/10/07 20:27:15.03 FTOZLATq0.net
>>492
なるほど…めちゃ助かります。ありがとうございます。

499:デフォルトの名無しさん
20/10/07 21:05:04.00 8t5FIA980.net
もっと面白い質問しろよ

500:デフォルトの名無しさん
20/10/07 21:08:11.63 EPmDsevha.net
やんやんつけ棒って何?

501:デフォルトの名無しさん
20/10/07 21:08:37.26 FTOZLATq0.net
申し訳ありません、もう一点
A1:私は実は理学部出身
A2:の元々は地質学者です
A3:
A4:こうした南鳥島で
A5:
A6:レアアースの濃集が
A7:起こる
A8:
A9:というのは
A10:
A11:特徴的な層準に

A1:私は実は理学部出身
  の元々は地質学者です
A2:こうした南鳥島で
A3:レアアースの濃集が
  起こる
A4:というのは
A5:特徴的な層準に

下の行に文字列 → 2行の文章として、改行を入れてExcelの1マスにまとめる
下の行が空白 → 1行の文書なのでそのまま
これをなんとかVBAで自動化したいのですが記述を教示願えますでしょうか
面白くない質問ですみません…

502:デフォルトの名無しさん
20/10/07 21:11:26.09 JTTOzasI0.net
>>497
その条件2つそのままコードに直していけるよ

503:デフォルトの名無しさん
20/10/07 21:17:21.39 ueKkqa210.net
改行がLfなのかCrなのかCrLfなのか知らんが
Replace("改行入りの文字列", vbLf, "")

504:デフォルトの名無しさん
20/10/07 21:58:27.94 JTTOzasI0.net
>>499
そんなことしたら改行しなくなるが…

505:デフォルトの名無しさん
20/10/07 22:16:39.68 XaxSLEYL0.net
いつものクレクレ君かな

506:デフォルトの名無しさん
20/10/07 22:51:28.53 7uT04k8fM.net
・コードを要求
・追加で教えて
いつもの人だね

507:デフォルトの名無しさん
20/10/07 22:54:48.87 8t5FIA980.net
普通に書けばできることを聞く意味が分からん
もしかして書けないの?
書けないならやめればいいのに

508:デフォルトの名無しさん
20/10/07 22:56:25.93 Az9cGqg8M.net
>>498
>>499
ありがとうございますm(__)m

509:デフォルトの名無しさん
20/10/08 01:49:40.56 584FeZ4r0.net
>>497
VBAに慣れている人なら簡単に自動化というかVBAで組める内容ではある
問題はこの程度の内容を質問するより先に、自力でできるとこまで自分で
やらなかった最初の一歩が間違っているんだと思う

510:デフォルトの名無しさん
20/10/08 09:04:33.67 BqKPxLQJa.net
CSVとして保存
VSCode等のまともなエディタで開く
([^¥r]+)¥r¥n([^¥r]+)を”$1¥r¥n$2”に置換
¥r¥n¥r¥nを¥r¥nに置換
Excelにインポート
>>492同様にワンショットでいいならこんな感じでいけるんじゃね

511:デフォルトの名無しさん
20/10/08 14:32:22.56 584FeZ4r0.net
それができないのが初心者

512:デフォルトの名無しさん
20/10/08 15:37:32.47 d1cy1ieUM.net
クレクレ君のより煽ってる奴のがうざいんだけどね
VBAだけが人並にできるからこのスレにいつも欠かさず覗きにきてる感じか?
いつものお前が邪魔ですよお

513:デフォルトの名無しさん
20/10/08 15:59:16.76 btiqMG+Y0.net
>>508
大丈夫スルーしてるから
遠まわしでも構うと同列に

514:デフォルトの名無しさん
20/10/08 17:05:05.08 +6fedHspM.net
>>508
くれくれ君本人乙

515:デフォルトの名無しさん
20/10/08 19:30:11.76 bwT1M8vM0.net
>>507
できないことは問題じゃない
やろうとしないことが問題

516:デフォルトの名無しさん
20/10/08 19:55:49.61 YPYO8uSI0.net
たしかにやろうとしないことが問題
てのは御指摘のとおりですね。すみません。
映像制作を生業としてますが普段tipsを聞くのりで聞いてしまいました。

517:デフォルトの名無しさん
20/10/08 20:04:37.46 KjDVO4Tm0.net
>>512
5chなんて便所の落書きなんだからそれでいいと思う。
ただ、まともな返事を期待して馬鹿を見ても仕方ない場所でもあるけれど。

518:デフォルトの名無しさん
20/10/08 21:04:52.28 DcpygGCOd.net
ただでさえ印象悪いのにどうでもいい言い訳まで付けてさらに印象悪くするよくあるパターン

519:デフォルトの名無しさん
20/10/09 00:24:11.53 t8qEIjmh0.net
Dim dw As Date
Dim i As Integer
Sub test()
'ランダムに並び替える
Randomize
'乱数を入れる
For i = 1 To 200
Cells(i, 2) = Rnd()
Next i
'乱数で昇順並び替え
Range("A1:B200").Sort _
Key1:=Range("B1"), Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
'乱数を削除
Range("B1:B200").Clear
dw = DateAdd("S", 5, Now)
Application.OnTime dw, "test"
End Sub

520:デフォルトの名無しさん
20/10/09 00:26:14.42 t8qEIjmh0.net
>>515
のdw = DateAdd("S", 5, Now)
Application.OnTime dw, "test"
を入れると、
「実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」
となってしまいます。
「マクロのセキュリティ」は「すべて有効」にしています。
どうすればいいでしょうか

521:デフォルトの名無しさん
20/10/09 00:56:17.14 8xBy2vBw0.net
>>516
そのプロシジャを標準モジュールに書く
CellsとかRangeとか、ちゃんとシート指定しといたほうが良いぞ

522:デフォルトの名無しさん
20/10/09 01:28:40.34 t8qEIjmh0.net
>>517
できました!
>CellsとかRangeとか、ちゃんとシート指定しといたほうが良いぞ
わかりました
ありがとうございました。

523:デフォルトの名無しさん
20/10/09 16:14:30.36 SmS5zjtB0.net
1,1,2,2,3,4,4,4,5,6

1-1,1-2,2-1,2-2,3,4-1,4-2,4-3,5,6
に変換したいのですが、どういうコード書けばよいのでしょうか?

524:デフォルトの名無しさん
20/10/09 16:19:59.95 5DciVe+j0.net
連想配列使ってカウントするか(0 to 対象の値のMax)の配列を用意して、Array(対象の値)にカウントするかが1番頭使わなくて済むかな?

525:デフォルトの名無しさん
20/10/09 16:55:39.01 9cfuJ5OLM.net
かなり前だけどこのスレで教わったアドバイスが今やってることでピンときた
タブ増やして進めてくより
userformをhideとshowで工程進めてくみたいにしたほうがいいわ
ありがとうかなり前に教えてくれた人!

526:デフォルトの名無しさん
20/10/09 17:52:44.19 OU1KT8YFa.net
>>519
fori=1 to 要素数(※要素数はカンマで区切られた数)
数字=数字 & “-” & i
next i
みたいな感じで
前の数字と違ったら数字をリセット
(iが1ならこの処理はしない)
要素がひとつなら処理せず次のiに

527:デフォルトの名無しさん
20/10/09 18:03:17.75 klvVBjUq0.net
next i って書く人嫌い

528:デフォルトの名無しさん
20/10/09 18:15:01.53 FzRk+nqKp.net
かなり前の話と言えば
昔Privateで書かれたプロパティを
外部から取得する方法を書いてた人がいたけど
あれどうやるんだったっけ

529:デフォルトの名無しさん
20/10/09 18:33:13.76 /2wG1kS20.net
内部から漏洩させるのが確実

530:デフォルトの名無しさん
20/10/09 18:36:07.52 /2wG1kS20.net
>>523
それ以前にまったく要望を満たしていない

531:デフォルトの名無しさん
20/10/09 21:13:45.01 hr48HmJ4d.net
>>517
俺はブックも必ず指定するけどね。

532:デフォルトの名無しさん
20/10/09 21:15:25.62 hr48HmJ4d.net
>>519
どうしたいのかもう少し言葉で説明してくれる?

533:デフォルトの名無しさん
20/10/09 21:41:09.60 KqgB0xuS0.net
>>519
普通にカウントアップして、1から2に、2から3に上がるときにカウンターリセット。

534:デフォルトの名無しさん
20/10/09 21:44:54.18 VcvC9Dp/0.net
1つしかなかった時に連番を付けない処理が一手間多くて面倒
データの先読みが必要になる

535:デフォルトの名無しさん
20/10/09 21:49:11.48 5R2Ih+qA0.net
出力タイミングを次の数字を見てからにすれば楽

536:デフォルトの名無しさん
20/10/09 21:49:18.81 2P2kQgrz0.net
1個でも複数でも変わらない
おかしな考え方してるんだろう

537:デフォルトの名無しさん
20/10/09 21:49:40.29 hWEYACMU0.net
>>528
1.処理速度
2.低コスト
3.低ステップ
4.読みやすさ
優先順位はとりあえずこんな感じで頼むわ

538:デフォルトの名無しさん
20/10/09 22:02:55.54 VcvC9Dp/0.net
次の数字を見るかどうかの所で配列の最後かどうかも判定する必要があって面倒
シンプルでうまい方法があるんなら言葉じゃなくてコードで答えてくれ

539:デフォルトの名無しさん
20/10/09 22:06:14.03 rNmj4HJx0.net
splitでカンマ区切りの配列化
instrで個数確認
かね?

540:デフォルトの名無しさん
20/10/09 22:07:17.45 rNmj4HJx0.net
>>534
Uboundで判定して抜ければいいじゃん

541:デフォルトの名無しさん
20/10/09 22:19:01.76 VcvC9Dp/0.net
>>536
ちゃんと動くコード書いてみて

542:デフォルトの名無しさん
20/10/09 22:24:25.52 VcvC9Dp/0.net
Sub Macro1()
  Dim a(), b()
  a = Array(1, 1, 2, 2, 3, 4, 4, 4, 5, 6)
  u = UBound(a)
  ReDim Preserve a(u + 1)
  ReDim b(u)
  a(u + 1) = a(u) + 1
  x = a(0) + 1
  For i = 0 To u
    If a(i) - x Then
      c = 1
    Else
      c = c + 1
    End If
    If c = 1 Then
      b(i) = a(i)
      If a(i) = a(i + 1) And u - i Then b(i) = b(i) & "-1"
    Else
      b(i) = a(i) & "-" & c
    End If
    x = a(i)
  Next
  Debug.Print Join(b, ",")
End Sub

543:デフォルトの名無しさん
20/10/09 22:47:08.38 VcvC9Dp/0.net
これよりシンプルにするのは俺には無理だった
Sub Macro1()
  Dim a$(), b()
  a = Split("1,1,2,2,3,4,4,4,5,6", ",")
  u = UBound(a)
  ReDim Preserve a(u + 1)
  ReDim b(u)
  a(u + 1) = a(u) + 1
  x = a(0) + 1
  For i = 0 To u
    b(i) = a(i)
    c = c + 1
    If a(i) - x Then c = 1
    If (c > 1) + (c = 1) * (a(i) = a(i + 1)) * (u - i) Then b(i) = b(i) & "-" & c
    x = a(i)
  Next
  Debug.Print Join(b, ",")
End Sub

544:デフォルトの名無しさん
20/10/09 23:08:21.94 VcvC9Dp/0.net
b(i) = b(i) & "-" & c

b(i) = b(i) & -c

545:デフォルトの名無しさん
20/10/09 23:19:19.22 760t1BpC0.net
プログラミングのお題スレにも、たまにあるけど


546:、 次の要素を先読みするのは面倒 スタックのpeek みたいに、要素を読み取るだけで、削除しない関数があればよい



547:デフォルトの名無しさん
20/10/10 06:22:18.37 BjcbKuib0.net
Ruby では、
# 一旦、整数の2次元配列にする。[[1, 1], [2, 2], [3], [4, 4, 4], [5], [6]]
result_ary = input_ary = "1,1,2,2,3,4,4,4,5,6".split( "," ).
chunk_while{ |prev, nxt| prev == nxt }.each_with_object( [ ] ) do |ary, acc| # 蓄積変数は配列
if ary.length == 1
acc.push( ary[ 0 ] )
else
ary.each_with_index do |num, idx|
acc.push( "#{ num }-#{ idx + 1 }" )
end
end
end
puts result_ary.to_a.join( "," ) # カンマ区切り

548:542
20/10/10 06:24:55.49 BjcbKuib0.net
>>542
修正
># 一旦、整数の2次元配列にする。[[1, 1], [2, 2], [3], [4, 4, 4], [5], [6]]
一旦、文字列の2次元配列にする

549:542
20/10/10 06:29:37.77 BjcbKuib0.net
>>542
修正
>result_ary = input_ary = "1,1,2,2,3,4,4,4,5,6".split( "," ).
result_ary = "1,1,2,2,3,4,4,4,5,6".split( "," ).

550:デフォルトの名無しさん
20/10/10 06:39:31.44 WLqCacU70.net
データの種類が少なければ連想配列

551:デフォルトの名無しさん
20/10/10 09:37:35.06 ejDp+I1j0.net
先読みって考えるから面倒なのでは?
後出しって考えればいいのでは?

552:デフォルトの名無しさん
20/10/10 09:43:21.90 VjEh1Ow80.net
てかあの程度の仕様なら自分で書けよって思う
あれぐらいで書けないってのは根本的にプログラミングの基礎分かってないでしょ
forとifで一度自分で書いてみろと

553:デフォルトの名無しさん
20/10/10 11:33:09.64 ZZ8h2+k60.net
書く気が無いからコードくれと言ってるんじゃないの

554:デフォルトの名無しさん
20/10/10 12:12:33.28 PwUkT7dUM.net
いつものあいつでしょ

555:デフォルトの名無しさん
20/10/10 14:51:13.18 l6OboMxr0.net
書けない奴「いつもあいつでしょ」

556:デフォルトの名無しさん
20/10/10 15:12:08.20 PwUkT7dUM.net
煽って自演のいつもの馬鹿

557:デフォルトの名無しさん
20/10/10 15:36:01.73 l6OboMxr0.net
おじさん「煽ってなんちゃら」

558:デフォルトの名無しさん
20/10/10 15:38:43.61 VaQE37nUM.net
バグってハニー

559:デフォルトの名無しさん
20/10/10 17:43:29.69 aEE68DdLM.net
いつものあいつ確定

560:542
20/10/10 22:30:05.80 BjcbKuib0.net
データベース変換などは、Ruby のEnumerable のメソッドを見て、
シェル芸とか、プログラミングのお題スレの問題を解いた方がよい
VBA は可読性が悪すぎて、作っても再利用できない。
OSS で全会社共通で、RubyのEnumerable 相当のメソッドを作って公開するべき!
他言語ではたいてい、Rubyと等価のメソッドを作る

561:542
20/10/10 22:31:31.39 BjcbKuib0.net
>>555
修正
>データベース変換などは
データ変換などは

562:デフォルトの名無しさん
20/10/11 00:52:32.73 l/QRoUUr0.net
>>555
布教活動ご苦労さん
必要になったら勝手にRubyスレに行くから
帰っていいよ

563:デフォルトの名無しさん
20/10/11 08:15:59.41 qzIChT2z0.net
>>555
データ変換てのは基本的な作法さえ知ってればEnumerableメソッド使わなくても特に困ることもないだろう
ただのループ構造をこねくり回してるだけでそのためにメソッドを割り当てるなんてお仕着せもいいところ

564:デフォルトの名無しさん
20/10/11 10:01:12.40 QZ/HZvxF0.net
>>557-558
なぜ相手するんだ…

565:デフォルトの名無しさん
20/10/11 12:29:43.68 lH9sVzvl0.net
Acrobatを使用したプログラムを複数回実行すると初回だけ成功し
2回目以降は
実行時エラー2147467259(80004005)
エラーを特定できません
となります(idに代入する行でエラー)
終了処理に不備があってacrobatのプロセスが残っているのではと思いましたが
色々なサイトを見ても解決がわからない状態です。
どうすれば治りますか。
プログラムは次のレスを参照ください。

566:デフォルトの名無しさん
20/10/11 12:30:03.99 lH9sVzvl0.net
Dim objAcroApp As New Acrobat.AcroApp
Dim objAcroAVDoc As New Acrobat.AcroAVDoc
Dim objAcroPDDoc As New Acrobat.AcroPDDoc
Dim id As Long
Dim js As Object
Dim SaveName As String
id = objAcroApp.Show
id = objAcroAVDoc.Open(FilePath, "")
Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
Set js = objAcroPDDoc.GetJSObject
SaveName = FolderPath & "\" & Replace(FileName, ".pdf", "")
'変換のうえテキストファイルとして保存
js.SaveAs SaveName & ".txt", "com.adobe.acrobat.plain-text"
'PDFファイルを変更無しで閉じる
id = objAcroAVDoc.Close(1)
'Acrobatアプリケーションを終了する。
id = objAcroApp.Hide
id = objAcroApp.Exit
Set js = Nothing
Set objAcroAVDoc = Nothing
Set objAcroApp = Nothing

567:デフォルトの名無しさん
20/10/11 18:37:51.01 7Qx+aWsY0.net
どこだか忘れたけど、閉じる・解放はこの順番じゃないとダメって書いてあるサイトがあったぞ。

568:デフォルトの名無しさん
20/10/11 20:12:54.59 WEczn1o20.net
オブジェクト型にNothingを代入しても、参照ポインタが書き換わるだけでメモリが解放されるわけじゃないんで、順序はそれほど重要じゃない

569:デフォルトの名無しさん
20/10/11 21:39:34.57 CPiGYYUg0.net
>>560
必ず再現するなら同じ現象が発生する最小のコードを作ってみ

570:デフォルトの名無しさん
20/10/11 23:29:10.26 gmCwGThW0.net
>>561
とりあえずDimでNewするのやめて様子見てみ

571:デフォルトの名無しさん
20/10/12 01:35:39.95 EUVfONAL0.net
どうやって再度、実行できているのか?
仕事ができない人がよく言う説明。

572:デフォルトの名無しさん
20/10/12 08:27:00.05 CsRHImZw0.net
>>560
タスクマネージャーを起動して、プロセスを終了させてから、実行すれば?

573:デフォルトの名無しさん
20/10/12 10:12:47.93 5eYbb8SbM.net
アクロバットがすぐに終了しないのは体感でも分かるレベル

574:デフォルトの名無しさん
20/10/12 18:47:34.51 EUVfONAL0.net
2回目以降から1回目に戻る手順くらい書けよ!

575:デフォルトの名無しさん
20/10/12 21:34:54.79 mxOFfEsA0.net
おもいついた
>>530
最後にsubstituteでまとめて消せばよくね?

576:デフォルトの名無しさん
20/10/12 23:43:56.93 k3Vmfe+e0.net
時間を戻そう

577:デフォルトの名無しさん
20/10/13 08:13:53.62 548t3foS0.net
>>561
objAcroAppにCloseメソッドがあってそれを実行していないとかいうオチだったりして

578:デフォルトの名無しさん
20/10/13 09:32:19.92 2dX+mfF30.net
>>572
普通の頭持ってたら
id = objAcroApp.Exit
がそれだと思うだろうに…

579:デフォルトの名無しさん
20/10/13 10:34:47.53 lK6RB09G0.net
「.CloseAllDocs」 ってメソッドもAcrobat.AcroAppにはあるらしいな
そしてExitだけじゃプロセスが残ることもあるらしい
まあAcrobatの環境ないから検証も何もできんけど、
安全取るならExitしたあとにプロセス監視してkillするしかないんじゃね
途中でエラー落ちしてもプロセスのこっちゃうらしいし
ちなみにどうでもいいが個人的にはExitとCloseは、意味的に異なると思う
だからExitとCloseが両方あってもおかしくないとは思う
でもExitがCloseを包括していても、それはそれでありだとも思う
Acrobat.AcroAppの公式ドキュメント見れてないからワイには答えが出せんわ

580:デフォルトの名無しさん
20/10/15 08:48:14.01 wrF56cyr0.net
>>560です
皆さん本当にありがとうございます。
みなさんのご意見をプログラムに反映した後、
ソースを最小(adobeをオープン・クローズするのみ)
にしてもエラーです・・・(次レス参照)
タスクマネージャには
adobe CEF helper、adobe update serviceがありますが
前者は消しても湧いてきているように見えます。
パソコン再起動してもダメ、日付が変わってもダメです。
しかし、エラーになったあとちょうど24時間経過すると
無事実行できるようになることがわかりました・・・
24時間後の数分前はエラーでしたが
数分後は無事実行できました。
ちょうど24時間で消えるプロセスが存在するんだと思いますが
何かご存知のかた居ましたらご教示ください・・・

581:デフォルトの名無しさん
20/10/15 08:49:26.67 wrF56cyr0.net
ソースを最小にするためところどころコメントアウトしてます
Dim objAcroApp As Acrobat.AcroApp
Dim objAcroAVDoc As Acrobat.AcroAVDoc
' Dim objAcroPDDoc As Acrobat.AcroPDDoc
Dim id As Long
' Dim js As Object
' Dim SaveName As String
Set objAcroApp = CreateObject( "AcroExch.App" )
Set objAcroAVDoc = CreateObject( "AcroExch.AVDoc" )
id = objAcroApp.Show
id = objAcroAVDoc.Open(FilePath, "")
' Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
' Set js = objAcroPDDoc.GetJSObject
' SaveName = FolderPath & "\" & Replace(FileName, ".pdf", "")
'変換のうえテキストファイルとして保存
' js.SaveAs SaveName & ".txt", "com.adobe.acrobat.plain-text"
'PDFファイルを変更無しで閉じる
id = objAcroAVDoc.Close(1)
'Acrobatアプリケーションを終了する。
id = objAcroApp.CloseAllDocs←どっかのサイトでobjAcroApp.Hideの前に入れてました
id = objAcroApp.Hide
id = objAcroApp.Exit
' Set js = Nothing
Set objAcroAVDoc = Nothing
Set objAcroApp = Nothing

582:デフォルトの名無しさん
20/10/15 09:20:24.96 7eWumHpU0.net
起動設定で、プロセスを殺すと、また再起動するアプリがある。
ウィルスチェックなどの、何かをチェックするアプリ
必ず、最低1つは起動しておくタイプのアプリ
そういうアプリは使わない方がよい。
何をチェックして、本社に送っているか、怪しい
会社に問い合わせて、再起動を止めるような設定を聞けば?

583:デフォルトの名無しさん
20/10/15 10:57:30.25 LAL4jdY0d.net
区分1~10のデータが記録されたcsvを区分ごとにExcelシート毎(シート名は1~10)に分割して読み込むvbaがどうしても出来ません…
ご教示いただけないでしょうか…

584:デフォルトの名無しさん
20/10/15 11:36:34.23 +kinuzul0.net
そんな説明でわかるわけがないので、
そこまで頑張って作ったコードとエラーメッセージを提示するのが最低限
そして、自分で何を試行したのかも説明すること

585:デフォルトの名無しさん
20/10/15 12:20:58.11 k/WlCRMPM.net
いつもの人

586:デフォルトの名無しさん
20/10/15 13:02:07.76 7eWumHpU0.net
Ruby なら、これで最初の列だけを、出力できる
require 'csv'
# CSV ファイルを、1行ずつ処理する
CSV.foreach( "a.csv" ) do |row|
puts row[ 0 ]
end

587:デフォルトの名無しさん
20/10/15 14:36:16.06 sVQ5bVjI0.net
>>581
C#スレで恥を晒したRuby荒らしは帰れよ

588:デフォルトの名無しさん
20/10/15 19:36:00.91 GQ796pt70.net
簡単かどうかなんてどうでもいい。
200万件のデータをADO+SQLより速く処理できるならRuby使ってやらなくもないが。
どうなんだい?
無理ならイラネ。

589:デフォルトの名無しさん
20/10/15 19:54:07.37 hF5+vxPB0.net
もう時代遅れなのはわかってるけど
会社が2019に更新してまだまだ使う気満々なので
そして配布が出来ないと困る

590:デフォルトの名無しさん
20/10/15 21:24:39.62 Dg+UC/FqM.net
>>583
ルビ糞基地外の味方をするつもりはないけど、DBがボトルネックならRubyだろうが何だろうが速さは変わらんよ

591:デフォルトの名無しさん
20/10/15 21:53:38.55 3DKNzMNt0.net
俺の解釈だとこんな感じ
Sub Macro1(Filename, Fieldname)
Set ws = Workbooks.Open(Filename).Sheets(1)
Set pvt = ws.PivotTableWizard(1, ws.UsedRange)
pvt.PivotFields(Fieldname).Orientation = 1
pvt.PivotFields(Fieldname).Orientation = 4
pvt.ColumnGrand = False
For Each r In pvt.DataBodyRange: r.ShowDetail = True: Next
End Sub

592:デフォルトの名無しさん
20/10/15 23:19:16.95 fOL5OZab0.net
>>562
はこのサイトかな
URLリンク(pdf-file.nnn2.com)

593:デフォルトの名無しさん
20/10/16 19:09:16.33 Hr39/iau0.net
>>587
多分それ。

594:デフォルトの名無しさん
20/10/16 19:55:23.45 rggqlWcj0.net
PDFファイルの件は、マクロの記録でやるとどうなるのか、確認すればいいんじゃないの?

595:デフォルトの名無しさん
20/10/16 21:55:06.26 Hr39/iau0.net
なあそれ、マクロの記録をするとどうなるか確認してから言ってるのか?

596:デフォルトの名無しさん
20/10/16 22:07:10.71 9Da+1I/Z0.net
モチのロンだぜ

597:デフォルトの名無しさん
20/10/16 22:24:45.68 tI22s9TB0.net
モロのチンだぜ

598:デフォルトの名無しさん
20/10/18 16:09:00.37 SMfw56kvd.net
>>533
そういうことじゃねえ。

599:デフォルトの名無しさん
20/10/21 23:21:44.77 w3Ug/D8p0.net
URLリンク(i.pinimg.com)

600:デフォルトの名無しさん
20/10/22 03:14:09.06 RxEiNjgnM.net
こまけぇこたぁ
    いいんだよ!!
  /)
 //)  __
`/ 二つ/⌒⌒\
| ニ⊃ (●)(●)\
/\ノ|⌒(_人_)⌒|
 / > ヽニノ <

601:デフォルトの名無しさん
20/10/22 08:49:00.24 8kbg1eIjd.net
まだVBAなんて使ってる人がいてビックリ
懐かしい言語だよね

602:デフォルトの名無しさん
20/10/22 09:02:14.12 OZW0tgCBM.net
Excel2000から20年なんて家電製品なら普通ですよ

603:デフォルトの名無しさん
20/10/22 12:37:02.60 QXcT5+jPM.net
Excel5.0からだよ
16ビットだよ

604:デフォルトの名無しさん
20/10/22 12:37:11.57 N0tQIHiYM.net
>>596
今現在Excel入ってりゃ必ず使えるのはVBAだけだから
まあ最近の言語に比べりゃ色々面倒な部分はあるけどちょっとしたツール程度ならなんとかなるぐらいの機能はあるし

605:デフォルトの名無しさん
20/10/22 17:17:13.81 8WoYrv7v0.net
A1に"2020/10/22"のように日付が入っています。
その日付が土曜日の場合、その月の何回目の土曜日かを調べるコードを教えてください。

606:デフォルトの名無しさん
20/10/22 17:41:32.24 V9nm7cr3M.net
嫌です

607:デフォルトの名無しさん
20/10/22 18:23:26.36 jxPHtPQlM.net
22÷7

608:デフォルトの名無しさん
20/10/22 18:50:04.05 lPQIKdWd0.net
>>600
その日付は木曜日です

609:デフォルトの名無しさん
20/10/22 18:56:20.17 CJ3HroyY0.net
int((日-1)/7+1)

610:デフォルトの名無しさん
20/10/22 19:08:32.49 XgRR6MjRa.net
days

611:デフォルトの名無しさん
20/10/22 20:00:05.75 Nlv/Qw7G0.net
>>596
ここでRuby教を広めようとしても無駄ですよ

612:
20/10/22 20:38:01.04 RiQFyYLuH.net
>>599
そうそう、それに win32api のほとんどを呼び出すことができるんですよね

613:600
20/10/22 20:54:38.55 EVMbdUMSM.net
〉〉604
ありがとうございます

614:デフォルトの名無しさん
20/10/22 21:21:26.60 hm8FUbN60.net
いつものあいつか

615:デフォルトの名無しさん
20/10/22 22:49:46.23 kity+iCG0.net
FileSystemObjectの参照設定
VBAの中でできないのかな?

616:デフォルトの名無しさん
20/10/23 00:04:14.15 1WodYwaj0.net
エディタの支援が不要ならCreateObjectでええやん

617:デフォルトの名無しさん
20/10/23 00:50:10.47 g9AT+l9rd.net
>>610
出来る。

618:デフォルトの名無しさん
20/10/23 01:26:42.51 ykqFrr6rM.net
>>610
出来ない

619:デフォルトの名無しさん
20/10/23 02:25:13.53 YKSIT3mga.net
>>610
出来まい

620:デフォルトの名無しさん
20/10/23 02:48:18.20 bmMgVHIId.net
競馬のオッズの取り込み教えて欲しい。

621:デフォルトの名無しさん
20/10/23 08:33:21.77 TKI7l+v40.net
複数のセルに纏めて背景色を付けたい場合についてです
指定のセルは離れているためRangeで範囲選択では済ませられないです
Unionを使用するのも手ではありますが動作速度に影響を及ぼすので最終手段としたいです
そこで背景色をつけるセルのAddressを取得して一次元配列に格納し
.Range(Join(Array, ",")).Interior.CoIor = CLng("&H00FAFAFA″)
で着色しようとしたのですが、どうもこの連結方法の場合、連結数が一定数を超えるとエラー停止してしまう様です
なので何か別のアプローチはないものかと模索している最中なのですがもしよろしければお知恵をお借りしたいです

622:デフォルトの名無しさん
20/10/23 08:37:04.87 WT7JJPgTa.net
自分で思いつかないようなテクニカルなやり方してもあとで読む人が大変だし普通に配列ループでいいじゃん

623:デフォルトの名無しさん
20/10/23 09:16:49.94 0vnMylCPM.net
VBAで済む事をわざわざ他言語でやる池沼よりマシ

624:デフォルトの名無しさん
20/10/23 10:42:10.63 9+IFx01J0.net
>>616
一定数を超えるとエラーになるってわかっているんだから一定数を超えないようにすればいいんじゃね

625:デフォルトの名無しさん
20/10/23 11:02:14.72 TKI7l+v40.net
>>619
不特定多数が使用する業務のスケジュール管理をするツールで、描写したスケジュール表を平日、土曜日、日曜祝日の3パターンで着色する必要があるんですけど、業務期間が長いとどうしても超えてしまう場合が発生するんですよね
業務期間に制限を設けるわけにもいかないですし
配列に格納してんだからループで一定数おきに着色ってのも考えたんですけどUnionより遅くなるっぽいんで最適化を諦めてUnionで繋げちゃうかーって思ってはいるんですが、その前にここで聞いてみて何かヒント貰えたらなーと

626:デフォルトの名無しさん
20/10/23 12:29:02.31 u/a/wHRt0.net
あまり編集をしないのであれば、条件付き書式で勝手に色がつくようにするとか

627:デフォルトの名無しさん
20/10/23 13:40:00.08 DQVFwAwV0.net
>>616
Join(Array, ",") ← こいつがエラー起こすって感じなの?
String 型は最大20億文字数らしいね
あるいは.Rangeが受け付けないのか
一応ググってみるとRangeの引数は255文字までというのが出て来る
これに引っかかってるんじゃねえの

628:デフォルトの名無しさん
20/10/23 13:51:36.68 DQVFwAwV0.net
>一次元配列に格納し
これでループ回したところで体感できるような速度差は出ないと思うがな
むしろRange内の文字列引数処理のほうが時間食われるんじゃないかと
Union・・・どんなもんだろねぇ

629:デフォルトの名無しさん
20/10/23 13:51:42.41 TKI7l+v40.net
>>622
なるほど
引数上限の255文字が原因っぽいですね
んー……そうするとやっぱり複数範囲をカンマ区切りでーは上限が発生しちゃいますよねぇ

630:デフォルトの名無しさん
20/10/23 14:36:51.59 ITa0Mrx5M.net
255件程度ならどんな方法でもさして時間変わらないのでは
screenupdating切れば一瞬で終わりそう

631:デフォルトの名無しさん
20/10/23 15:36:44.43 wfU4S4ZzM.net
数秒が待てないというのはイベント駆動でもさせる気なの?

632:デフォルトの名無しさん
20/10/23 15:48:23.96 BdUYZCjc0.net
エクセルでマリオカートを作ります

633:デフォルトの名無しさん
20/10/23 18:52:38.00 uwgUvjOA0.net
エクセルでねぇ・・。
実質DirectX頼りだろう。
セル書き換えじゃ60fps出ないし。

634:デフォルトの名無しさん
20/10/23 19:17:52.04 knErP7D20.net
255個ぐらいで数秒もかかるのはおかしい

635:デフォルトの名無しさん
20/10/23 19:24:37.35 9+IFx01J0.net
ヒントならもらったろうに、あとはどう実装するかは自力で試行錯誤やればいいんじゃね

636:デフォルトの名無しさん
20/10/23 19:38:40.04 TKI7l+v40.net
処理範囲的には
.Range(”M11:Q1011,T11:X1011,【中略】,CF11:CJ1011“).Interior.CoIor
ぐらいです
全体で1万弱程のステップがあって他ファイルの読込やグラフの生成、データファイルの出力等があり、全体の処理時間が10秒前後なので
この処理を軽くした所で焼け石に水なのは分かってはいるんですが、
オブジェクトの操作を極力減らして動作時間を軽減したいなぁと思っています
次の操作箇所を強調する為にRange(″M20,M20″).Selectみたいな操作を使ったので、これの応用で広域処理も行けるかなぁと思ったんですがダメみたいですね
お騒がせ致しました
お忙しい中ご意見等頂きありがとうございました

637:デフォルトの名無しさん
20/10/23 21:25:05.79 9+IFx01J0.net
問題に取り組む姿勢がおかしい

638:デフォルトの名無しさん
20/10/23 21:51:10.18 DQVFwAwV0.net
>>631
>他ファイルの読込
俺はこいつが異様に遅くて困ってる
100万個ほどのデータをCSVから読ませてるんだけど6世代i5で3分、セレロンだと10分とかかかる
Lineで1行ずつ読んでるせいなんだろうけどQueryだと早いんだろうなあと思いながら面倒で手を付けてなかった
これを機にやってみるかなぁ
実際相当早くなるもんかね?

639:デフォルトの名無しさん
20/10/23 22:37:29.74 jmwa0xlU0.net
何をやってるかにもよるがそもそも一度に全部読み込まなきゃいいんじゃね

640:デフォルトの名無しさん
20/10/23 23:22:27.59 /Kxbsbpt0.net
曜日の色付けなんてWEEKDAY関数と条件付き書式で良くないか?
曜日ごとに文字列記入するところはマクロにしてるけど

641:デフォルトの名無しさん
20/10/24 06:26:18.80 Uy2SF5SV0.net
>>634
>一度に全部読み込まなきゃ
そうやねぇ・・・
週ごとにデータを集計してんだけどいまんところ一括で読み込ませてる
常時PC立ち上がってる環境だから逐次データ吸い上げていけば一番いいんだけどそうなると小手先の変更じゃなくて大枠に手を加えなきゃなんなくなるのが頭痛いところ
てかこんなのエクセルでやらせんなよって話でもあるんだけどそうはいかない

642:デフォルトの名無しさん
20/10/24 08:29:55.58 Q0nf4D4p0.net
>>635
それでも良いんですけど、行ごとに工程の開始日と終了日を設定して工程の期間のセルは計画達成率ごとに緑、黄、橙、赤って着色する必要があり、その着色は開始日が平日なら土日祝日は着色しない、開始日が土日祝日なら期間中全てのセルを着色
とかやるんで条件書式でやるのかなり面倒なんですよね
ユーザーには進捗率をスケジュール表に記入させるんですけど今日以降の進捗率は入力があっても認識から外さなければならないって仕様もあったりするんで

643:デフォルトの名無しさん
20/10/24 10:23:24.93 EYzilKe/0.net
そのぐらいなら自分なら条件付き書式でやる

644:デフォルトの名無しさん
20/10/24 10:53:59.72 Fj5xdFDia.net
毎回全部のデータつくりなおすのか
差分だけやるとか分割するとかしないのね

645:デフォルトの名無しさん
20/10/24 12:24:40.86 9i+KquaLM.net
あるフォルダに複数のエクセルがあります。
シートは必ず一枚。
一番ファイル名が短いエクセルに
他のエクセルのシートをコピーしてまとめたい。
どう書けば楽ですか。

646:デフォルトの名無しさん
20/10/24 12:36:09.77 Gp+9LQQ1p.net
>>640
一番短いファイル名で同じ長さのものが有った時点で破綻
次の方どうぞ~

647:デフォルトの名無しさん
20/10/24 12:41:50.27 hS/lv/UK0.net
その問題を作った先生を問い詰めろ!

648:デフォルトの名無しさん
20/10/24 12:43:08.02 hS/lv/UK0.net
>>640
前提条件にリアリティがなさすぎるw

649:デフォルトの名無しさん
20/10/24 13:11:38.58 uN2dIIGs0.net
>>640
「わかりません」って書いとけばいいよ

650:デフォルトの名無しさん
20/10/24 13:18:00.47 Lxq4fMOo0.net
>>640
その通り書けば楽です

651:デフォルトの名無しさん
20/10/24 13:35:27.35 hS/lv/UK0.net
エクセルがあるとは何ですか?

652:デフォルトの名無しさん
20/10/24 13:37:23.43 hS/lv/UK0.net
Excelファイルのことを単にExcelと呼ぶのも違和感がある。

653:デフォルトの名無しさん
20/10/24 13:45:51.01 9i+KquaLM.net
>>641
同じ長さになることはありません
説明不足ですみません

654:デフォルトの名無しさん
20/10/24 13:46:27.15 EYzilKe/0.net
何を条件にした楽なのか?

655:デフォルトの名無しさん
20/10/24 15:19:09.43 hS/lv/UK0.net
ファイル名のことなんてあとで考えればよい。
まず手順を考えてください。
ファイル名は重要ではありません。

656:デフォルトの名無しさん
20/10/24 15:29:59.50 VJA5Q+pD0.net
いつものあいつっぽい

657:デフォルトの名無しさん
20/10/24 15:59:31.92 h35l0z5Z0.net
シート"土曜日の小計"のA2から、祝日と会社の休業日以外の土曜日を書いていくマクロを考えています。
(シートカレンダーのA列に日付、B列にA列の日付が祝日であれば"1"が入力してあり、C列に会社の休業日なら"1"が入力してあります)
このマクロだと、「424 オブジェクトが必要です」になります。どう書けば良いですか?

Dim a As Long,r As Long
a = 2
For r = 1 To 365
 If Weekday(DateAdd("d", r, Date)) = 7 And _
   Worksheet.Function.VLookup(DateAdd("d", r, Date), Sheets("カレンダー"), 2, False) <> 1 And _
    Worksheet.Function.VLookup(DateAdd("d", r, Date), Sheets("カレンダー"), 3, False) <> 1 Then
Sheets("土曜日の小計").Cells(a, 1) = DateAdd("d",r,Date)
  a = a + 1
End If
Next bc

658:デフォルトの名無しさん
20/10/24 17:14:11.51 hS/lv/UK0.net
>>652
URLリンク(officetanaka.net)

659:デフォルトの名無しさん
20/10/24 17:16:31.42 hS/lv/UK0.net
>>652
可読性の悪さw

660:デフォルトの名無しさん
20/10/24 17:22:25.13 VJA5Q+pD0.net
土曜日のことを聞いていたのは例のあいつ

661:デフォルトの名無しさん
20/10/24 17:24:29.58 hS/lv/UK0.net
>>652
どのワークシートなのか指定がないけど?

662:デフォルトの名無しさん
20/10/24 19:06:56.46 kz7Ernxq0.net
例のあいつが好きな人か

663:デフォルトの名無しさん
20/10/24 19:44:26.47 EYzilKe/0.net
オブジェクトの指定も無いし存在しない命令も書いてあるし

664:デフォルトの名無しさん
20/10/24 19:53:11.40 rvK7EvYrd.net
>>610
個別的になるが出来る。
Application.VBE.ActiveVBProject.References.AddFromFileを使う。
VBEを弄るからセキュリティがザルだ。
わかってる奴以外は使わないことをお勧めする。

665:デフォルトの名無しさん
20/10/24 20:28:18.61 UZJZIrrqM.net
>>652
Sheets("カレンダー")のあとにセル範囲を書けば動くんじゃね

666:デフォルトの名無しさん
20/10/24 21:19:11.38 9VZVkXWLd.net
理解しないまま適当にいじって、エラーが出る位置を見直そうともせず修正丸投げか

667:デフォルトの名無しさん
20/10/24 23:09:15.96 ZLw1Oaa2M.net
だっていつもの人だもの

668:652
20/10/24 23:35:43.13 h35l0z5Z0.net
>>653
どこにSetをつければいいか分かりません


>>652
どうやって指定すればいいですか?


>>660
Worksheet.Function.VLookup(DateAdd("d", r, Date), Sheets("カレンダー").Range("A:C"), 2, False) <> 1

でも同じでした

669:デフォルトの名無しさん
20/10/25 01:39:45.83 eXluQ9/t0.net
うるさい

670:デフォルトの名無しさん
20/10/25 02:05:19.43 mQ0mp2TEM.net
>>663
いい加減にしろや
死ね

671:デフォルトの名無しさん
20/10/25 11:43:41.49 R1nDOxYO0.net
>>663
基本的なことができてないようなので職場の他の人に頼んだ方が早いだろう

672:デフォルトの名無しさん
20/10/25 12:51:32.04 6oKLzf6v0.net
ある変数に、なんでもいいから100文字セットしたい場合って
どの関数使えばいいの?
str = "*****..."(100文字)
と書くのはダサいから嫌です

673:デフォルトの名無しさん
20/10/25 12:58:10.18 cOgZifE90.net
ダサいとする基準は?

674:デフォルトの名無しさん
20/10/25 13:44:52.27 eJOhPHQ60.net
>>667
WorksheetFunction.Rept("あ" ,100)

675:デフォルトの名無しさん
20/10/25 14:25:26.14 f7KUnMgPd.net
>>667
String(255,"*")

676:デフォルトの名無しさん
20/10/25 14:26:14.56 f7KUnMgPd.net
100文字か。
String(100,"*")

677:デフォルトの名無しさん
20/10/25 14:53:37.82 SDXJVscja.net
>>667
その質問のほうがダサい

678:デフォルトの名無しさん
20/10/25 17:29:34.56 6oKLzf6v0.net
>667
です
669-671
おかげさまでできました有難う天才たち

679:デフォルトの名無しさん
20/10/25 19:06:05.20 DNLjJymIM.net
やっぱりいつものあいつでしたとさ

680:デフォルトの名無しさん
20/10/25 19:23:20.13 eXluQ9/t0.net
なんでもいいという要件がわからない。

681:デフォルトの名無しさん
20/10/25 20:13:10.48 R1nDOxYO0.net
からかわれている

682:デフォルトの名無しさん
20/10/25 20:37:35.14 cOgZifE90.net
というかバカにされてるなたぶん

683:デフォルトの名無しさん
20/10/25 21:38:09.03 eeV8PNBf0.net
複数行まとめてコメントアウトしたい場合
どう書けばいいですか
一行ずつ'を入れたくないです。

684:デフォルトの名無しさん
20/10/25 22:03:05.56 D3cPjOx/a.net
選択されたら行範囲をすべてコメント化/コメント解除はツールバーにある
そのバーが非表示だと表示しなければダメだが
あと、推奨されるかは分からないけど、
#if 0 then
コメント化したい行
#end if
とかよくやります

685:デフォルトの名無しさん
20/10/25 22:04:11.05 D3cPjOx/a.net
出だし
選択された行範囲…
です

686:デフォルトの名無しさん
20/10/25 22:18:31.00 D3cPjOx/a.net
自分で書いておいてなんだけど、#でぃれくてぃぶによるコメントはお勧めしません
知っておいてよいかも、で

687:デフォルトの名無しさん
20/10/25 23:22:51.95 JTBNO/Ek0.net
>>678
行の末尾に半角スペースとアンダーバーを入れて次の行と繋げてしまうとか?

688:デフォルトの名無しさん
20/10/26 00:23:04.45 qmNjcSj20.net
>>678
数行程度の編集作業で手を抜くってのはどうかな
むしろそのコメント残さないで削除した方がいいんじゃね
一時的に処理を分けるならプロシージャとかで追い出して呼び出し部分をコメントにするとかあるけど

689:デフォルトの名無しさん
20/10/26 12:01:16.14 fNFJMgyU0.net
>>678 は釣り


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