Excel VBA 質問スレ Part68

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ dbda-8BP0)
垢版 |
2020/08/30(日) 11:55:27.33ID:Oy/VxFsh0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part67
https://mevius.5ch.net/test/read.cgi/tech/1593104489/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
582デフォルトの名無しさん (ワッチョイ 9f6d-sSL1)
垢版 |
2020/10/15(木) 14:36:16.06ID:sVQ5bVjI0
>>581
C#スレで恥を晒したRuby荒らしは帰れよ
2020/10/15(木) 19:36:00.91ID:GQ796pt70
簡単かどうかなんてどうでもいい。
200万件のデータをADO+SQLより速く処理できるならRuby使ってやらなくもないが。
どうなんだい?
無理ならイラネ。
2020/10/15(木) 19:54:07.37ID:hF5+vxPB0
もう時代遅れなのはわかってるけど
会社が2019に更新してまだまだ使う気満々なので
そして配布が出来ないと困る
2020/10/15(木) 21:24:39.62ID:Dg+UC/FqM
>>583
ルビ糞基地外の味方をするつもりはないけど、DBがボトルネックならRubyだろうが何だろうが速さは変わらんよ
2020/10/15(木) 21:53:38.55ID:3DKNzMNt0
俺の解釈だとこんな感じ

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
587デフォルトの名無しさん (ワッチョイ fb19-F9zC)
垢版 |
2020/10/15(木) 23:19:16.95ID:fOL5OZab0
>>562
はこのサイトかな
http://pdf-file.nnn2.com/?p=6
2020/10/16(金) 19:09:16.33ID:Hr39/iau0
>>587
多分それ。
589デフォルトの名無しさん (ワッチョイ bb5f-snog)
垢版 |
2020/10/16(金) 19:55:23.45ID:rggqlWcj0
PDFファイルの件は、マクロの記録でやるとどうなるのか、確認すればいいんじゃないの?
2020/10/16(金) 21:55:06.26ID:Hr39/iau0
なあそれ、マクロの記録をするとどうなるか確認してから言ってるのか?
2020/10/16(金) 22:07:10.71ID:9Da+1I/Z0
モチのロンだぜ
2020/10/16(金) 22:24:45.68ID:tI22s9TB0
モロのチンだぜ
2020/10/18(日) 16:09:00.37ID:SMfw56kvd
>>533
そういうことじゃねえ。
2020/10/21(水) 23:21:44.77ID:w3Ug/D8p0
https://i.pinimg.com/474x/ac/b7/a5/acb7a5babfc425b462dd6ed0983c15dd.jpg
2020/10/22(木) 03:14:09.06ID:RxEiNjgnM
こまけぇこたぁ
    いいんだよ!!
  /)
 //)  __
`/ 二つ/⌒⌒\
| ニ⊃ (●)(●)\
/\ノ|⌒(_人_)⌒|
 / > ヽニノ <
596デフォルトの名無しさん (スプッッ Sd02-4ynI)
垢版 |
2020/10/22(木) 08:49:00.24ID:8kbg1eIjd
まだVBAなんて使ってる人がいてビックリ
懐かしい言語だよね
597デフォルトの名無しさん (テテンテンテン MMe6-B6QP)
垢版 |
2020/10/22(木) 09:02:14.12ID:OZW0tgCBM
Excel2000から20年なんて家電製品なら普通ですよ
598デフォルトの名無しさん (ラクッペペ MMe6-E8a6)
垢版 |
2020/10/22(木) 12:37:02.60ID:QXcT5+jPM
Excel5.0からだよ
16ビットだよ
2020/10/22(木) 12:37:11.57ID:N0tQIHiYM
>>596
今現在Excel入ってりゃ必ず使えるのはVBAだけだから
まあ最近の言語に比べりゃ色々面倒な部分はあるけどちょっとしたツール程度ならなんとかなるぐらいの機能はあるし
2020/10/22(木) 17:17:13.81ID:8WoYrv7v0
A1に"2020/10/22"のように日付が入っています。
その日付が土曜日の場合、その月の何回目の土曜日かを調べるコードを教えてください。
2020/10/22(木) 17:41:32.24ID:V9nm7cr3M
嫌です
602デフォルトの名無しさん (ラクッペペ MMe6-E8a6)
垢版 |
2020/10/22(木) 18:23:26.36ID:jxPHtPQlM
22÷7
2020/10/22(木) 18:50:04.05ID:lPQIKdWd0
>>600
その日付は木曜日です
604デフォルトの名無しさん (ワッチョイ e1d2-o8Qw)
垢版 |
2020/10/22(木) 18:56:20.17ID:CJ3HroyY0
int((日-1)/7+1)
2020/10/22(木) 19:08:32.49ID:XgRR6MjRa
days
2020/10/22(木) 20:00:05.75ID:Nlv/Qw7G0
>>596
ここでRuby教を広めようとしても無駄ですよ
2020/10/22(木) 20:38:01.04ID:RiQFyYLuH
>>599
そうそう、それに win32api のほとんどを呼び出すことができるんですよね
2020/10/22(木) 20:54:38.55ID:EVMbdUMSM
〉〉604
ありがとうございます
2020/10/22(木) 21:21:26.60ID:hm8FUbN60
いつものあいつか
610デフォルトの名無しさん (ワッチョイ d163-MACq)
垢版 |
2020/10/22(木) 22:49:46.23ID:kity+iCG0
FileSystemObjectの参照設定

VBAの中でできないのかな?
2020/10/23(金) 00:04:14.15ID:1WodYwaj0
エディタの支援が不要ならCreateObjectでええやん
2020/10/23(金) 00:50:10.47ID:g9AT+l9rd
>>610
出来る。
613デフォルトの名無しさん (テテンテンテン MMe6-B6QP)
垢版 |
2020/10/23(金) 01:26:42.51ID:ykqFrr6rM
>>610
出来ない
2020/10/23(金) 02:25:13.53ID:YKSIT3mga
>>610
出来まい
2020/10/23(金) 02:48:18.20ID:bmMgVHIId
競馬のオッズの取り込み教えて欲しい。
2020/10/23(金) 08:33:21.77ID:TKI7l+v40
複数のセルに纏めて背景色を付けたい場合についてです
指定のセルは離れているためRangeで範囲選択では済ませられないです
Unionを使用するのも手ではありますが動作速度に影響を及ぼすので最終手段としたいです

そこで背景色をつけるセルのAddressを取得して一次元配列に格納し
.Range(Join(Array, ",")).Interior.CoIor = CLng("&H00FAFAFA″)
で着色しようとしたのですが、どうもこの連結方法の場合、連結数が一定数を超えるとエラー停止してしまう様です

なので何か別のアプローチはないものかと模索している最中なのですがもしよろしければお知恵をお借りしたいです
2020/10/23(金) 08:37:04.87ID:WT7JJPgTa
自分で思いつかないようなテクニカルなやり方してもあとで読む人が大変だし普通に配列ループでいいじゃん
2020/10/23(金) 09:16:49.94ID:0vnMylCPM
VBAで済む事をわざわざ他言語でやる池沼よりマシ
2020/10/23(金) 10:42:10.63ID:9+IFx01J0
>>616
一定数を超えるとエラーになるってわかっているんだから一定数を超えないようにすればいいんじゃね
2020/10/23(金) 11:02:14.72ID:TKI7l+v40
>>619
不特定多数が使用する業務のスケジュール管理をするツールで、描写したスケジュール表を平日、土曜日、日曜祝日の3パターンで着色する必要があるんですけど、業務期間が長いとどうしても超えてしまう場合が発生するんですよね
業務期間に制限を設けるわけにもいかないですし
配列に格納してんだからループで一定数おきに着色ってのも考えたんですけどUnionより遅くなるっぽいんで最適化を諦めてUnionで繋げちゃうかーって思ってはいるんですが、その前にここで聞いてみて何かヒント貰えたらなーと
2020/10/23(金) 12:29:02.31ID:u/a/wHRt0
あまり編集をしないのであれば、条件付き書式で勝手に色がつくようにするとか
2020/10/23(金) 13:40:00.08ID:DQVFwAwV0
>>616
Join(Array, ",") ← こいつがエラー起こすって感じなの?
String 型は最大20億文字数らしいね
あるいは.Rangeが受け付けないのか

一応ググってみるとRangeの引数は255文字までというのが出て来る
これに引っかかってるんじゃねえの
2020/10/23(金) 13:51:36.68ID:DQVFwAwV0
>一次元配列に格納し

これでループ回したところで体感できるような速度差は出ないと思うがな
むしろRange内の文字列引数処理のほうが時間食われるんじゃないかと
Union・・・どんなもんだろねぇ
2020/10/23(金) 13:51:42.41ID:TKI7l+v40
>>622
なるほど
引数上限の255文字が原因っぽいですね
んー……そうするとやっぱり複数範囲をカンマ区切りでーは上限が発生しちゃいますよねぇ
2020/10/23(金) 14:36:51.59ID:ITa0Mrx5M
255件程度ならどんな方法でもさして時間変わらないのでは
screenupdating切れば一瞬で終わりそう
626デフォルトの名無しさん (ラクッペペ MMe6-E8a6)
垢版 |
2020/10/23(金) 15:36:44.43ID:wfU4S4ZzM
数秒が待てないというのはイベント駆動でもさせる気なの?
2020/10/23(金) 15:48:23.96ID:BdUYZCjc0
エクセルでマリオカートを作ります
2020/10/23(金) 18:52:38.00ID:uwgUvjOA0
エクセルでねぇ・・。
実質DirectX頼りだろう。
セル書き換えじゃ60fps出ないし。
2020/10/23(金) 19:17:52.04ID:knErP7D20
255個ぐらいで数秒もかかるのはおかしい
2020/10/23(金) 19:24:37.35ID:9+IFx01J0
ヒントならもらったろうに、あとはどう実装するかは自力で試行錯誤やればいいんじゃね
2020/10/23(金) 19:38:40.04ID:TKI7l+v40
処理範囲的には
.Range(”M11:Q1011,T11:X1011,【中略】,CF11:CJ1011“).Interior.CoIor
ぐらいです

全体で1万弱程のステップがあって他ファイルの読込やグラフの生成、データファイルの出力等があり、全体の処理時間が10秒前後なので
この処理を軽くした所で焼け石に水なのは分かってはいるんですが、
オブジェクトの操作を極力減らして動作時間を軽減したいなぁと思っています

次の操作箇所を強調する為にRange(″M20,M20″).Selectみたいな操作を使ったので、これの応用で広域処理も行けるかなぁと思ったんですがダメみたいですね
お騒がせ致しました
お忙しい中ご意見等頂きありがとうございました
2020/10/23(金) 21:25:05.79ID:9+IFx01J0
問題に取り組む姿勢がおかしい
2020/10/23(金) 21:51:10.18ID:DQVFwAwV0
>>631
>他ファイルの読込

俺はこいつが異様に遅くて困ってる
100万個ほどのデータをCSVから読ませてるんだけど6世代i5で3分、セレロンだと10分とかかかる
Lineで1行ずつ読んでるせいなんだろうけどQueryだと早いんだろうなあと思いながら面倒で手を付けてなかった
これを機にやってみるかなぁ
実際相当早くなるもんかね?
2020/10/23(金) 22:37:29.74ID:jmwa0xlU0
何をやってるかにもよるがそもそも一度に全部読み込まなきゃいいんじゃね
2020/10/23(金) 23:22:27.59ID:/Kxbsbpt0
曜日の色付けなんてWEEKDAY関数と条件付き書式で良くないか?
曜日ごとに文字列記入するところはマクロにしてるけど
2020/10/24(土) 06:26:18.80ID:Uy2SF5SV0
>>634
>一度に全部読み込まなきゃ

そうやねぇ・・・
週ごとにデータを集計してんだけどいまんところ一括で読み込ませてる
常時PC立ち上がってる環境だから逐次データ吸い上げていけば一番いいんだけどそうなると小手先の変更じゃなくて大枠に手を加えなきゃなんなくなるのが頭痛いところ
てかこんなのエクセルでやらせんなよって話でもあるんだけどそうはいかない
2020/10/24(土) 08:29:55.58ID:Q0nf4D4p0
>>635
それでも良いんですけど、行ごとに工程の開始日と終了日を設定して工程の期間のセルは計画達成率ごとに緑、黄、橙、赤って着色する必要があり、その着色は開始日が平日なら土日祝日は着色しない、開始日が土日祝日なら期間中全てのセルを着色
とかやるんで条件書式でやるのかなり面倒なんですよね
ユーザーには進捗率をスケジュール表に記入させるんですけど今日以降の進捗率は入力があっても認識から外さなければならないって仕様もあったりするんで
2020/10/24(土) 10:23:24.93ID:EYzilKe/0
そのぐらいなら自分なら条件付き書式でやる
2020/10/24(土) 10:53:59.72ID:Fj5xdFDia
毎回全部のデータつくりなおすのか
差分だけやるとか分割するとかしないのね
640デフォルトの名無しさん (ラクッペペ MMe6-1Dkg)
垢版 |
2020/10/24(土) 12:24:40.86ID:9i+KquaLM
あるフォルダに複数のエクセルがあります。
シートは必ず一枚。
一番ファイル名が短いエクセルに
他のエクセルのシートをコピーしてまとめたい。
どう書けば楽ですか。
2020/10/24(土) 12:36:09.77ID:Gp+9LQQ1p
>>640
一番短いファイル名で同じ長さのものが有った時点で破綻

次の方どうぞ〜
642デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 12:41:50.27ID:hS/lv/UK0
その問題を作った先生を問い詰めろ!
643デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 12:43:08.02ID:hS/lv/UK0
>>640
前提条件にリアリティがなさすぎるw
2020/10/24(土) 13:11:38.58ID:uN2dIIGs0
>>640
「わかりません」って書いとけばいいよ
2020/10/24(土) 13:18:00.47ID:Lxq4fMOo0
>>640
その通り書けば楽です
646デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 13:35:27.35ID:hS/lv/UK0
エクセルがあるとは何ですか?
647デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 13:37:23.43ID:hS/lv/UK0
Excelファイルのことを単にExcelと呼ぶのも違和感がある。
648デフォルトの名無しさん (ラクッペペ MMe6-1Dkg)
垢版 |
2020/10/24(土) 13:45:51.01ID:9i+KquaLM
>>641
同じ長さになることはありません
説明不足ですみません
2020/10/24(土) 13:46:27.15ID:EYzilKe/0
何を条件にした楽なのか?
650デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 15:19:09.43ID:hS/lv/UK0
ファイル名のことなんてあとで考えればよい。

まず手順を考えてください。

ファイル名は重要ではありません。
2020/10/24(土) 15:29:59.50ID:VJA5Q+pD0
いつものあいつっぽい
2020/10/24(土) 15:59:31.92ID:h35l0z5Z0
シート"土曜日の小計"の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
653デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 17:14:11.51ID:hS/lv/UK0
>>652
http://officetanaka.net/excel/vba/error/execution_error/error_424.htm
654デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 17:16:31.42ID:hS/lv/UK0
>>652
可読性の悪さw
2020/10/24(土) 17:22:25.13ID:VJA5Q+pD0
土曜日のことを聞いていたのは例のあいつ
656デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 17:24:29.58ID:hS/lv/UK0
>>652
どのワークシートなのか指定がないけど?
2020/10/24(土) 19:06:56.46ID:kz7Ernxq0
例のあいつが好きな人か
2020/10/24(土) 19:44:26.47ID:EYzilKe/0
オブジェクトの指定も無いし存在しない命令も書いてあるし
2020/10/24(土) 19:53:11.40ID:rvK7EvYrd
>>610
個別的になるが出来る。
Application.VBE.ActiveVBProject.References.AddFromFileを使う。

VBEを弄るからセキュリティがザルだ。
わかってる奴以外は使わないことをお勧めする。
660デフォルトの名無しさん (ドコグロ MM4a-stnX)
垢版 |
2020/10/24(土) 20:28:18.61ID:UZJZIrrqM
>>652
Sheets("カレンダー")のあとにセル範囲を書けば動くんじゃね
2020/10/24(土) 21:19:11.38ID:9VZVkXWLd
理解しないまま適当にいじって、エラーが出る位置を見直そうともせず修正丸投げか
2020/10/24(土) 23:09:15.96ID:ZLw1Oaa2M
だっていつもの人だもの
2020/10/24(土) 23:35:43.13ID:h35l0z5Z0
>>653

どこにSetをつければいいか分かりません





>>652

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





>>660

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



でも同じでした
664デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/25(日) 01:39:45.83ID:eXluQ9/t0
うるさい
2020/10/25(日) 02:05:19.43ID:mQ0mp2TEM
>>663
いい加減にしろや
死ね
2020/10/25(日) 11:43:41.49ID:R1nDOxYO0
>>663
基本的なことができてないようなので職場の他の人に頼んだ方が早いだろう
667デフォルトの名無しさん (ワッチョイ ee63-9Kcm)
垢版 |
2020/10/25(日) 12:51:32.04ID:6oKLzf6v0
ある変数に、なんでもいいから100文字セットしたい場合って
どの関数使えばいいの?

str = "*****..."(100文字)
と書くのはダサいから嫌です
2020/10/25(日) 12:58:10.18ID:cOgZifE90
ダサいとする基準は?
2020/10/25(日) 13:44:52.27ID:eJOhPHQ60
>>667
WorksheetFunction.Rept("あ" ,100)
2020/10/25(日) 14:25:26.14ID:f7KUnMgPd
>>667
String(255,"*")
2020/10/25(日) 14:26:14.56ID:f7KUnMgPd
100文字か。
String(100,"*")
2020/10/25(日) 14:53:37.82ID:SDXJVscja
>>667
その質問のほうがダサい
673デフォルトの名無しさん (ワッチョイ ee63-9Kcm)
垢版 |
2020/10/25(日) 17:29:34.56ID:6oKLzf6v0
>667
です
669-671
おかげさまでできました有難う天才たち
2020/10/25(日) 19:06:05.20ID:DNLjJymIM
やっぱりいつものあいつでしたとさ
675デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/25(日) 19:23:20.13ID:eXluQ9/t0
なんでもいいという要件がわからない。
2020/10/25(日) 20:13:10.48ID:R1nDOxYO0
からかわれている
2020/10/25(日) 20:37:35.14ID:cOgZifE90
というかバカにされてるなたぶん
678デフォルトの名無しさん (ワッチョイ d163-9Kcm)
垢版 |
2020/10/25(日) 21:38:09.03ID:eeV8PNBf0
複数行まとめてコメントアウトしたい場合
どう書けばいいですか
一行ずつ'を入れたくないです。
2020/10/25(日) 22:03:05.56ID:D3cPjOx/a
選択されたら行範囲をすべてコメント化/コメント解除はツールバーにある
そのバーが非表示だと表示しなければダメだが
あと、推奨されるかは分からないけど、

#if 0 then

コメント化したい行

#end if

とかよくやります
2020/10/25(日) 22:04:11.05ID:D3cPjOx/a
出だし
選択された行範囲…
です
2020/10/25(日) 22:18:31.00ID:D3cPjOx/a
自分で書いておいてなんだけど、#でぃれくてぃぶによるコメントはお勧めしません
知っておいてよいかも、で
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況