Excel VBA 質問スレ Part75at TECH
Excel VBA 質問スレ Part75 - 暇つぶし2ch321:デフォルトの名無しさん
22/03/08 11:33:03.86 e+QnjkryM.net
If Range("A1").Fomula = "" Then

322:デフォルトの名無しさん
22/03/08 11:33:45.29 e+QnjkryM.net
あ、嘘。ごめん。間違えた。忘れて。

323:デフォルトの名無しさん
22/03/08 11:39:20.91 VCo1qiqP0.net
>>315
ありがとうございます
Formulaを設定すると関数をそのまま取得してしまいました
なので空白の時の分岐ができませんでした

324:デフォルトの名無しさん
22/03/08 11:41:01.62 VCo1qiqP0.net
大丈夫です!
ありがとうございますm(_ _)m
ご存じの方いらっしゃいましたらよろしくお願いします

325:デフォルトの名無しさん
22/03/08 12:20:48.22 vjLwCjzB0.net
普通にセルのValueなりTextなりを見ればいいんじゃないの?

326:デフォルトの名無しさん
22/03/08 12:37:16.79 YxxaCHXb0.net
>>318
If Range("A1").value = "" Then
>>319
その普通を学習前の段階ぽい

327:デフォルトの名無しさん
22/03/08 13:18:52.50 +eE97yRCa.net
空なのか空白なのか

328:デフォルトの名無しさん
22/03/08 13:28:01.68 ez1E04nZd.net
Trim(.Text)じゃないか?
>>321
数式が入ってたらEmptyにはならん

329:デフォルトの名無しさん
22/03/08 14:12:30.12 vjLwCjzB0.net
Empty と空文字列と空白は違うって話かと

330:デフォルトの名無しさん
22/03/08 19:12:34.37 IBMOg+Z/0.net
前任者のシートで0を書式で空白にしてるのには参ったね
textプロパティを覚えるきっかけにはなったけど

331:デフォルトの名無しさん
22/03/08 19:25:23.65 fxoU/Jgx0.net
文字列枠だけど 書式は #
よくやるw

332:デフォルトの名無しさん
22/03/11 06:05:40.07 a7Y3SJRd0.net
すみません、質問させてください。
VBAで自作したクラスのメソッドやプロパティの一覧を列挙するにはどうすれば宜しいでしょうか?
どのような自作したクラスでも使える汎用的なものを作成したいです。

333:デフォルトの名無しさん
22/03/11 07:32:33.79 mh6S44cma.net
すみません。
特定のセル内に有るリンクを抽出する方法は有りますか?

334:デフォルトの名無しさん
22/03/11 08:32:32.67 vHBnGMWOd.net
>>326
VBAでは無理
ソースをエクスポートしてテキストファイルを処理するぐらいしかないと思う
VB.netならGetMembersってのがあるんだけど

335:デフォルトの名無しさん
22/03/11 08:33:31.79 vHBnGMWOd.net
>>327
Hyperlink

336:デフォルトの名無しさん
22/03/12 01:24:13.27 7NvJtuE10.net
>>328
なるほど、VBAでは無理なんですね。
以前、VB.Netの命令をVBAで走らせることが出来る場合があることをこのスレで聞いたことがあるような気がしましたので、
そちらとAPIで実装出来ないかを模索してみます。ありがとうございました。

337:デフォルトの名無しさん
22/03/12 03:38:02.55 pgjQzAZm0.net
オブジェクトブラウザがやってるけど、どうやってるんだろうな
>>328
エクスポートとかしなくても、VBEオブジェクト使えばコードのスキャンはできる
プロシジャ名の列挙だけでよければここの実行結果3がそうじゃね
URLリンク(excelwork.info)

338:デフォルトの名無しさん
22/03/12 08:17:43.49 7NvJtuE10.net
>>331
後出しになってしまい申し訳ありません。
実は、実際にやりたかったことは
自作したEntityクラスのプロパティを
片っ端からGetして配列に入れ込み、
それをシートに展開すると言うことでした。
名前の列挙さえ取得できれば
後はリフレクションで呼び出せば可能と
考えていました。
おかげで実装の目処がつきました。
ありがとうございます。

339:デフォルトの名無しさん
22/03/13 02:21:31.96 YEneWsYd0.net
どういう状況で使うんだろう
自分で作ったのに数が多すぎて覚えてないとか?

340:デフォルトの名無しさん
22/03/13 02:43:05.91 B1jPEMw70.net
素人ですが質問させて下さい。
画像のような、1つのシートに20行単位の表で、連番と日付を上の表から取得するようなブックを作成しています。
表の順番を変えても、常に1つ上の表の番号+1、同じ日付としたいため、直接セルを参照せずこのような関数を使用しています。
式は、↓としています。
=INDIRECT(ADDRESS(ROW()-20,COLUMN()))
起動中は問題なく動作するのですが、ブックを閉じて再起動すると、起動時に必ず落ちてしまいます。(手動計算にすると開ける)
コピーを作成して、上記の式の部分だけ消すと問題なく起動します。
この場合、何が悪いのでしょうか。或いは代替手段があれば教えて頂けると助かります。
URLリンク(i.imgur.com)

341:デフォルトの名無しさん
22/03/13 02:49:45.62 B1jPEMw70.net
普段VBAを触っているためVBAスレで質問してしまいました。
スレ違いであればスルーして下さい。

342:デフォルトの名無しさん
22/03/13 03:12:17.58 JfJkUCau0.net
>>335
多分Excel板なら親切な人が回答してくれすよ

343:デフォルトの名無しさん
22/03/13 05:18:44.42 JG4Baegn0.net
>>336
回答者は被ってるからどっちでもいいよ

344:デフォルトの名無しさん
22/03/13 11:02:15.36 B1jPEMw70.net
レスありがとうございます。
こいつ自体難のあるものなんですね。
offsetで狙った動きができました。ありがとうございます。

345:デフォルトの名無しさん
22/03/13 14:32:38.85 UXs3pJFgd.net
普通に「=R[-20]C+1」じゃダメなのかね(R1C1形式

346:デフォルトの名無しさん
22/03/14 05:49:07.49 3S2IFgLOM.net
>>339
これだと移動させたとき式の値も変動してしまいました。

347:デフォルトの名無しさん
22/03/14 07:57:10.59 727wXMaZd.net
>>340
失礼、移動後も保証しないとだめだからこれではだめですね

348:デフォルトの名無しさん
22/03/14 17:48:06.77 yx1wpkrnM.net
>>334ですが、当初安定していたもののまた同じ現象になりました。
端末を変えるなり新しいブックにして作り直したり色々試すも改善せず、T列の参照だけがこの現象を引き起こしている(参照先が文字列だと発生しないが数値は発生)ことが分かったため他の列を経由して参照する形で概ね落ち着きました。
エクセル自体のバグなのか分かりませんが同種の状況の方の参考まで。

349:デフォルトの名無しさん
22/03/15 13:19:58.65 cMhtDWKy0.net
>>342
多分ブックが壊れている
新しいブックを作り、1シートずつコピーすれば直る可能性がある
その状態で使い続けると完全に壊れて、開けなくなる可能性があると思う

350:デフォルトの名無しさん
22/03/16 04:32:35.42 3pfuXf5y0.net
ブックがブックわれている

351:デフォルトの名無しさん
22/03/16 07:48:40.55 /fL7/vIcd.net
セル「 ちくしょーちくしょー! 完全体に…… 完全体にさえなればー! 」

352:デフォルトの名無しさん
22/03/16 07:55:37.71 tVfnjSl40.net
エクセル「私の行数は 1048576です」

353:デフォルトの名無しさん
22/03/16 10:32:53.21 EfOqqAli0.net
質問させて下さい。
EXCELの自ブックのシートにVBAにてADO接続でSQLを投げてRecordSetに値を取得していますが、
あまりに遅いのでINDEXを対象のシートに設定したいのですが、可能でしょうか?
可能であれば実装方法を教えて頂けるとありがたいです。
CREATE INDEXのSQLを投げると
「この操作は、このタイプのオブジェクトには実行できません。」というエラーが返って来ます。
EXCEL VBA上でのADO接続だったのでこちらのスレで質問させて頂きました。
もしスレ違いで有れば誘導して頂けるとありがたいです。

354:デフォルトの名無しさん
22/03/16 20:05:55.54 E9jeVJ9d0.net
エクセルの開発、挿入、フォームコントロールでリストボックスを作って操作するのですが
sheet.ListBoxes("List").AddItem "A" だったかな?で追加できるんですが
sheet.ListBoxes("List").Clear で全て消去したくてもエラーになります。
sheet.ListBoxes("List").RemoveItem 1 で消せるので .ListCountが0になるまで
消していくとやりたいことはできるのですがClearのような1行で消す方法が知りたいです。
あと選択している内容を取得したいのですが.Valueだと内容ではなくインデックス番号?が返ってきます
選択している内容を文字列で取得できないのでしょうか。検索してもユーザーフォームのページばかり
出てきてわかりません。どなたか知っていたら教えてください。

355:デフォルトの名無しさん
22/03/17 04:53:04.06 2UkhCjLQ0.net
>>348
全消しはRemoveAllItemsかな?
内容の取得はItem(インデックス番号)かな?
マニュアル見てそれっぽい単語を見つけただけだから違ってるかも

356:デフォルトの名無しさん
22/03/17 05:57:03.26 RdQIwXxN0.net
最近のExcelってヘルプもついていないの?

357:デフォルトの名無しさん
22/03/17 06:07:57.47 UlLj9IGM0.net
ネットがあるからねぇ

358:デフォルトの名無しさん
22/03/17 11:46:40.93 mL7eqXCg0.net
それでなくなったのか、知らんかった

359:デフォルトの名無しさん
22/03/17 12:31:38.84 9VjLQzax0.net
F1押すだけでヘルプ出てくるの便利だったのにね

360:デフォルトの名無しさん
22/03/17 12:35:28.43 ++LfIShu0.net
F1ヘルプ起動大嫌い
起動遅いから誤爆した時ストレス

361:デフォルトの名無しさん
22/03/17 12:48:39.33 Rh0i5fdo0.net
まあ市販ソフトとかゲームとかおしゃんな小物とかもネット参照多くなったしね

362:デフォルトの名無しさん
22/03/17 15:59:04.45 2UkhCjLQ0.net
2010のあたりでヘルプがオンラインになって、旧バージョンのヘルプファイルを無理矢理インストールして使ってた記憶がある
あれってどのバージョンの話だっけ

363:デフォルトの名無しさん
22/03/17 16:00:36.21 2UkhCjLQ0.net
>>348
VBAから操作するんなら、たぶんフォームコントロールよりActiveXコントロールのが簡単だと思うよ
MSは推奨してないみたいだけど

364:デフォルトの名無しさん
22/03/17 18:51:23.33 NNC6CjWiM.net
やたら重かった無能なイルカよりはマシだろう

365:デフォルトの名無しさん
22/03/17 19:51:28.31 hQEb7r5k0.net
お前を消す方法なつい

366:デフォルトの名無しさん
22/03/17 20:00:50.39 +xJma3Ej0.net
>>348
URLリンク(www.sejuku.net) ここ読んでがんがれ

367:デフォルトの名無しさん
22/03/17 22:15:36.31 UYkpbTrn0.net
>>349
全消しはRemoveAllItemsでできました。Itmeで内容はとれずエラーになりました。
マニュアルはマイクロソフトのExcel VBA リファレンスかな?そこで検索かけてもよくわからないのであきらめます。
Valueでもやりたいことはできそうなので
>>357
ActiveXでのやり方はわかるんですけどできればActiveXより新しいの使いたいんですよね。
別件でActiveXが大量に使われているブックが物凄く重くなっているのを見たことあってあまり使いたくない。てのもあります。
>>360
ユーザーフォームのことじゃないです。

368:デフォルトの名無しさん
22/03/18 09:26:17.20 yuFF0zGe0.net
じゃあこれ
URLリンク(officetanaka.net)

369:デフォルトの名無しさん
22/03/18 10:46:32.32 GvFVeYD4d.net
>>361
List(参照したい位置)でいけるんじゃないか
参照したい位置はListIndexでとれるかと
複数選択ならSelected(位置)でTrueになるところかな

370:デフォルトの名無しさん
22/03/18 19:57:18.31 hw4UnylL0.net
シート上で任意に選択した範囲を set myRange = 選択範囲 のように代入した後、
For Each buf In myRange.Value
処理A
Next
という処理をしようとすると、
・選択範囲が複数ある場合:正常に動作する
・選択範囲が1つの場合:「型が一致しません」のエラーになる
「For each ○ IN ●」の●には複数セルが指定されていないといけないということでしょうか?

371:デフォルトの名無しさん
22/03/18 23:38:51.84 q1DQLrxB0.net
>>364
そうです 
set buf as range
For Each buf In myRange
debug.print buf.value
Next
こんな感じじゃだめですか?

372:デフォルトの名無しさん
22/03/18 23:53:01.28 q1DQLrxB0.net
おっと間違えた
dim buf as range
For Each buf In myRange
debug.print buf.value
Next

373:デフォルトの名無しさん
22/03/19 00:50:36.99 OOddD3UI0.net
myRange.Value の Value がおかしかったのか。
ありがとうございます。

374:デフォルトの名無しさん
22/03/19 02:03:56.48 yYNieGSo0.net
>>364
myRangeの何をbufとしてとりたいの?各セル、連続した複数のセル、myRange全体によつて正しいこーどは異なる

375:364
22/03/19 10:45:02.08 OOddD3UI0.net
>368
任意のドラッグ操作で選択したセルと同じ行のL列(左から12番目)に入っている文字列を結合して表示させようとしました。
Dim cnt As Integer
Dim myRange As Range
Dim buf As Range
Dim target As String
cnt = Selection.Rows.Count
Set myRange = Range(Cells(Selection.Rows(1).Row, 12), Cells(Selection.Rows(1).Row + cnt - 1, 12))
For Each buf In myRange
target = target & buf & vbCrLf
Next
Debug.Print target

376:デフォルトの名無しさん
22/03/19 10:48:26.22 kJy21FG50.net
>>347で質問させて頂いたものです。
色々調べましたがシートにINDEXを設定するのは実現可能か分からなかったのと、
出来ない場合、代替案を考えたいのですが、
ひとつのシートに20万行、100列の一覧が有ったとして
そのとき、ひとつの項目(項目1とします)はある値とイコール、更に別の項目(項目2とします)は
項目1で抽出したレコードの内の最大値を求めたいです。
どのような方法が一番速く処理出来ると思いますか?

377:364
22/03/19 10:48:43.76 OOddD3UI0.net
>>369は正常に動作したコードです。
最初は下記のようなコードでエラーとなっていました。
Dim buf As Variant ←Variant型にしていた。
For Each buf In myRange.Value ←.Valueを付けていた。
target = target & buf & vbCrLf
Next
Debug.Print target

378:デフォルトの名無しさん
22/03/19 10:51:21.24 CvJNM5+IM.net
範囲検索するのにfindとworksheetfunction.matchとではどちらが速いですか?

379:デフォルトの名無しさん
22/03/19 10:52:04.86 CvJNM5+IM.net
ちなみに完全一致の場合です

380:デフォルトの名無しさん
22/03/19 11:51:46.09 /t3SgnSXa.net
自分で試せばいいだろw

381:デフォルトの名無しさん
22/03/19 11:51:57.89 i9OMIEsk0.net
試したほうが早いよ

382:デフォルトの名無しさん
22/03/19 12:52:21.15 UXt2lmR80.net
は?試してたらこんな所で聞きませんけど?

383:デフォルトの名無しさん
22/03/19 12:52:58.71 4DGoWoBi0.net
>>369
>cnt = Selection.Rows.Count
>Set myRange = Range(Cells(Selection.Rows(1).Row, 12), Cells(Selection.Rows(1).Row + cnt - 1, 12))
Set myRange = Cells(Selection.Row, "L").Resize(Selection.Rows.Count)
もっと簡単に書けそうな気もするがこんなもんかな

384:デフォルトの名無しさん
22/03/19 13:47:10.61 zEPprvQva.net
>>376
試してなくても、こんなところで聞かないでくださいw

385:デフォルトの名無しさん
22/03/19 14:44:42.82 qNoriQBK0.net
>>377
ちゅんちゅんさん推奨の書き方か
resize真似して使ってたんだけど間違えやすかった

386:デフォルトの名無しさん
22/03/19 15:12:32.83 OOddD3UI0.net
>>377
ありがとうございます。.Resizeを使うとスマートに書けるんですね。使ってみます。

387:デフォルトの名無しさん
22/03/19 15:57:19.25 rhR/rlzyd.net
autofilterで表示されたものだけで、列をautofitすることは出来ますか?

388:デフォルトの名無しさん
22/03/19 16:36:01.13 4DGoWoBi0.net
SpecialCells(xlCellTypeVisible)でできんじゃねーかな

389:デフォルトの名無しさん
22/03/19 16:40:58.85 AuBNrAzT0.net
コードは


390:スマートなのに…って言われろ



391:デフォルトの名無しさん
22/03/19 18:04:38.19 4DGoWoBi0.net
Range("テーブル1[項目A]").SpecialCells(xlCellTypeVisible).Columns.AutoFit
出来ないのかと思ったらできるじゃん

392:デフォルトの名無しさん
22/03/19 18:22:46.82 qn2+ggVDa.net
VBA素人にご教示ください
PowerQueryで整形したテーブルのデータを
別ブックのVBAに引っ張ってきたい場合
・列データをユーザー定義型にまとめる
・ListObjectを使う
どちらがベターでしょうか?

393:デフォルトの名無しさん
22/03/19 18:48:13.74 XaCRBAWQM.net
引っ張ってきたい側でpowerquery使って整形したテーブルをソースに指定する

394:デフォルトの名無しさん
22/03/19 19:07:47.91 qn2+ggVDa.net
すいません、うまく説明できてませんでした
PowerQueryとVBAは別ブックでも同じブックでもいいです
やりたいことは
巨大なテーブルを参照してVBAで検索フォームを作りたい
です
その場合、テーブルデータを
・ユーザー定義型にまとめる
・ListObjectを使う
どちらがいいのか?が質問の意図です
改めてお願いします

395:デフォルトの名無しさん
22/03/19 20:45:24.46 ecCVM1RA0.net
全くの素人で申し訳ないんですけど、やりたい事
❶:B10からスタートしてボタンを押したら次の行に指定された文字を入力していく。
❷:Ifを使って、もしB29行まで埋まった状態でボタンを押したら
 B2からB29までコピーしてB1からB28にペースト
 →B29に指定された文字を入力
色々頑張ったけど自分で❶は出来たけど❷ハードルが高かった・・・

396:デフォルトの名無しさん
22/03/19 21:21:42.73 titlKmjCa.net
2のどの部分ができないのか

397:デフォルトの名無しさん
22/03/19 21:33:07.78 qNoriQBK0.net
If Range("B29")<>"" then Range("B1:B28").value = Range("B2:B29").value
こんな感じか?

398:デフォルトの名無しさん
22/03/19 22:17:04.40 hVJQeY+Td.net
>>389
IFで範囲内空白があった場合を出そうとしてたんだけどうまくいかなかったんや・・・

399:デフォルトの名無しさん
22/03/19 22:17:58.96 hVJQeY+Td.net
因みに入れたいのは勝利か負け。2つボタン作れば別々に行けるかな

400:デフォルトの名無しさん
22/03/19 22:56:32.21 hVJQeY+Td.net
>>389
ありがとう。認識できた。そしてなんとか検索して思うような結果になった!

401:デフォルトの名無しさん
22/03/20 00:13:30.21 ZUsPYd03M.net
>>382
>>384
ありがとうございます。
明日試してみます。

402:デフォルトの名無しさん
22/03/20 01:49:20.37 CEJcVsO40.net
>>387
巨大ならlistobjectかadoじゃないの、速度的に。
巨大じゃなきゃ何でもいいや。

403:デフォルトの名無しさん
22/03/20 06:37:24.28 Md+DYeh30.net
>>372
ちゃんとタイマー走らせて確認してるわけではないけど体感的には大して変わらない
でも完全一致で検索をかける場合matchは検索対象が存在しないとエラー停止するのに対してfindはset range変数=対象範囲.find(ryで検索をかけてやればrange変数がnothingか否かで判別可能だから個人的にはfindの方が好きかなぁ

404:デフォルトの名無しさん
22/03/20 08:33:55.10 Zh6y5r970.net
>>370
同じようなことを前考えたけど、恐らくEXCELのシートにインデックスを貼るのは無理っぽい。
ADOどころか拡張機能であるADOXでも無理だったはず。
代替案としてはSQLが使えないので、都度個別で考えるしかないけど、とある項目の最大値や最小値が入っているレコードの内容が欲しいなら基本、MATCH関数での検索となると思う。

405:デフォルトの名無しさん
22/03/20 10:22:27.56 HKRI5d8YM.net
>>370
> どのような方法が一番速く処理出来ると思いますか?
フィルターかけてSUBTOTAL(4, 範囲)

406:デフォルトの名無しさん
22/03/20 13:33:44.21 NjSblaend.net
>>382
>>384
うまくいきました。
ありがとうございます。

407:デフォルトの名無しさん
22/03/20 15:42:40.21 IQ9r07oYM.net
>>369
すまん、368だけどコード見てもやりたいことがまるでわからんので、回答書けない

408:デフォルトの名無しさん
22/03/20 19:07:32.87 fXpRWn260.net
初心者のため、ご存じでしたらご教授お願い致します。
エクセルから印刷する際、プリンタをカラー、モノクロをそれぞれ
自動印刷できませんでしょうか?
PageSetup.BlackAndWhite = True/Flase
以外で方法がありましたら、ご教授をお願い致します。

409:デフォルトの名無しさん
22/03/20 19:41:51.49 V5Xg0/PX0.net
>>401
その方法では成功しないのですか?

410:デフォルトの名無しさん
22/03/20 19:51:58.85 aHWtYUUu0.net
素人にご指導願います。
生年月日や所属等を含めた社員のリストを作ってまして、氏名等で検索できるようオートフィルターをvbaで作るところまではできました。
「チェックボックスにチェックを入れたら、指定した日付と同じ生年月日でフィルターをかける」という操作は可能でしょうか。
例えば、セルに1990/3/1を入れてるとして、チェックボックスにチェックを入れたらフィルターがかかって1990/3/1の生年月日だけ出てくる(それ以外は消える)というものです。
チェックボックスにチェックを入れるかどうかで指定した日でフィルターをかけるかどうかを判断したいです。
もし可能でしたら、ご教示いただけると幸いです。
よろしくお願いします。

411:デフォルトの名無しさん
22/03/20 19:56:19.87 fXpRWn260.net
>>402
PageSetup.BlackAndWhite = Falseで白黒印刷設定したのですが、
塗りつぶしの背景が白で印刷されてしまいます。
また、カラーの図が白黒で印刷できませんでした。
プリンタのプロパティにある印刷設定(両面、集約、カラー等)はVBAでは制御できないでしょうか?

412:デフォルトの名無しさん
22/03/20 20:02:50.72 0CQh90gjM.net
>>401
> 以外で方法がありましたら
なぜこういう人は以外でないとダメな理由を書かないのか

413:デフォルトの名無しさん
22/03/20 20:15:26.37 KxZjhn5zM.net
>>404
すまん、リロードしてなかった
っていうか最初から書けよ…
> PageSetup.BlackAndWhite = Falseで白黒印刷設定したのですが
白黒設定は True じゃね?
> プリンタのプロパティにある印刷設定(両面、集約、カラー等)はVBAでは制御できないでしょうか?
無理、
Application.Dialogs(xlDialogPrinterSetup).Show
で、ダイアログを表示させるのが精一杯

414:デフォルトの名無しくん
22/03/20 20:21:02.46 V5Xg0/PX0.net
>>404
プリンタドライバをもう一つ入れて、そのドライバの初期設定を白黒にして「白黒印刷専用」とする。
このプリンタ(ドライバ)をVBAで選択して印刷する。
過去にやったことがあるけどちょっとめんどくさかった記憶
他にいい方法あるのかな

415:デフォルトの名無しさん
22/03/20 20:23:50.61 Md+DYeh30.net
>>403
チェックボックスにマクロを登録してフィルターのキーをその入力があるセルを参照すれば良いだけだと思う
例外処理があるならそれはどういう条件で省くのか分からないから自分で考えて

416:デフォルトの名無しさん
22/03/20 20:36:02.96 fXpRWn260.net
>>406
ご回答ありがとうございます。
理由も一緒に書けばよかったですね。大変失礼致しました。
以後気を付けます。
やはり無理なんですね。
他のかたがご指摘のように、白黒専用プリンタドライバを増やして
プリンタを切り替えてトライしてみます。
ご指摘の通り、PageSetup.BlackAndWhite = Trueが白黒です。失礼致しました。

417:デフォルトの名無しさん
22/03/20 20:41:31.10 fXpRWn260.net
>>407
ご回答ありがとうございます。
プリンタドライバを増やす方法、ご提案ありがとうございます。
早速トライしてみます。
ドライバーを入れた後、プリンタの基本設定で白黒を初期設定にすれば白黒専用でいけますね。

418:デフォルトの名無しさん
22/03/20 21:09:18.42 j6YhEUF6d.net
>>403
多分VBA要らない
スライサーで十分

419:デフォルトの名無しさん
22/03/21 02:46:04.32 HoitaytG0.net
スライサやタイムライン知らない人多いらしいね
マイナーなのかな?

420:デフォルトの名無しさん
22/03/21 06:08:07.49 8sRo6eoq0.net
マイナーはマイナーだと思う
MOS受けて初めて知ったわ

421:デフォルトの名無しさん
22/03/21 07:21:11.67 K7MjVs2M0.net
テーブルからしてまだマイナーだからかしら?

422:デフォルトの名無しさん
22/03/21 07:27:35.78 Od0FfcR


423:PM.net



424:デフォルトの名無しさん
22/03/21 08:06:13.98 S9+WMeZFH.net
誰か教えてください
各営業所から毎月送られてくる実績ファイルを一つのブックに集計するマクロを作りたい
一つのフォルダに全てのブックを入れてループ処理するマクロ自体はできたんだけど肝心の転記の仕方がわからない
具体的には各ファイルの指定のセルから集計表ファイルの指定のセルに営業所名ごとに転記したい
営業所ファイルには4〜3月まで縦に月毎に実績が並んでいて集計表のファイルは横に月毎になってるって感じ
どうしてもわからなくてどなたか助けてください

425:デフォルトの名無しさん
22/03/21 08:19:15.34 /kHY2rERM.net
powerqueryだな

426:デフォルトの名無しさん
22/03/21 08:24:32.18 S9+WMeZFH.net
>>417
ありがとうございます
パワークエリってやつですかね?
検索かけたら使い方分かりそうでしょうか?

427:デフォルトの名無しさん
22/03/21 08:52:49.57 K7MjVs2M0.net
>>418
ようつべのライブラリに放り込んでた中から
役に立ちそうなもの見繕ってみた。
PLをフォルダに放り込むだけで科目ごとの数値を比較できる【エクセル パワークエリ PowerQuery】
URLリンク(youtu.be)
大量のエクセルファイルを1つにまとめる方法【ファイル名活用】
URLリンク(youtu.be)
【マクロ無しで】大量ファイルを1つに統合。簡単にクリック操作で可能(Power Query、取得と変換)
URLリンク(youtu.be)
PowerQuery 複数のExcelファイルからデータを結合する方法
URLリンク(youtu.be)

428:デフォルトの名無しさん
22/03/21 09:00:07.15 8sRo6eoq0.net
>>416
Sub foo()
'開いてset
Set 転記先ブック = ThisWorkbook
Set 営業所ブック = Workbooks.Open( _
"C:\Users\81909\Desktop\eigyosyo.xlsx")
'転記
転記先ブック.Sheets("sheet1").Range("b2:d3").Value = _
営業所ブック.Sheets("sheet1").Range("b2:d3").Value
End Sub
保存ファイルのパスと転記セルの範囲変えたら使えると思う

429:デフォルトの名無しさん
22/03/21 09:06:14.38 Yo31hjL10.net
>>397
ありがとうございます。
やはりEXCELのシートにINDEXを設定するのは無理なんですね。
>>398
ありがとうございます。
残念ながら20万件100項目という量のせいか、
フィルターを掛けるとそのまま固まってしまい、いつ返ってくるか、そもそも返ってくるのかすら分からない状況になりました。

430:デフォルトの名無しさん
22/03/21 09:14:48.04 8sRo6eoq0.net
>>421
そもそもフィルター掛ける必要があるのかどうかってのもあるけど・・・
ぱっとおもいつくのは
・forで回して別シートに転記。量が少なければそこまでかからんはず。量が多いとかなり大変
・別シートにfilter関数。かなり軽いけど、その量に対してはやったことないな
・スプレッドシートでquery関数。軽さならこれが最強で、めちゃくちゃ軽い

431:デフォルトの名無しさん
22/03/21 16:06:54.19 YtFKrPKNa.net
>>419
ありがとうございます
見て参考にさせていただきます

432:デフォルトの名無しさん
22/03/21 16:10:10.41 YtFKrPKNa.net
>>420
ありがとうございますこの構文のでいける感じですか?
ホントど素人で申し訳ないんですけど転機の構文は何をしてる感じでしょうか?

433:デフォルトの名無しさん
22/03/21 16:14:49.98 ombAFbaLM.net
>>420は要点をコンパクトに上手に説明してる
これが理解できないなら自分で最終回答に辿り着くのは無理だよ

434:デフォルトの名無しさん
22/03/21 16:21:01.88 8sRo6eoq0.net
>424
転記の部分は値でコピーペーストだよ
試しに動かしてみたほうが早いと思う

435:デフォルトの名無しさん
22/03/21 16:38:45.50 YtFKrPKNa.net
>>425
>>426
ありがとうございます
まずは動かしてみます

436:デフォルトの名無しさん
22/03/21 16:43:02.21 HoitaytG0.net
テーブルってまだ普及していないねかな?

437:デフォルトの名無しさん
22/03/21 16:50:26.11 DBpwCepOM.net
永遠に普及しないでしょうね
列島猿はセル結合したり自分で色塗ったり線引いたりするのが大好きで、お仕着せのDBにデータだけ放り込むみたいなのは苦手なので

438:デフォルトの名無しさん
22/03/21 16:56:11.28 8sRo6eoq0.net
全面的に同意
テーブルで表作ったらテーブルを解除しろって言われるレベル

439:デフォルトの名無しさん
22/03/21 17:19:32.38 fDbYf0xJ0.net
>>424
転記する際に縦横を置換したいんじゃねえの?
420の例にはそれが入ってないかと

440:デフォルトの名無しさん
22/03/21 17:21:13.79 fDbYf0xJ0.net
テーブルでも椅子でもいいからさっさとやれと言われるわしら下っ端

441:デフォルトの名無しさん
22/03/21 17:57:58.00 bPJRBgFUM.net
>>416
マクロ記録開始してその転記の操作してみればいいかと

442:デフォルトの名無しさん
22/03/21 19:13:04.04 S9+WMeZFH.net
>>431
あーそうなんですね
そこ大事なところなもんで…
ありがとうございます

443:デフォルトの名無しさん
22/03/21 19:37:57.87 HoitaytG0.net
いつも思うのだけど、これだけExcel情報が世の中に溢れているのにセルご法度の結合だの色塗りまくるだの改行だのする人ばかりなのは何故なんだろうね??
パソコン雑誌とか読んで勉強していないのかなと?

444:デフォルトの名無しさん
22/03/21 19:43:19.70 zSyDDKWUH.net
>>435
URLリンク(www2.odn.ne.jp)

445:デフォルトの名無しさん
22/03/21 19:53:51.30 8sRo6eoq0.net
>>435
業務改革を微塵も考えていないから
一日8時間で、最初に与えられたルーチンが回ればそれで良いと考えてる人がほとんど
なんでそうなってるかは、知らん

446:デフォルトの名無しさん
22/03/21 20:06:38.09 7hRN3rZ2M.net
>>435
別にExcelの達人になるわけじゃないし
そもそも結合するなと言うなら縦方向の「選択範囲内で中央」を実現しやがれ

447:デフォルトの名無しさん
22/03/21 20:11:42.48 S9+WMeZFH.net
>>433
それも思ったんですけどそれだと恐らく一つの営業所の実績を一つのセルにコピーする操作になってしまいそうで…

448:デフォルトの名無しさん
22/03/21 20:23:41.52 2j3OjuAE0.net
>>439
ここまでの説明で理解できてないようなので
とりあえず営業所毎ファイルと集計表ファイルをアップロードしないと話が進まない

449:デフォルトの名無しさん
22/03/21 20:42:56.54 S9+WMeZFH.net
>>440
オケ
さすがにそこまでは出来ないので色々試してみます
ありがとうございました

450:デフォルトの名無しさん
22/03/21 20:43:57.15 8sRo6eoq0.net
>>439
転記部分は好きなように変えたり増やしたりスレば良い
b2をd3に、a1をe5に、など、なんとでもなる。
'転記
転記先ブック.Sheets("sheet1").Range("b2").Value = _
営業所ブック.Sheets("sheet1").Range("d3").Value
転記先ブック.Sheets("sheet1").Range("a1").Value = _
営業所ブック.Sheets("sheet1").Range("e5").Value

451:デフォルトの名無しさん
22/03/21 21:18:25.50 8fSFwG7JM.net
>>439
思うだけで手を動かす気はないのね…
いち抜けた~っと

452:デフォルトの名無しさん
22/03/21 21:20:10.88 S9+WMeZFH.net
>>443
ごめんなさい会社のファイルなので今日できんのよ
明日行ったらやってみる

453:デフォルトの名無しさん
22/03/21 21:21:07.73 S9+WMeZFH.net
>>442
ありがとうございます!
やってみます!

454:デフォルトの名無しさん
22/03/21 21:49:42.78 HoitaytG0.net
日本のExcelのレベルが低いからExcel講師やパソコン教室が潤うと。

455:デフォルトの名無しさん
22/03/21 22:13:13.78 NuDNOSQMd.net
ループ文とか条件文とかユーザーフォームとかクラスとか使ってごちゃごちゃやってるけど結局のところファイルの開閉と転記作業しかしてない事に気づいた
転記があれば何でも出来る

456:デフォルトの名無しさん
22/03/21 23:00:27.32 Rbd9piL90.net
転記の子

457:デフォルトの名無しさん
22/03/22 00:36:53.70 000FKf5P0.net
始めたてのド素人ですがご教示頂けると幸いです。
表の列ごとにランダムに入っている異なるフォントの色で正負を判断して最終行に和と差の合計値を出力したいのですが可能でしょうか?
詳しく言うと赤色が負として、黒色が正としてセルに数値が手打ちされてます。
列の最終行を取得しsum関数を挿入することはできるのですが、フォントの色で正負を判断して合計値が出せるのか教えていただけないでしょうか。

458:デフォルトの名無しさん
22/03/22 00:49:54.42 kEBDDtio0.net
>>449
もともとエクセルにはマイナスの数字を自動的に赤くする機能がある
その機能で色を変えてるんだと集計の方法も変わってくるから、まずはそこを確認して

459:デフォルトの名無しさん
22/03/22 01:08:13.62 TibwPpTv0.net
書式に辿り着ければ
自ずと答えが見つかろうぞ

460:デフォルトの名無しさん
22/03/22 01:19:04.08 KVIRUNm3d.net
そもそもVBA不要
sumif関数で出来る

461:デフォルトの名無しくん
22/03/22 02:43:58.13 d3YPRjya0.net
きっとこれは黒色の負とか青色の正とかあって
あえて色で集計したいんだろうな

と、深読み

462:デフォルトの名無しさん
22/03/22 12:14:00.76 000FKf5P0.net
ご返信ありがとうございます。
表のシートが種類ごとにあって量が千を超えているので自動化したい所存です。
前任が手書きの台帳をエクセルに落してくれたまでは良かったのですが、他の社員が手書きのときと変わらず正の値で色のみ変えて入力するため、毎年年度末になると延々と手作業で何時間も単純作業を強いられるのでなんとかならないかと思案しておりました。

463:デフォルトの名無しさん
22/03/22 12:33:30.37 jGZXGfWV0.net
条件書式でゼロ以上は赤字にするとかでもダメなんか?
逆にVBA使った方が遅かったり不便にかりそうな案件だと思うんだが

464:デフォルトの名無しさん
22/03/22 13:33:25.27 MYdjPEb1M.net
>>421
> 残念ながら20万件100項目という量のせいか、
> フィルターを掛けるとそのまま固まってしまい、いつ返ってくるか、そもそも返ってくるのかすら分からない状況になりました。
PC買い替えろ
30万行x300列に数値データを埋めてやってみたけどフィルター処理なんてほぼ瞬時に終わるぞ

465:デフォルトの名無しさん
22/03/22 13:38:08.96 mA7AOTDM0.net
他の社員が入力してるものだからなあ
集計よりも入力用のシートを何とかできたら手っ取り早いんだがそれは無理なんかな

466:デフォルトの名無しさん
22/03/22 13:43:49.21 R4HxgmoiM.net
色付けるよりマイナス記号打つ方が速いだろうに……
ご苦労さまでした

467:デフォルトの名無しさん
22/03/22 13:48:33.03 C94PEu1/d.net
>>454
はっきり言えばこんなこともできないお前は手を出すな

468:デフォルトの名無しさん
22/03/22 14:03:10.79 l3SAD7eYM.net
>>455
元のデータが 1, -2 ってなってるところを 1, 2 (←赤文字) で入力されてるんだろ
>>454
if Cells(行,列).Font.Color = RGB(255,0,0) Then ...
で判断できるよ
データ書き換えていいなら(てか、個人的にはそうすべきと思うが)
For C In ActiveSheet.UsedRange
If C.Font.Color = XlRgbColor.rgbRed And IsNumeric(C.Value) Then
C.Value = -C.Value
C.Font.Color = XlRgbColor.rgbBlack
End If
Next
として、一気に書き換えちゃうのがいいかも

469:デフォルトの名無しさん
22/03/22 19:08:50.48 Gjrul4fP0.net
>>456
流石に仕事場のPCを勝手に買い替えるのは私には出来ませんし、
最終的にフィルター等の処理は使用せずにかなりの高速化をはかることが出来ました。
この方式が最速ではないかも知れませんが、
今までADO接続でSQLを実施して
2~3分掛かっていた処理が一瞬で終わるようになったので満足しています。
今まで質問に答えて頂いた方、色々参考にさせていたきました。
ありがとうございました。

470:デフォルトの名無しさん
22/03/22 20:15:28.30 WUXZwGEtd.net
>>454
やはりVBAは不要
オートフィルターのフォント色で絞り込み、subtotal関数で十分

471:デフォルトの名無しさん
22/03/22 23:22:39.90 VOPCLAbN0.net
本当にド素人なのでお許し下さい
ここに3枚の請求書(Excelデータ形式)があり、それぞれsheet1、sheet2、sheet3にあります
フォーマットはバラバラで文字や配置が異なります
これをsheet4で「支払日」「取引先名」「取引内容」「税込金額」を一覧表にしたいのです
こういうことはVBAでは可能でしょうか?
可能であれば、難易度はどの程度でしょうか?
*実際には請求書は数百枚あります

472:デフォルトの名無しさん
22/03/22 23:26:23.97 b3mXLXMM0.net
>>463
フォーマットが統一されていれば、vbaでやる意味はある
フォーマットが統一されていない場合、vbaで書く意味がほとんどない。手作業でコピペするのと変わらん

473:デフォルトの名無しさん
22/03/22 23:26:42.94 b3mXLXMM0.net
かわらん、と言ったけど手作業でコピペする方が早いわ

474:デフォルトの名無しさん
22/03/22 23:43:05.71 6kcI/g5C0.net
>>461
そのフィルターが処理するために、
全データをメモリに載せようとするから、メモリ不足でフリーズする
20万件 * 100項目 = 2千万項目, 20,000,000
仮に、1つの項目が1KB とすると、
20,000,000 KB = 20,000 MB = 20 GB
メモリに載せられないから、フリーズする
ファイルの読み込みと同じ。
20GBのファイルを一度に全部読み込めない
部分的な読み込みにしないと無理
例えば、1MBずつ読み込んで処理して、そのデータを捨てるとか。
これなら、1MBしかメモリを使わない
でも、この方法では、全データをソートしたりできない。
自分で実装できないから、結局、データベースを使うしかない

475:デフォルトの名無しさん
22/03/23 00:15:35.00 HTP/aspP0.net
>>461
せめてどうやったかぐらい書けよ
つかエクセルからエクセルブックにADOでSQLとか、余計なオーバーヘッドで遅くなるイメージしかないんだがな
それで高速化できるようなケースがあるのか?

476:デフォルトの名無しさん
22/03/23 00:34:00.08 3vbjDh2k0.net
。。同志達は例の追加された新しい関数の情報つかんでいるよね?
なんだか凄そうな予感

477:デフォルトの名無しさん
22/03/23 01:05:25.56 MTKAae3e0.net
ワークシート関数の追加のニュースなら見たけどVBAにも何か追加されるん?
URLリンク(forest.watch.impress.co.jp)

478:デフォルトの名無しさん
22/03/23 05:27:44.59 kSdTSG5d0.net
>>466
なるほど、一度メモリに全て載せるようにするからフリーズするかのごとく重くなるのですね。
EXCELに割り当てられるメモリがどのくらいなのかは分かりませんが、納得です。
ありがとうございます。

479:デフォルトの名無しさん
22/03/23 05:59:20.73 kSdTSG5d0.net
>>467
最終的にはその重いシートを使用する場合にはADOを使用するのをやめました。
代わりに、>>397の人が教えてくれたような技法を使うようにしました。
正確には本来、プライマリキーが設定されるような最も検索後の件数が少なくなるような項目の列をFindで検索して、
その際に検索された値が入っている行の、別項目で最も値の大きい行を取得し、その行にある情報を取得するようにしました。
ADO接続ではSQLを投げられるのでかなり便利で、作成して扱う部品も統一化し易いのですが、
大量なデータを持つシートを扱う場合、或いは後に大量なデータを持つ可能性があると思われるシートを扱う場合は
都度個別にロジックを作成する必要があるという結論になりました。

480:デフォルトの名無しさん
22/03/23 06:08:26.57 +yWQsdmla.net
>>466
> 仮に、1つの項目が1KB とすると、
どんなデータだよw

481:デフォルトの名無しさん
22/03/23 06:19:06.78 kSdTSG5d0.net
今は完全に個別の処理としてロジックを作成していますが、Findで一番検索後の件数が少なくなる場所を検索する部分は共通部品化出来そうですね。
その内その中で更にどのように抽出するかの部分においては別関数化してリフレクションで呼び出すようにすればその部分だけ個別で行えるような気もするので、
当面の目標はそれになります。

482:466
22/03/23 09:27:45.30 znQ4kzdw0.net
>>466
>仮に、1つの項目が1KB とすると、
>20,000,000 KB = 20,000 MB = 20 GB
1つの項目が100バイトなら、2GB。
これでも、メモリ不足になる
1つのアプリは普通、100MB ぐらいまででしょ?
数百MBも使えるアプリは無いでしょ?
使用メモリの制限を外さないと無理じゃないの?

483:デフォルトの名無しさん
22/03/23 09:46:29.99 KFrQJBSS0.net
メモリの制限に達するとストレージ、仮想メモリ使うよ・・・何を言ってるんだ・・・

484:デフォルトの名無しさん
22/03/23 09:50:01.23 MR2jKSYA0.net
>>474は後で恥ずかしい思いするぞ
それとも過去の人か

485:466
22/03/23 11:39:32.08 znQ4kzdw0.net
Java とか、VM のメモリ不足で落ちるとか?
デフォルトのメモリ割り当て設定が少ないからとか、聞いたけど
各アプリには、そういう設定があるのでは?

486:デフォルトの名無しさん
22/03/23 11:43:25.55 KFrQJBSS0.net
テキトーすぎでは

487:466
22/03/23 11:45:19.28 znQ4kzdw0.net
例えば、2GB のメモリに、Windows 10 をインストールしたら、
1クリックの動作に、1分掛かるので、全く使えない
仮想メモリとか、ほぼ意味ない。
遅すぎる
ドンキの格安PC とかも、そう

488:デフォルトの名無しさん
22/03/23 11:49:59.54 KFrQJBSS0.net
質問者のPCの中身が分からないのになんでどうでもいい豆知識披露してるんだw

489:デフォルトの名無しさん
22/03/23 11:50:45.45 nUwfSeaH0.net
2Gでも1クリックに1分とかはかからないのでは?
win10とそっくりなwin 2019 serverが
2core メモリ1Gでも、
ああもっさりだけどまぁ普通にマウス操作できるなぁ、
ぐらいには動くし。

490:デフォルトの名無しさん
22/03/23 12:06:56.65 jxCik/Tkr.net
句読点の使い方とかからして関わっちゃいけない人だとわかる

491:466
22/03/23 12:22:53.98 znQ4kzdw0.net
CPU がセロリンだからかも
メモリ2GBぐらいのPC は、CPUも安物だから、1クリック1分ぐらい掛かる

492:デフォルトの名無しさん
22/03/23 12:52:02.64 bsuIYc5Za.net
>>474
よくわからないのでExcelでの検証方法と結果を出してくれないか?

493:デフォルトの名無しさん
22/03/23 14:41:23.04 3vbjDh2k0.net
同志達はケッコー上等なパソコン使っているイメージだがどうなの??

494:デフォルトの名無しさん
22/03/23 15:29:25.74 TpwnHNL9M.net
パフォーマンスが必要ならDB使えばいいのよ

495:デフォルトの名無しさん
22/03/23 18:26:48.33 PWl/OlCpM.net
社用PCってのは基本10万未満に抑えないと固定資産化して面倒だからそこまでスペックが高くないんよ
それこそ自社でPC作ってる会社でも未だにメモリ4GB以下だのCore i3だのが当たり前なぐらい

496:デフォルトの名無しさん
22/03/23 18:30:41.97 TpwnHNL9M.net
i3なんて贅沢な

497:421
22/03/23 19:13:52.79 kSdTSG5d0.net
今更i5の1.6Gでメモリ8Gなんて言えない・・・ー

498:デフォルトの名無しさん
22/03/23 19:39:45.28 Jy3nut2I0.net
そのスペックでその程度のデータ処理でそんなに時間がかかるのは明らかに何かがおかしい
確実に変なことをしている

499:デフォルトの名無しさん
22/03/23 20:00:19.51 TpwnHNL9M.net
ADOのExcel Driverなんておもちゃに決まってんでしょ
上っ面の体裁整えただけ

500:デフォルトの名無しさん
22/03/23 21:28:40.17 nUwfSeaH0.net
今のPC平均てi8700 or Ryzen2600くらいじゃないんかいな?
2.4から3.5Ghz の6-12コアあたりが多いやろ。
3-4年前のマシン。
ややいいと4Ghz の12-16コアくらいでしょ。

501:デフォルトの名無しさん
22/03/23 22:55:53.13 KFrQJBSS0.net
SSDかHDDか
問題はここだけだ
変なエクセルファイル作る人は、どれだけPC性能よくてもいずれ詰む

502:デフォルトの名無しさん
22/03/24 01:29:04.78 y95b8UUh0.net
つかアーカイブドライブが大きな1-2T程度のSATASSDで、CやDの2つくらいが500-1TのNVMeなんじゃないの
HDDなんかは半年に一度みるかもなデータでもない限り使わないと思うけどな。
内蔵にHDDなんかあったら存在だけで使ってなくてもめっちゃ遅くなるし。

503:デフォルトの名無しさん
22/03/24 02:30:52.55 Rmqc3Mmn0.net
>>494
馬鹿は黙っていればいいのに

504:デフォルトの名無しさん
22/03/24 03:16:35.71 ECMUHWnp0.net
ゲーミングPCの恩恵受けたいです。
派でなキーボードで

505:デフォルトの名無しさん
22/03/24 12:17:51.66 vEIStuKr0.net
20万x100の中から最大値求めたいなら
1万x100ずつ読みだして最大値20個比較するのが一番早いんでねーの?

506:デフォルトの名無しさん
22/03/24 13:05:59.63 5Ha8a+Lla.net
>>497
なぜそれで速くなると思った?

507:デフォルトの名無しくん
22/03/24 14:49:33.59 MIQ/3HwW0.net
分割処理は面倒なようで低スペックには限界を回避し優しい

508:デフォルトの名無しさん
22/03/24 15:52:30.97 Z1gVjOVJ0.net
>>492
事務用PCだとセレロンがせいぜい
そしてエクセルは事務用ソフトやで
データベース扱わせたら即固まる

509:デフォルトの名無しさん
22/03/24 16:05:22.00 0iDW3zlua.net
数年前、外出時にexcelを使うため
windowsタブレット(atom)を、最適化してた
そこそこ使えるんだけど、
たまにすごく遅くなるから原因探ったらmdbにアクセスしてるときだった

510:デフォルトの名無しさん
22/03/24 20:19:51.61 ECMUHWnp0.net
会社はケチだから高級スペッコのパソコンを購入してくれない。
職場の古いデスクよか私物のノーパソの方がサクサク(Ryzen積んだヤツ)

511:デフォルトの名無しさん
22/03/24 20:23:26.56 /oHcKJ7o0.net
うちは全部SSDに変えたよ
i5 2400もサクサク
1万投資するだけでPCが復活するというのに、なんでみんなやらないんだろうな

512:デフォルトの名無しさん
22/03/24 21:32:40.98 XNeV8CRo0.net
儲かっている会社だけじゃないことくらい想像つくだろ

513:デフォルトの名無しさん
22/03/24 23:51:54.91 3J8f/LKg0.net
7年前に買ったi7のLavie。
何かメチャクチャ重いので中見てみたら
メモリが4G。そして当たり前のようにHDD。
メモリは買い換えて16G積んだけど
それでも立ち上げはなぜか遅い。
それ以来もうYAMADA電気では絶対PCを
買わないことを心に誓った。

514:デフォルトの名無しさん
22/03/25 01:16:28.60 XVe+E9v/0.net
さすがに、HDD は遅いでしょ

515:デフォルトの名無しさん
22/03/25 01:24:52.38 x94dfbyJ0.net
>>505
ヤマダ電機は関係なくお前が馬鹿なだけだろ

516:デフォルトの名無しさん
22/03/25 01:25:53.93 jqc8A7wc0.net
事務員が職場でゲーミングノートなんか使っていたらカオスだね
遊びに見られる

517:デフォルトの名無しさん
22/03/25 01:28:11.57 jqc8A7wc0.net
つか立ち上がりってメモリよりSSDが大きく関係しているんじゃないの?
過去にウィンドウズスレで詳しい人に教えてもらった。

518:デフォルトの名無しさん
22/03/25 01:40:28.27 p3htVTGSa.net
どうしてVBAプログラマーって、
コードの内容だけ調べて、
「はい、こうなってこうなって、こうなっています。
 なぜこうなっているのか、これ以上のことに関しては、こちらではわかりません。
 詳しい人に聞いてねー」
となるんだろう。
自分で何も動こうとしないで、
ただ VBE 開いて、コードを日本語訳して、終わり。
それで仕事した気になってるんだから笑っちゃうよ。

519:デフォルトの名無しさん
22/03/25 01:48:43.98 FbSlRBsRa.net
そういう人はプログラマーとは言わないよ

520:デフォルトの名無しさん
22/03/25 02:37:31.54 F54TZ40q0.net
どういう状況でその回答に至ったかの前提条件がないとそれが妥当な返答である可能性を否定できない

521:デフォルトの名無しさん
22/03/25 05:36:38.48 cwXcdCWcd.net
>>510
ネットや書籍でも人に読ませる気のないコードやつぎはぎだらけでそもそもまともに動かないコード置いてはい終わり。ってのが多いし情報量は多いが質が悪いので質の悪い解釈が更に増えるという悪循環に陥ってる

522:デフォルトの名無しさん
22/03/25 06:16:41.66 XWaROYx+0.net
>>509
正解
>>510
「ルーチンに関しては」詳しい人に聞いてね、だよ
むしろそれ以上なんか答えてほしい事はあるのだろうか

523:デフォルトの名無しさん
22/03/25 08:31:08.17 o8BOLFr/r.net
そら「知らん」からよ
給料の範疇じゃないんだろ

524:デフォルトの名無しさん
22/03/25 10:34:06.30 1zyB+7jua.net
>>510
お前が自分で動けばいいんじゃね

525:デフォルトの名無しさん
22/03/25 11:22:36.46 ieGzCLlt0.net
>>437
民族性としか言いようがない。山本七平さんが生涯かけて取り組んだ、
「なぜ我が国はこうも組織づくりと運営ががダメダメで、暴力と数合わせによる実態のないものに陥っていくのか」っていうあれ

526:デフォルトの名無しさん
22/03/25 12:05:26.87 jqc8A7wc0.net
本当にできる人はネットとか何も見ないでスラスラとコード書ける人だと聞いた。
なかなかいないと思うけど。

527:デフォルトの名無しさん
22/03/25 12:13:20.83 gLxuAzS/r.net
VBAは大体ググるわ
普段いじらんし構文まで覚えてないし独特な部分も多いし

528:デフォルトの名無しさん
22/03/25 12:38:22.10 dRfv/AP1a.net
ググる人はできない人なのかw

529:デフォルトの名無しさん
22/03/25 12:55:56.28 378bs0UD0.net
>>510
それはVBAに限ったことじゃないよ。
VBA使う人だってモデリングしてクラスの構成やらインターフェースとかどう使って行くか考えてから作る人もいるし、
Javaや.Net使っている人でもその場凌ぎの平べったいコード書く人もいる。
むしろ何がどうなってそのような結果となるのかは、VBAやってる年寄り連中の方が
今ある便利な部品ばかり使うことじゃなく、もっとハードよりな理屈を知ってる人(ついでにCやC++、アセンブラ等も経験している人)が多いだろうから
一概にその理屈では片付くものでもないよ。

530:デフォルトの名無しさん
22/03/25 13:23:03.47 rDRC/qkL0.net
>>510
どう考えてもそれ以上は「プログラマー」の仕事じゃないわけですが
業務分担外の仕事まで無理やりやらせるブラック会社の人ですか?
責任範囲外のことを要請されても困るわけですが

531:デフォルトの名無しさん
22/03/25 13:44:09.14 nD4Ua/6EF.net
会社のパソコンは底辺スペックが
多いからできるだけ配列必須

532:デフォルトの名無しさん
22/03/25 14:15:40.45 ogVYp57ed.net
ここで質問してくる人はプログラマと呼ぶにはどうかと思うスキルだという認識だし
>>510みたいな答え返してくる奴が自分の職場にいたらっていうかこんなやついないけどw

533:デフォルトの名無しさん
22/03/25 16:09:31.18 dbWOzFn0a.net
そもそもどうしてそういうプログラムになっているか、
どうしてそういう条件文になっているか、
わからなければ、
チームリーダーやマネージャーに聞けばわかるかもしれないし、
チームリーダーやマネージャーは、主査に聞けばわかるかもしれない。
主査は、わからなかったとしたら、そういう仕様でやっていると
クライアントに説明できる。
クライアントからオペレーターに問合せが入って、
オペレーターからプログラマーに問合せがきた場合は、
プログラマーとしては、チームリーダーやチームメイトに聞くのが筋。
それをめんどくさがって、コードだけ読んで、条件文を和訳して
オペレーターに回答するだけのプログラマーって、どうなの。
オペレーターからすれば、まさかの異次元回答をくらった思いになる。
そうじゃなくて、こういう場合どう対処すればよいか、
関係者に聞いてほしい、でも関係者


534:がわからないから、 唯一わかっている身近なプログラマーに聞いている。 そういう話だと思うんだけどなあ。 絶対いいたいこと説明できてない。 さすが俺。



535:デフォルトの名無しさん
22/03/25 16:25:13.86 qqk/wS7c0.net
前任が作ったコードをよくわからず使っているが、変な挙動があった
VBAかけるやつに聞いてみたら……
だとオレは思うけど

536:デフォルトの名無しさん
22/03/25 16:55:04.11 8xCVgHwf0.net
PGやSEを抱えていない職場で業務改善の一環としてワンオペで誰かが作ったものは仕様書すら作られてない時も少なくない
コーティング規約もないから中身が無法地帯なんてのもあるある

537:デフォルトの名無しさん
22/03/25 17:11:26.32 378bs0UD0.net
>>525
あー、そういうことね。
でもやっぱりそれはVBAがどうのではないよ。
要件定義、基本設計、詳細設計に携わっていて
仕様を押さえているかだもの。
つまり、>>527の人が言うように
PGと言うよりはSEのお仕事。
そしてここはVBAのスレだから
PGにそういうこというのはお門違いだし
このスレからしてみてもスレ違い。
で、VBAやってる人が仕様を押さえて
いないというのはそれこそ偏見だよ。
むしろちっちゃいツールばかりなんで
押さえ易いしね。

538:デフォルトの名無しさん
22/03/25 17:20:12.47 rDRC/qkL0.net
>>525
それはオペレーターが直接プログラマーに聞いてるのがおかしい
つか関係者わからんオペレーターがプログラマーならわかるってどんな異次元組織だよ
関係者がわからんからってプログラマーにきいてもわかるわけないだろ
ちゃんとした組織でのプログラマーの仕事と、事務員が片手間にプログラム作ったのと同じ次元で話されてもなぁ

539:デフォルトの名無しさん
22/03/25 17:30:04.98 jqc8A7wc0.net
ググってもおkなのか良かったわ
必死でヘルプ見て暗記していたのは非効率だよね

540:デフォルトの名無しさん
22/03/25 17:36:57.23 378bs0UD0.net
>>530
慣れでスラスラ書けるようにはなるだろうけど
どちらかといえばググり力の方が必要だよ

541:デフォルトの名無しさん
22/03/25 18:03:42.37 rDRC/qkL0.net
ググり方というより、公式ヘルプでの確認が大事だと思うんだが
いま公式ヘルプでさえオンラインとかいう時代だからなぁ
まあVBAの文法ていどなら暗記できるけど
エクセルのオブジェクト全部なんて暗記できる奴がいるとは思えん

542:デフォルトの名無しさん
22/03/25 18:39:02.37 ogVYp57ed.net
オペレータがプログラマに聞くって何を?w
知ってる言葉ならべてるだけなのかな

543:デフォルトの名無しさん
22/03/25 19:43:12.04 RqRNte220.net
要求通りの動作をするコードが書ければできるやつだろ
検索しようが、他人に聞こうが何も見ないで作ろうが関係ないよ

544:デフォルトの名無しさん
22/03/25 20:11:44.87 XWaROYx+0.net
>>534
それだとエラーチェックとかどうでも良くなってしまう
使い捨てのスクリプトならともかく、その言い方はさすがに意識が低すぎる

545:デフォルトの名無しさん
22/03/25 20:12:25.07 /GQ4L54F0.net
納期を守ってちゃんと動く
結果がすべて
検索だろうがコピペだろうが関係ない


546:



547:デフォルトの名無しさん
22/03/25 20:40:46.85 jqc8A7wc0.net
さっき会社の上司とたまたまそういう話したけど、やっぱ何も見ないでスラスラとコード書けるヤツいたら貴重だから重宝するって言っていた。
ただ、そういう人ほど初歩的なミスに気がつかないとも。

548:デフォルトの名無しさん
22/03/25 20:44:28.64 ogVYp57ed.net
>ただ、そういう人ほど初歩的なミスに気がつかないとも。
こんな話はないわ
たまたまそういう人としか仕事してないだけ

549:デフォルトの名無しさん
22/03/25 20:57:16.02 uzupo3Jn0.net
飯島 彩矢
いいじま よした

550:デフォルトの名無しさん
22/03/25 21:03:49.94 2zbf95kya.net
>>535
???
要求通りなんだから要求にエラーチェックが入ってたら当然実装するだろ

551:デフォルトの名無しさん
22/03/25 21:21:49.50 UnnJynAs0.net
エクセルのクエリで、一つのファイルにある複数のシートから、たとえば1つ目から4つ目のデータ(1000行くらい)を1枚目を1から4、2枚目を5から8に転記していくにはどのような設定でやればいいでしょうか

552:デフォルトの名無しさん
22/03/25 21:22:42.56 8eXyKRPB0.net
どうしよう、>>541の言っている意味が分からない…

553:デフォルトの名無しさん
22/03/25 21:26:08.92 4vyR1Miw0.net
おらも分からん

554:デフォルトの名無しさん
22/03/25 21:26:33.02 378bs0UD0.net
>>537
まぁちっこいツールとかならそうかもね
ある程度大きくなったら後々のメンテナンスのし易さとか、テストの工数をどうやれば減らせるかとか
最初の内に構成練り込んで考えて作るから、いくらスラスラ組めてもその辺がすっぽ抜けてると
後々手を加えるごとに分岐だらけのスパゲッティコードになって行くことが多いんだよね

555:デフォルトの名無しさん
22/03/25 21:28:20.55 UnnJynAs0.net
>>542
えーっとですね
例えばシート1の1から4つめにA,B,C,Dってデータがあるとします
シートの1から10まであって、
それを一つのシートの1箇所に横に並べたいんです

556:デフォルトの名無しさん
22/03/25 21:32:43.40 378bs0UD0.net
>>541
スピード重視でなければこの間からここで色々言われてたADO接続使ってSQLでレコードセットに値取得してそのままシートに貼り付ければいいんじゃない?
ヘッダがいるなら最初から書いとくか、レコードセットから取得するなら別ロジックが必要だけど

557:デフォルトの名無しさん
22/03/25 21:34:59.71 UnnJynAs0.net
>>546
単発での処理なのであまりそういう複雑なのは難しいです

558:デフォルトの名無しさん
22/03/25 21:38:14.89 q+5lBwTqM.net
>>547
こんなこともわからないような馬鹿は手を出すな

559:デフォルトの名無しさん
22/03/25 21:39:37.46 UnnJynAs0.net
クエリとかの簡単な操作でデータ整理できないですかね?

560:デフォルトの名無しさん
22/03/25 21:45:45.83 378bs0UD0.net
>>549
何だろう、クエリってSQLも立派なクエリだよ?
そっちの言ってるクエリの定義が分からない。
アクセスとかにあるあのツールっぽいのを言ってるのかな?

561:デフォルトの名無しさん
22/03/25 21:46:14.94 8eXyKRPB0.net
普通にマクロの記録使ってシート1の範囲をコピーして
シート2の開始地点で貼り付けたらいいだけじゃないの…

562:デフォルトの名無しさん
22/03/25 21:47:30.56 UnnJynAs0.net
そうすると横にデータを並べていきたいので重複していきます
シート全体の数もそのときどきで変わるので

563:デフォルトの名無しさん
22/03/25 21:50:02.56 378bs0UD0.net
???
どんどん何をしたいのか分からなくなってくるね

564:デフォルトの名無しさん
22/03/25 21:51:28.75 UnnJynAs0.net
>>553
簡単に言うと、複数シートにまたがる複数列の1から4列のデータを、
1枚のシートの横に縦の行を順番に並べていきたいのです

565:デフォルトの名無しさん
22/03/25 21:56:14.91 w2X6jrV+0.net
ズコーッ !

566:デフォルトの名無しさん
22/03/25 21:56:37.17 378bs0UD0.net
>>554
本当に単純にそれだけなら
2シート目の1~4列目をコピーして
1シート目に貼り付けたあとに、
貼り付け先の列先を+4して
シート3以降、シートがある分だけそれを
繰り返せばいいんじゃないの?

567:デフォルトの名無しさん
22/03/25 21:57:03.52 qxuRWoIYM.net
ID:UnnJynAs0と一緒に仕事しなきゃいけない同僚には同情する

568:デフォルトの名無しさん
22/03/25 21:58:28.35 UnnJynAs0.net
>>556
そうなると場合によっては数百のシートを手作業でコピーしなければならないので現実出来ではありません

569:デフォルトの名無しさん
22/03/25 22:03:32.99 378bs0UD0.net
>>558
は?
手作業ってどこから出てきたの?
そういうコードを組めばいいという話をしてるつもりだったんbだけど伝わらなかったかな?

570:デフォルトの名無しさん
22/03/25 22:03:48.41 8eXyKRPB0.net
手作業でコピーしなければならない んじゃなくて
ループでそれぞれのワークシートを参照 したらいいじゃん
>>556 は 「手作業で」 なんて一言も書いてないよ

571:デフォルトの名無しさん
22/03/25 22:05:38.52 UnnJynAs0.net
>>560
どうすればそれができますか?

572:デフォルトの名無しさん
22/03/25 22:06:11.03 UnnJynAs0.net
エクセルの方のクエリでは縦に連結されて出てきたのでやり方を教えて下さい

573:デフォルトの名無しさん
22/03/25 22:08:44.67 378bs0UD0.net
>>562
いや、そもそもそれだけの処理ならクエリなんて必要ないでしょ

574:デフォルトの名無しさん
22/03/25 22:12:12.99 8eXyKRPB0.net
>>561
Worksheets.Count でシートの数を持ってこれるから
Worksheets(n)  ※nは1始まり  でそれぞれのワークシートを参照できるから
後はループの中で >>556 の言う通り行番号を加算しながら貼り付けするなり参照貼るなりすればできるよ
俺はもうここまで伝えるので限界

575:デフォルトの名無しさん
22/03/25 22:15:02.86 UnnJynAs0.net
>>563
すみません、パワークエリのことです
プログラム組んだりとかはできません

576:デフォルトの名無しさん
22/03/25 22:15:06.77 UnnJynAs0.net
>>563
すみません、パワークエリのことです
プログラム組んだりとかはできません

577:デフォルトの名無しさん
22/03/25 22:23:46.18 4vyR1Miw0.net
>>554
もしかしてPower Queryで言うところのマージをしたいの?
複数シートに共通する、keyとなる列が1つあれば出来るけど。

578:デフォルトの名無しさん
22/03/25 22:39:41.75 UnnJynAs0.net
>>567
複数シートの配列は同じで、データの内容だけがちがいます

579:デフォルトの名無しさん
22/03/25 22:44:11.29 3hBoOPeGa.net
>>565
来る板間違えてる
> ローカルルール
> この板はプログラムを作る人のための板です。
こっちへ行け
【Excel】Power Queryを語るスレ【Power BI】
スレリンク(bsoft板)

580:デフォルトの名無しさん
22/03/25 22:44:52.03 4vyR1Miw0.net
>>568
縦軸となる共通するkey列はなに?
何の順番で行が並んでるの?

581:デフォルトの名無しさん
22/03/25 22:58:31.64 UnnJynAs0.net
>>569
ありがとうございます

582:デフォルトの名無しさん
22/03/25 22:58:38.87 378bs0UD0.net
なんだ、Power Queryか。
いい機会だからVBAも勉強してってくれ

583:デフォルトの名無しさん
22/03/25 22:59:53.49 378bs0UD0.net
Sub hoge()
Dim targetSheet As Worksheet
Dim bottomRow As Long
Dim toPasteColumn As Long
Dim isFirstTime As Boolean
isFirstTime = True
toPasteColumn = 1
With ThisWorkbook
If .Sheets.Count = 1 Then
Exit Sub
End If
For Each targetSheet In .Worksheets
If Not isFirstTime Then
targetSheet.Activate
bottomRow = targetSheet.Cells(targetSheet.Rows.Count, 1).End(xlUp).Row
targetSheet.Range(targetSheet.Cells(1, 1), targetSheet.Cells(bottomRow, 4)).Copy _
Destination:=Sheets(1).Cells(1, toPasteColumn)
toPasteColumn = toPasteColumn + 4
End If
isFirstTime = False
Next
End With
End Sub

584:デフォルトの名無しさん
22/03/25 23:02:44.53 378bs0UD0.net
うん、やっぱりインデントつぶれたね。
これで動くはずなので良ければVBEに張り付けて実施してみて。
最初のA列がキーであることが前提だけども。

585:デフォルトの名無しさん
22/03/26 00:22:2


586:2.08 ID:wN9O5mc/0.net



587:デフォルトの名無しさん
22/03/26 00:30:29.64 3d/IeTqK0.net
Sub aaa()
  For bbb = 0 To 0
    If ccc = 0 Then
      ddd = eee
    End If
  Next
End Sub

588:デフォルトの名無しさん
22/03/26 01:25:30.54 x5oh4kDTa.net
ツールの利用者から、ツールの改修担当者に問合せがいったんでしょ。
改修担当といっても、前任者から引き継いだだけだから、全ての仕様はわかっていない。
現在の業務にそぐわない仕様があって、エラーが出たから、
利用者が改修担当者に問合せ。
前任者なら「もともとこういう仕様です」と答えれば、
「ああ、それなら業務が変わったから改修が必要だな」と
改修依頼を出せる。
ツールの利用者も着任して間もない人の場合、
業務が変わったのかどうかもわからない。
そういう場合、ソースコードの条件文を日本語にして
回答するのではなくて、
昔から存続しているチームの誰かに聞くのが普通。
それをしないのは職務怠慢。
自分一人で売上を引っ張ってこれていると勘違いしているのかな。

589:デフォルトの名無しさん
22/03/26 06:35:02.37 4/mAEYCl0.net
>昔から存続しているチームの誰かに聞くのが普通。
>それをしないのは職務怠慢。
つまりそれをしないで改修担当者に聞いてるやつが悪いってことだな

590:デフォルトの名無しさん
22/03/26 10:14:46.58 p8/YoqyTd.net
ここって長文で講釈を垂れる人おおいよね
しかもVBAにはまったく無関係という

591:デフォルトの名無しさん
22/03/26 12:35:46.08 OVfO91qG0.net
自力でできないのに調べない、人に聞かない、期待されているのものがつくれないのは できない人 としか言いようがない

592:デフォルトの名無しさん
22/03/26 15:44:49.86 wN9O5mc/0.net
時には長文になるのは仕方ないよ。
丁寧に説明するばそうならね?
上の方で個人名みたいの書いてるアレな人いるけど今の5ちゃんて個人名書いただけでNGじゃなかったか?

593:デフォルトの名無しさん
22/03/26 16:02:36.43 1KsbV4Zma.net
個人名NGの規制ってあるのか?
WindowsやLinux板とかでは機能していないように見えるけど

594:デフォルトの名無しさん
22/03/26 17:07:43.61 kCwfN6Gy0.net
個人名というか個人情報な
通報されたら警察来るかな

595:デフォルトの名無しさん
22/03/26 17:58:02.51 wN9O5mc/0.net
昔バイトしていた居酒屋のマスターが5ちゃんに実名晒されて誹謗中傷書かれていたのを思い出してさ。

596:デフォルトの名無しさん
22/03/26 18:09:02.02 Gn2xNTk6p.net
>>577
> 昔から存続しているチーム
そんなのは跡形もないから

597:デフォルトの名無しさん
22/03/26 20:17:20.58 wN9O5mc/0.net
職務怠慢は言い過ぎでは?
何かしらの事情あるだろうし。

598:デフォルトの名無しさん
22/03/26 23:22:10.99 lmdSWMnfa.net
dim ki as string
ki = "まあいろんな事情があるよね"
ki = ki & "チームメイトに嫌われていて聞きづらいとか"
dim shou as string
shou = ki
shou = shou & "「こんなことくらいしかわからなくて、すみません」と謝られても"
shou = shou & "お前がそんなことしかわからないことは、百も承知。"
shou = shou & "誰かに回してくれることも見込んでの質問なんだけど、"
shou = shou & "ってね。"
dim ten as string
ten = shou
ten = ten & "プログラマーは基本、自分ひとりで仕事完結して、周りに電話したりメールしたりチャットしたり、"
ten = ten & "という連携は面倒くさがる人が多いからね。"
ten = ten & "コーディングされていないことは、できませんが何か? みたいな"
ten = ten & "職務はここまで。これ以上はできませんが何か?みたいな"
dim ketu as string
ketu = ten & "ロボットみたいな人が多い。"

599:デフォルトの名無しさん
22/03/26 23:52:13.63 4I5liEUu0.net
何?
この気持ち悪いスレ・・・・・・

600:デフォルトの名無しさん
22/03/26 23:57:27.46 zJILPsYJM.net
>>587
汚いコードだな、そんな代入の仕方じゃ変数を4つ用意した意味がまったくないじゃん
そういう時は最後に足すんだよ
Dim DeathStory As String
DeathStory = ki & shou & ten & ketu

601:デフォルトの名無しさん
22/03/26 23:58:14.85 zJILPsYJM.net
>>588
そっ閉じすりゃいいのに、そんなスレに何か書き込んでる時点で同類

602:デフォルトの名無しさん
22/03/27 03:21:42.29 hNNvtCzu0.net
深夜になると定期的に変な書き込みあるよね

603:デフォルトの名無しさん
22/03/27 03:29:36.79 /OZccBd9M.net
>>591
自己紹介かよ!

604:デフォルトの名無しさん
22/03/27 07:40:40.82 BqsGdBXW0.net
>>587
無駄に
変数 = 変数 & 文字列 をやると
その分余計にメモリを使用する。やり直し。

605:デフォルトの名無しさん
22/03/27 09:48:21.10 8deA3KtJa.net
そもそも >>587 だと
"まあいろんな事情があるよねチームメイトに嫌われていて聞きづらいとか「こんなことくらいしかわからなくて、すみません」と謝られてもお前がそんなことしかわからないことは、百も承知。誰かに回してくれることも見込んでの質問なんだけど、ってね。プログラマーは基本、自分ひとりで仕事完結して、周りに電話したりメールしたりチャットしたり、という連携は面倒くさがる人が多いからね。コーディングされていないことは、できませんが何か? みたいな職務はここまで。これ以上はできませんが何か?みたいなロボットみたいな人が多い。"
ってなるし、適宜 vbCrLf 挟めや

606:デフォルトの名無しさん
22/03/27 10:09:59.57 GXS4gvi+M.net
>>594
読んでないけど読む価値のないレスであることだけは判る

607:デフォルトの名無しさん
22/03/27 10:21:55.52 dieR0oCra.net
↑ どこを読めばいいのかもわからんアホw

608:デフォルトの名無しさん
22/03/27 10:33:27.62 jqHr+5yx0.net
最初と最後の行しか読んでないけど
スペースも改行もつかないって突っ込みだって事だけは判る

609:デフォルトの名無しさん
22/03/27 10:56:36.33 hNNvtCzu0.net
ようは字下げしないと読みにくいって教えてくれたんですね親切な人。

610:デフォルトの名無しさん
22/03/27 11:49:34.86 17nxG3290.net
>>593
そうなのか
賢くなった
でもいつものクセでSQL文はこの式で書いているわ

611:デフォルトの名無しさん
22/03/27 12:17:45.42 CPBl4WFea.net
>>597
それで十分、てか最後の行読んだらわかるだろ

612:デフォルトの名無しさん
22/03/27 12:19:46.20 CPBl4WFea.net
>>599
まあ高々数十行位なら気にすることはないよ

613:デフォルトの名無しさん
22/03/27 12:41:21.31 cPay0R1J0.net
誰かSalseforceのAPIをVBAでたたく方法わかる人いませんか?
API関連に関して全く無知で、何をどうしていいのか、、、
詳しい人教えてほしいです、、

614:デフォルトの名無しさん
22/03/27 12:52:04.46 dAzXJbreM.net
字下げや改行なんてVBAでやることじゃない
印刷だろうが電子化だろうが、文書の整形は出力アプリ側に投げるもんだ
リーダー端末の画面サイズやフォントサイズなんて予測できんだろ?

615:デフォルトの名無しさん
22/03/27 13:07:11.24 OVREMJced.net
文書の整形と文書自体を一緒にしてしまうところが悲しい・・・

616:デフォルトの名無しさん
22/03/27 17:11:35.24 hNNvtCzu0.net
なんでよ?VBAの義務教育編で字下げは真っ先に学習するはずじゃ??

617:デフォルトの名無しさん
22/03/27 17:22:28.69 2Abk94v90.net
年収1000万のインド人はインデントもコメントもなし
一般人はちゃんとつけよう

618:デフォルトの名無しさん
22/03/27 17:30:10.15 6akgwO9ga.net
>>602
アクセスするライブラリとAPIリファレンスを掲示してくれたら捗るんじゃね?

619:デフォルトの名無しさん
22/03/27 17:33:41.29 OVREMJced.net
>>607
APIは変に教えるとよくないと思うから
それを使って何かするような事をしたいなら正式な仕事なりで発注させるべきだと思うぞ
そもそも何もわかってない奴がここで質問してるのもおかしな話だろ

620:デフォルトの名無しさん
22/03/27 17:34:17.13 OVREMJced.net
スクレイピングもたまに質問するやつがいるけど
それも同じな

621:デフォルトの名無しさん
22/03/27 17:50:20.50 ob1ESvJwH.net
>>609
VBA でのスクレイピングはイマイチですねえ、動いたり動かなかったりするし、なにかいい方法はないものか?
Function ScrapingAlgoA003(objIE As InternetExplorer, url, keyword As String)
objIE.navigate url
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Dim ReturnValue As Double
Dim div As HTMLDivElement
For Each div In htmlDoc.getElementsByClassName(keyword)
ReturnValue = CDbl(div.innerText)
ScrapingAlgoA003 = ReturnValue
Next div
Set htmlDoc = Nothing
End Function

622:デフォルトの名無しさん
22/03/27 19:02:58.02 jqHr+5yx0.net
>>600
そうだな
>>597>>595へのレスだ

623:デフォルトの名無しさん
22/03/27 19:18:00.28 7EXZAGuD0.net
>>610
VBAのスクレイピングは今だとSelenium使ったChromeのスクレイピングが主流なんじゃなかろうか
バージョン合わせるのが面倒だけど安定してるし

624:デフォルトの名無しさん
22/03/27 19:39:07.33 2Abk94v90.net
Seleniumはほんといいね
IEからxpathで・・・ってやってたのがほんとアホらしくなった

625:デフォルトの名無しさん
22/03/27 19:43:23.36 U13zJWe20.net
Seleniumは昔インストールしたんだがよくわからず
未だにIEばかり使ってるんだが もうそろそろ切り替えた方がいいのかな

626:デフォルトの名無しさん
22/03/27 19:51:02.70 7EXZAGuD0.net
昔のSeleniumはChromeの方にも拡張機能入れて…とかだった気がするけど今は事前準備も書くのも凄く簡単になってるね

627:デフォルトの名無しさん
22/03/27 19:59:57.15 2Abk94v90.net
>>614
100%切り替えた方が良い
ちょっと癖があるけど、cssセレクタ覚えればアホみたいに楽になるぞ
ちなみにXPathはしんどい

628:デフォルトの名無しさん
22/03/27 20:17:18.33 Df2KiTxu0.net
質問です。
連想配列に格納した連想配列の値を取り出すには
どうしたらよいのでしょうか?
Dim dicA as Dictionary
Dim dicB as Dictionary
dicB.Add "a",100
dicB.Add "b",100
dicB.Add "c",100
dicA.Add "A",dicB
としたとき、dicAの中のdicB("b")の値を取得したいとき
どうしたらいいのでしょうか。
Debug.print dicA("A").("b")
とかで出せるかと思ったのですが駄目でした。

629:デフォルトの名無しさん
22/03/27 20:19:01.83 uW5IEa4H0.net
set TikuB = dickA("A")
Tikubi("b") = bibibibibi-----

630:デフォルトの名無しさん
22/03/27 20:22:07.59 EN8vWua40.net
>>610
For EachなのにIfで条件指定しないのか

631:デフォルトの名無しさん
22/03/27 20:29:11.49 hNNvtCzu0.net
乳首エロい

632:デフォルトの名無しさん
22/03/27 20:31:09.02 BqsGdBXW0.net
>>617
よく分からんのだけど、Dictionalyって
型宣言しただけで使えるの?
普通に考えると、
Set dic A = New Dictionaly
Set dic B = New Dictionaly
とか、必要そうに見えるけど。

633:デフォルトの名無しさん
22/03/27 20:33:33.24 BqsGdBXW0.net
おっと、Dictionalyのスペルが違ってるか
Dictionaryかすまんこ

634:デフォルトの名無しさん
22/03/27 20:45:16.14 Df2KiTxu0.net
元の文と違いますが解決しました。
ありがとうございました。
Sub foo()
Dim dicA As Dictionary: Set dicA = New Dictionary
Dim dicB As Dictionary: Set dicB = New Dictionary
Set dicA("A") = dicB
dicA("A")("a") = "test"
Debug.Print dicA("A")("a") 'test
End Sub

635:デフォルトの名無しさん
22/03/28 01:22:22.67 LEJNBveMa.net
("A")

636:デフォルトの名無しさん
22/03/28 02:04:12.07 dJWBHkZn0.net
(:; U: ::)

637:デフォルトの名無しさん
22/03/28 07:56:32.13 bggr0gZp0.net
Selenium Webdriver と、
Chrome の拡張機能・Selenium IDE の2種類ある

638:デフォルトの名無しさん
22/03/28 07:57:45.06 W5FkPi4A0.net
Selenium Webdriver

639:デフォルトの名無しさん
22/03/28 12:34:55.90 DkLhkvc4M.net
ウェブダイバー

640:デフォルトの名無しさん
22/03/28 13:29:17.84 9Kb03WZY0.net
ウェブダイバーはカラオケで歌うぞ

641:デフォルトの名無しさん
22/03/28 18:29:52.50 jKre83rL0.net
>>623
今更だけど
Dim dicA As New Dictuonary
みたいに普通に1命令で設定しなかったのは何故?

642:デフォルトの名無しさん
22/03/28 18:47:34.87 2Ad/srHwa.net
横からだけど
For ...
Dim D As New Dictionary
...
Next
ってやると最初の一回しかNewしないから常に
Dim D As Dictionary: Set D = New Dictionary
ってやる人はいるみたい

643:デフォルトの名無しさん
22/03/28 18:55:38.23 jKre83rL0.net
>>631
いやいや、ループでそれぞれ別インスタンスとして使うにしても、定義は1回でNewするのが複数回で済むでしょ。
例えば上のレスのようにDictionaryにDictionaryを格納する場合でもDictionaryにしまった時点で参照は渡されるんだから消えないし、
その後、Newしてまた渡してやればインスタンスはまた別物として扱われるよね。

644:デフォルトの名無しさん
22/03/28 19:07:54.06 AcTRGxgL0.net
コードで語ればいいのに

645:デフォルトの名無しさん
22/03/28 19:46:09.16 W5FkPi4A0.net
>>630
知らなかっただけじゃないか

646:デフォルトの名無しさん
22/03/28 19:46:21.63 jKre83rL0.net
>>633
Sub hoge()
Dim dic1 As Scripting.Dictionary
Dim dic2 As Scripting.Dictionary
Dim itemCounter As Long
Set dic1 = New Scripting.Dictionary
For itemCounter = 0 To 3
Set dic2 = New Scripting.Dictionary
dic2.Add 0, "fuga" & CStr(itemCounter)
dic1.Add itemCounter, dic2
Next
For itemCounter = 0 To 3
Debug.Print dic1(itemCounter)(0)
Next
End Sub
出力結果:
fuga0
fuga1
fuga2
fuga3
dic1の中にdic2を入れてるけど、dic2の変数自体は使いまわし。
dic2はループの中でNewされているけど、dic1の中にそのときの
dic2の参照情報が格納されているため、きちんと別の値が保持される。
つまりはそういうこと。

647:デフォルトの名無しさん
22/03/28 19:51:37.75 BH9MBdK/a.net
↑ こいつは一体何を説明してるんだろう…

648:デフォルトの名無しさん
22/03/28 19:53:39.70 nzzJclxc0.net
みんな教え方バラバラだから質問者が困ってるよー

649:デフォルトの名無しさん
22/03/28 20:06:46.75 GBAIeVpDp.net
>>636
分からないならすっこんでればいいんじゃないかな

650:デフォルトの名無しさん
22/03/28 20:07:19.86 jdteRYNZd.net
実務ではよくある話

651:デフォルトの名無しさん
22/03/28 21:12:23.25 DlrSWjY+a.net
>>637
>>617の質問は解決してるし、>>630
の質問は>>634が一番ありそうだし
困ってる質問者って誰?
>>638
そうだねw


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