- 1 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 02:23:41.78 ID:2t63WK/jM.net]
- !extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512 ↑2行に減ってるけど、同じ内容を3行に増やして貼り付けること ExcelのVBAに関する質問スレ コード書き込みや作成依頼もOK 次スレは>>980が立てること 無理なら細かく安価指定 ※前スレ Excel VBA 質問スレ Part75 https://mevius.5ch.net/test/read.cgi/tech/1644384272/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 2 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 10:10:19.02 ID:Pk0oKD+E0.net]
- 2げろ
- 3 名前:デフォルトの名無しさん [2022/05/01(日) 14:46:30.73 ID:q0kLnjNbd.net]
- Excel使い方すらわからない人はお断りです
Excel VBAが何かもわからない人もお断りです
- 4 名前:デフォルトの名無しさん (ブーイモ MMcb-LnX+) [2022/05/01(日) 16:08:24 ID:CXxh8/QkM.net]
- 我々の承認欲求を満たしてくれる質問お待ちしてます
- 5 名前:デフォルトの名無しさん (ワッチョイ df4f-bbcD) [2022/05/01(日) 17:04:11 ID:PgWgEC/y0.net]
- 向こうのスレ消化してから書き込めカス共
- 6 名前:デフォルトの名無しさん (ワッチョイ 7fda-Nh0L) mailto:sage [2022/05/01(日) 19:54:56 ID:Om3L9uk+0.net]
- 前スレ終わってないのに立てる >>1 が悪い
- 7 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 21:27:37.77 ID:geOevaoi0.net]
- >>6
終わってから立てたらスレの連続性が途絶えるだろ 考えて物言え知恵足らずが
- 8 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 21:39:32.49 ID:Rd1MW2220.net]
- レス古事記の相手すんなよ...
- 9 名前:デフォルトの名無しさん (ワッチョイ 27da-l/ZD) mailto:sage [2022/05/02(月) 19:28:34 ID:MoQSVCv50.net]
- 過去にもしばらくスレ立て放置プレイされた事あったぜ
- 10 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 23:18:57.97 ID:X95f3WhM0.net]
- よろしくお願いします。以下の日本語で書いた部分に相当するような
繰り返し文ってありますでしょうか。 イメージしているのはwhile read line do done < test.txt みたいなものです。 テキストファイルの変わりに「とある列の値が尽きるまで(空欄が見つかるまで)」、 繰り返し文内の処理を繰り返すような文です。 Range("B1").Select 繰り返し A列の値 = 空欄のセルが見つかるまで ActiveCell.Offset(0, -1).Range("A1").Select Selection.Copy ActiveCell.Offset(0, 1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(1, 0).Range("A1").Select 繰り返し完了
- 11 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 23:38:34.90 ID:hdDLukhc0.net]
- >>10
すげーざっくりだけどやりたいことはこんな感じ? やりたいことがあってるならもう少しちゃんとしたコードにはするけど SelectとかCopy、Pasteは基本VBAで使わないので Dim WS As WorkSheet Set WS=ActiveSheet Dim RngA1 As Range Set RngA1=WS.Cells(1,1) Dim i As Long For i = 1 to 16384 If WS.Cells(i,1).Value="" Then Exit For Else WS.Cells(i, 1).Value=WS.Cells(i, 2).Value End If Next
- 12 名前:デフォルトの名無しさん [2022/05/03(火) 10:09:18.61 ID:F3b8ltuB0.net]
- 先生方教えて!
エクセルを1枚1枚開いてvbaによって加工したい場合、 マクロの表示からそのvbaを選ぶのが一般的なんでしょうか。 FileDialogをつかって複数エクセルを一気に加工するほうが 自分は楽なんですが契約社員にはわかりづらいそうで。。
- 13 名前:デフォルトの名無しさん [2022/05/03(火) 10:15:31.86 ID:MA4dMZuw0.net]
- 一般的かどうかは分からんけど
ファイルダイアログを開いて 設定したパスをどこかのセルに設定しておいて 実行ボタンでそのセルを読みに行くほうが 複数のブックを読みに行く場合には親切
- 14 名前:デフォルトの名無しさん [2022/05/03(火) 13:25:25.46 ID:xaGln49G0.net]
- 理解が十分でない契約社員には直感的にわかりやすい上記の方法
そのうち慣れて面倒になってきたら下記の方法(バッチ) 2つのアプローチを用意するのがいいかもしれませんね コンピュータになれていなかったり入れ替わりが多い契約社員というところがポイントですね 私もVBAを他人に提供することが多いから参考になるわー
- 15 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 13:57:26.99 ID:nOtJseDM0.net]
- Nextじゃなくて、Next iって書かなきゃあかんと言われたよ
- 16 名前:デフォルトの名無しさん [2022/05/03(火) 14:12:22.20 ID:utR4VoxQa.net]
- iが足りなかったからか
- 17 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 14:54:21.99 ID:Bmz10qTz0.net]
- 前スレ987で質問した者です。
アドバイスありがとうございます。 2019に変わる際にPCがwin7からwin10に変わり性能もアップしたのでVBA処理も早くなるかと思っていたのですがそのようなバグが出るようになりました。 自分1人で使ってる範囲では良いのですが複数が利用しているため質問させて頂きました。 PC性能があがりEXCELがついてこれてない可能性もありますね。
- 18 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 16:13:00.23 ID:waxP/JpN0.net]
- Excel板なら人間の性能を上げろって揶揄されるからな
- 19 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 19:42:48.21 ID:3VW2nuLk0.net]
- win7がwin10になったのとPCの性能は別だからな
古いPCのOSだけ変えたのかもしれんし
- 20 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 20:57:36.39 ID:Bmz10qTz0.net]
- 説明不足で申し訳ないです。
win7からwin10でPC変わってます。 個人的に所有しているPCではないので具体的なスペックはわかりません。
- 21 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 21:05:48.55 ID:hxvZ+FeqM.net]
- >>20
所有権の問題ではなく馬鹿だからわからないだけでは?
- 22 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 21:14:48.05 ID:Bmz10qTz0.net]
- 申し訳ありません、具体的なスペックが提示できないようではアドバイスも難しいですもんね。
これまで頂いたアドバイスでもう少し試行錯誤してみたいと思います。ありがとうございました。
- 23 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 22:17:07.14 ID:hNQ/TBre0.net]
- 数秒待たせればエラーに成らないなら、原因判明するまでは待たせる方式で
或いは 最終的に鳥瞰図が欲しいなら、数値データをDXFとして出力してjw-cadとかで描画とか https://www.hakko.co.jp/javascript/soft011.htm 作者に問い合わせしながら検討とかも https://www.apptec.co.jp/technical_report/pdf/vol24/treport_vol_24-06.pdf https://movies.woxikon.co.nz/excel-%E3%81%A7-cad-%E5%9B%B3%E9%9D%A2-%E4%BD%9C%E6%88%90 https://www.tipsfound.com/excel/05038 https://www.nichibun-g.co.jp/data/education/ict-education/archive/31/02.php この辺は既にご承知かも ぜんぶちゃんと目を通した訳では無いから抜粋ということで グラフ機能を応用して鳥瞰図(風)にしてるってことかな
- 24 名前:デフォルトの名無しさん (ワッチョイ 2701-XZ6m) mailto:sage [2022/05/04(水) 23:12:41 ID:Bmz10qTz0.net]
- >>23
ありがとうございます。勉強になります。 今のところはエラーが出た際バッファーの時間を調整して対応しています。 とりあえずは動いているので良いのですが書き方としてどうなのだろうと思いまして… もっとスマートに解決方法があればと思い質問させて頂きました。 アドバイス頂きありがとうございます。アドバイスを元に検討してみたいと思います。
- 25 名前:デフォルトの名無しさん [2022/05/04(水) 23:54:17.61 ID:4EN2kx2R0.net]
- >>24
むかしファイルメーカーから画像を取り出してExcelに貼り付けるマクロ書いたことあるわ。 クリップボードからExcelに貼るときにちょいちょいエラーが出て苦労した。 最終的にはエラーが出たところからリランできるようにして人力で最後まで走り切った。 継続的に長い期間使うマクロではなかったんでね。 クリップボードって入れ終わるタイミングが掴めないから処理が難しいね。 オレが調べた限りでは完全に技術的に解決する方法は見つけられなかった。 完全自動化は一旦棚に上げておいて、人間の補助も込みで運用を考えた方が現実的かも。
- 26 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 00:43:02.91 ID:vV+xUHQR0.net]
- IEとセッション共有するにはどうすればいい?
- 27 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 08:37:44.29 ID:GOdKeYkud.net]
- >>12
VBSでExcelファイルをドラッグドロップお薦め Visible = False でExcel画面すら見ずに処理が終わる
- 28 名前:デフォルトの名無しさん [2022/05/05(木) 09:37:07.07 ID:yaYLZP+d0.net]
- >>26
まずIEはセッションなど持っていない。 そして今IE は使えないだろう? 強制的にEdgeにされるはずだ。 そしてそのEdge も当然セッションなど持っていない。 EdgeもIEもクライアントサイドのものだからだ。 セッションはサーバーサイドの概念だからな。 そしてサーバーサイドをEXCELのVBA で制御するとか意味分からん。 大人しくAsp.NetでもやっておくかせめてVBS で制御しとけ。
- 29 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 11:18:53.52 ID:vV+xUHQR0.net]
- わざとだろうけど、EdgeでもCookieでもいいよ。
- 30 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 11:27:47.75 ID:BSjK1PJD0.net]
- >>11
ありがとうございます。
- 31 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 16:06:00.40 ID:FeY8iOM40.net]
- 【ひろゆき】テレビ見る奴はバカ!?正論論破!
「テレビ見てる奴バカすぎだろ!!マジでバカしかいない!!」聞けば納得の正論!! 【ひろゆき】みなさん要注意です…テレビ見ると頭悪くなります ⇒テレビが馬鹿向けに作られてる衝撃の理由がヤバ過ぎる… 【ひろゆき】マジで「ざまあみろ」って思いましたね。 ●●する奴にテレビ業界は破壊されました…ひろゆきがテレビがオワコン化した理由を話す 【ひろゆき】芸能界の闇!松本人志とか東野幸治はエクセルすら使えないんだよ? ワイドナショーで言ってたw【教えて!ひろゆき先生/切り抜き】 【ひろゆき】なぜテレビは面白くなくなったのか? その理由をひろゆきとひげおやじが分析する【切り抜き/論破/TV】
- 32 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 10:41:14.26 ID:NJT6jW780.net]
- Sub test()
Dim high As Long Dim str As String Dim num As Integer 'a str = "転" str = Asc(str) str = Hex(str) a = str 'b str = "転" str = Hex(Asc(str)) b = str 'c str = "転" num = Asc(str) str = Hex(num) c = str End Sub a=FFFFFFFFFFFF935D b =935D c=935D aとbで結果が異なる理由が分かりません。 cはぼんやりと型の違いなのかと思いテストしたところ、bと同じ結果になりました。 しかし、aもbもstring型のstrに納めているので、「どうして結果が違うのか」とより 謎を強めてしまいました。なぜ、aとbで結果が異なるのか教えてください。
- 33 名前:デフォルトの名無しさん [2022/05/07(土) 11:01:22.01 ID:QtF4T6fHa.net]
- ascの結果をstringに変換しないで入れたからかな
出先なので試せないが
- 34 名前:デフォルトの名無しさん (アウアウウー Sa1f-cwrN) mailto:sage [2022/05/07(土) 11:52:42 ID:/qcwjpRWa.net]
- 'a
str = "転" str = Asc(str) Debug.Print str str = Hex(str) Debug.Print str a = str ってやってみて自分の思った通りになってるか確認してみそ
- 35 名前:デフォルトの名無しさん (ワッチョイ b7ce-PvPk) mailto:sage [2022/05/07(土) 11:59:35 ID:WpJq4eDb0.net]
- >>32
Asc関数は戻り値が数値型なので、bとcはほぼ同等になる aだけが途中経過が明らかに違う
- 36 名前:デフォルトの名無しさん (ワッチョイ b7ce-PvPk) mailto:sage [2022/05/07(土) 12:05:46 ID:WpJq4eDb0.net]
- 公式ドキュメントには、Hex関数の返り値は8桁以下の文字列と書いてあるのに16桁返ってくるな
どういうことだ? https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/hex-function
- 37 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 12:10:46.75 ID:WpJq4eDb0.net]
- 暗黙の型変換は必要最小限の型に変換されるってルールだったはずで、そのロジックに何か問題がある気がする
文字コード(-27811)はIntegerになるはずがLongLongに変換されてしまっていて、さらにHex関数がなぜかエラーを返さない
- 38 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 13:00:38.34 ID:WpJq4eDb0.net]
- うーん、これはちょっと想定外の結果、かなあ
知らないでいるとハマりそうだわ Sub test2() s = "&H8" For i = 1 To 15 s = s & "0" Debug.Print Hex(s) Next End Sub
- 39 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 15:18:31.97 ID:QipuKWLV0.net]
- >>32
strは文字列型だからaの場合str = Asc("転")でやっていることは実質的にstr = cstr(Asc("転")). だからa,b,cはそれぞれ,hex(cstr(Asc("転"))),hex(Asc("転")),hex(Asc"転"))となりaだけ途中で数字ではなくて文字列にかわっているので 対応するhexの値が異なるのは当然.
- 40 名前:デフォルトの名無しさん [2022/05/07(土) 15:39:23.00 ID:Be/sY8NCd.net]
- 型を意識しないで作るVBAerによくある勘違いというだけ
- 41 名前:デフォルトの名無しさん [2022/05/07(土) 16:06:22.67 ID:7L5Eu3N/a.net]
- >>38
型宣言しないタイプ?
- 42 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 17:29:10.04 ID:stouWQDp0.net]
- VBAってマトモな会社は使用禁止でしょ
- 43 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 19:21:47.63 ID:WpJq4eDb0.net]
- >>41
>>38のケースは宣言してもしなくても結果同じでは
- 44 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 19:23:32.20 ID:WpJq4eDb0.net]
- >>39-40
公式ドキュメントに8文字以下と書いてあるのに、たまに16文字返ってくるのは単なる勘違いで済む問題じゃないと思うぞ
- 45 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 20:33:59.56 ID:gH0nu0qIa.net]
- >>44
64bit 版のドキュメントが間に合ってないだけだろ
- 46 名前:デフォルトの名無しさん (ワッチョイ 17da-oDvp) mailto:sage [2022/05/07(土) 21:40:19 ID:QipuKWLV0.net]
- >>44
実際の結果と説明が食い違ってたら説明の方が間違っている(修正が遅れている)だけだと思うが
- 47 名前:デフォルトの名無しさん (ワッチョイ b7ce-PvPk) mailto:sage [2022/05/07(土) 21:55:14 ID:WpJq4eDb0.net]
- Officeが完全64bit対応になったのは2010から
12年遅れか……
- 48 名前:デフォルトの名無しさん (アウアウウー Sa1f-cwrN) mailto:sage [2022/05/07(土) 22:11:45 ID:9QKKUGlra.net]
- >>46
まあ単なるバグの可能性は "0" ではないけど
- 49 名前:デフォルトの名無しさん (ワッチョイ 8f68-e+q+) mailto:sage [2022/05/07(土) 22:14:36 ID:T2FkQFbN0.net]
- >>38
これはバグでは
- 50 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 22:18:37.86 ID:cppQitqZ0.net]
- >>47
64bitが標準になったのは2019からだけど
- 51 名前:32 (ワッチョイ 9f02-PvPk) mailto:sage [2022/05/08(日) 08:41:56 ID:mrWBx7yB0.net]
- Sub test()
Dim high As Long Dim str As String Dim num As Integer 'a str = "転" str = Asc(str) str = Hex(str) a = str 'a´ str = "転" str = Asc(str) str = Hex(CInt(str)) ad = str 'b str = "転" str = Hex(Asc(str)) str = str b = str 'c str = "転" num = Asc(str) str = Hex(num) c = str ありがとうございます。一旦は納得できました。
- 52 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 19:44:09.25 ID:J4Oeet0G0.net]
- kou
'a str = "転" long_ = Asc(str)
- 53 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 22:42:32.67 ID:CUGu1qGH0.net]
- high は何のため
- 54 名前:デフォルトの名無しさん (ワッチョイ 2f2f-vjB4) mailto:sage [2022/05/09(月) 03:05:49 ID:1tzp5qwq0.net]
- >>37
>暗黙の型変換は必要最小限の型に変換されるってルール そんなルール聞いたことないが、どこ情報なんだ?
- 55 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 14:49:08.99 ID:Ww9cdHsy0.net]
- 脳内思い込み
一番タチ悪い
- 56 名前:デフォルトの名無しさん (ワッチョイ 3ebb-HNGk) mailto:sage [2022/05/09(月) 18:18:14 ID:7ATo4dDz0.net]
- コピー元のブックのシート上のチェックボックス
- 57 名前:(ON/OFF)を、
コピー先のブックのシート上のチェックボックス(すべてOFF)に 「チェックボックスのON/OFFの状態を」コピーしたいのですが そういう命令はありますでしょうか? [コピー元].Worksheets("シート名").Range("G3:AB5").Copy [コピー先].Worksheets("シート名").Range("G3:AB5").PasteSpecial xlPasteAll ではチェックボックスは空白のままなのですが、 「マウスでコピー元のG3:AB5を選ぶ→Ctrl+C→コピー先にCtrl+V」と手動で操作すると G3:AB5内のチェックボックスのON/OFFもコピーされるので なにか方法があるのではと思うのですが すべてをペースト(PasteSpecial xlPasteAll)ではダメなのでしょうか [] - [ここ壊れてます]
- 58 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 10:07:55.18 ID:4FhYKkQU0.net]
- ユーザーフォームのコントロールの位置調整について質問です。
テキストボックスA,B,Cが A B C と既に左右の間隔が均等に整列された状態になっており、 一番左にテキストボックスDを追加するとします。 D A B C この時、A-B間(B-C間も同じ) と D-A間の間隔を同じにしたい場合、 手動計算する(それぞれのLeftプロパティを参照して、差分を手入力する)のではなく、お手軽に設定できる操作はありますか? マウスのドラッグで D A B C を範囲選択して[書式]-[左右の間隔]-[間隔を均等にする]を選ぶと、 両端(DとC)の位置が固定された上で、その内側(D-A間、A-B間、B-C間)が均等になるだけで、 今回求めている結果にはなりませんでした。
- 59 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 10:19:04.03 ID:ODIjuWluM.net]
- 一生に一度しか使用しない機能は実装されません
- 60 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 10:49:36.48 ID:G5I31YZG0.net]
- D A B C を左右均等に並べたいんじゃ無いのか?
D-A-B-C とか、スペースを-で表さないと、コッチからすれば説明文の上下は一緒に読めるんだが? D---A-B-C とかか?
- 61 名前:57 mailto:sage [2022/05/10(火) 11:44:31.14 ID:4FhYKkQU0.net]
- >>59
スペースをハイフンで示します。 最初の状態 A----B----C Aの左側にDを追加するとします。 D-A----B----C マウスのドラッグで DABC を範囲選択して[書式]-[左右の間隔]-[間隔を均等にする]を選んだ場合は、 両端(DとC)の位置が固定された上で、その内側(D-A間、A-B間、B-C間)が均等になるだけ。 この場合は、最初の状態でのA-B間(B-C間)の間隔(スペース4個分)が保持されていません。 D---A---B---C 今回求めている結果 D----A----B----C
- 62 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 11:55:55.13 ID:G5I31YZG0.net]
- Cを必要なだけ右に寄せてからその操作すれば?
ぴったり位置合わせしたいとかなら https://www.moug.net/tech/exvba/0120023.html 辺り参考に
- 63 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 11:58:47.56 ID:Q/OuvBXU0.net]
- >>56
どのチェックボックス?フォーム?activeX?
- 64 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 13:26:52.13 ID:EvytVRjpd.net]
- >>57
Controls.Addでマクロにパーツを作らせて位置を指定するか自動計算させれば簡単 自分でイベント作る必要はあるかも
- 65 名前:57 mailto:sage [2022/05/10(火) 21:53:08.05 ID:4FhYKkQU0.net]
- >>63
ありがとうございます。調べてやってみます!
- 66 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 21:54:52.33 ID:4FhYKkQU0.net]
- >>61
ありがとうございます。参考にします。
- 67 名前:56 mailto:sage [2022/05/11(水) 07:58:45.59 ID:VwZpfkps0.net]
- >>62
「チェックボックス」だけの情報だと二つあるんですね すみません。 調べたところフォームのほうのチェックボックスでした。
- 68 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 01:22:53.69 ID:UrRQ3K070.net]
- 'これ実行するとどうなりますか?
'Q1 「 3.2to4.1(14)ng:4>=4 」と ' 「 3.2to4.1(25)ng:4>=4 」になりますか? 'Q2 「 3.7to4(9)ng:4>=4.9 a:3.9 」と ' 「 3.8to4(9)ng:4>=5 a:4 」になりますか? Sub test() For i = 1 To 4 Step 1 Select Case i Case 1 a_from = 3.2: a_to = 4.1: a_max = 4# 'if[4 >= 4]でFalseになる Case 2 a_from = 4.2: a_to = 5.1: a_max = 5# 'if[5 >= 5]でFalseになるか確認用 Case 3 a_from = 3.7: a_to = 4#: a_max = 4# 'aが3.9までしかいかない Case 4 a_from = 3.8: a_to = 4#: a_max = 4# 'aが4までいく End Select c = 0 Debug.Print "***** from " & a_from & " to " & a_to & " max " & a_max, String(60, "*") For a = a_from To a_to Step 0.1 For b = 0# To 0.2 Step 0.1 c = c + 1 ab = a / (1 - b) okng = "ng" If a_max >= ab Then okng = "OK" Debug.Print a_from & "to" & a_to & "(" & c & ")" & okng & ":" & a_max & ">=" & Round(ab, 1) _ , "a:" & a, "b:" & b, "max:" & a_max, okng, "ab:" & ab ' Debug.Assert a_max >= a '[4 >= 4]でFalseになる Next Next Next End Sub
- 69 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 02:12:42.08 ID:y5qWaFnT0.net]
- >>67
常識 https://blog.apar.jp/program/8900/
- 70 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 15:49:14.84 ID:m1gysKVC0.net]
- Dim a
a = Range("A1:B2") これだけでaが2×2の配列になるとたった今知ったのですが このことを手放しに使って良いのでしょうか、それとも邪道だから Dim a(2, 2)なり要素数まで指定した方が良いのでしょうか。
- 71 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 15:56:46.69 ID:Bn5ry0500.net]
- >>69
問題ない VBA使えるやつならみんな知ってる
- 72 名前:デフォルトの名無しさん [2022/05/13(金) 16:05:23.39 ID:zF4dJdoD0.net]
- それ便利だけど誤読しやすいので静的メソッドにしてる
ArrayExt.FromRange(Me.Range("A1:B2")) みたいな
- 73 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 19:41:50.80 ID:q/KvZ9/90.net]
- officescript調べてみたけど意外と分かりやすかった
これならVBAがなくなっても大丈夫そう
- 74 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 19:50:05.37 ID:q/KvZ9/90.net]
- >>69
型使わないとバリアント型だから二次元配列になるわけか
- 75 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 19:53:17.10 ID:q/KvZ9/90.net]
- ちなみに参考にしてる人はこう書いてた
Dim a As Variant a = Range("A1:B2").Value
- 76 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 22:54:29.72 ID:BcFt2CuGD.net]
- aは要するにポインタだからな
- 77 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 22:58:14.08 ID:JesbR9jP0.net]
- c以上ならポインた
- 78 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 23:28:52.57 ID:94QyLQ1Xa.net]
- >>69
誰も書いていないので驚いたが、 その方法でもいい、のではなくて、 その方法しかない。 あとは Variant を明示するかしないかの違いだけ。
- 79 名前:デフォルトの名無しさん (ワッチョイ ffbb-bUW4) mailto:sage [2022/05/14(土) 01:49:07 ID:5NJ35cqH0.net]
- セルの値を取得して書き換えて…ってやるより二次元配列で処理する方が体感3倍くらい速いから、高速化したいなら配列使えばいいよね
ただ他の人もわかるようにとかメンテナンス性考えると避けた方が無難だったり、ケースバイケース
- 80 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 04:08:54.94 ID:wh2tsa6Q0.net]
- 他人の使い勝手なんか微塵も考えていないヤツが大半だろ現場じゃあ
- 81 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 04:13:11.38 ID:JIfRBOPe0.net]
- Variantはポインタじゃなくて共用体
そもそもVariantオブジェクトはVBA固有の機能じゃなくてWindowsに組み込まれてて、別の言語からも自由に使える どういう場面で役に立つのかわからんけど
- 82 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 04:32:51.17 ID:bV9+cuz+M.net]
- ポインタ的な使い方するならVariant型ではなくてObject型
Dim a As Object (総称オブジェクト型) Rangeオブジェクトに特定するなら Dim a As Range (固有オブジェクト型)
- 83 名前:デフォルトの名無しさん [2022/05/14(土) 08:18:11.37 ID:ddohEedh0.net]
- Variantってよく分からん型だよな
Objectもそうでないものも仕舞えるし .Netで封印されたのも頷ける
- 84 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 10:07:30.24 ID:BHEGSPOf0.net]
- >>78
配列の方が断然早いよね。 富○通がVBで作ったEXCEL名簿出力アプリが5時間以上かかってるのが、俺がEXCELVBAで組んだのは30分で終わる。 しかも富○通のはデータ1行ごとにコピペしてるので 動かしてる間コピーのバッファが奪われて他の作業が一切できない。
- 85 名前:デフォルトの名無しさん [2022/05/14(土) 10:48:24.07 ID:0kHlnQQT0.net]
- オレオレ自慢
- 86 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 10:57:42.22 ID:jjfnS8MSd.net]
- VBのコードみてVBAにする際に少し手直しした程度なんだと思うが
どの程度のデータか不明だけど30分もかかるような処理も自分としてはNGだわ まあどっちも夜流して朝みればいいなら5時間でも一緒程度
- 87 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 11:08:32.24 ID:XMrr4JDhr.net]
- 何分とかかかる時点でRDBとか外出ししてやれないかとか考えちゃう
Excelには荷が重いんじゃないかとね
- 88 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 11:27:37.36 ID:x+cFGSU+a.net]
- どんだけ長い処理でも耐えられて2分までだわ
30分かかるとか論外
- 89 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 11:39:20.09 ID:tj4PNqc2d.net]
- そんなに処理に時間がかかるってことは多分生データが数Gクラスだろうからaccessやexcelでは非効率だろう
ここに>83の間抜けさがよく現れてる
- 90 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 11:43:13.01 ID:5E8BmIH10.net]
- そんな大規模なデータを扱ったことないからわからないけど
30分もかかったら途中で無限ループに入ってんだろなと思って止めてしまうわ
- 91 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 11:59:12.73 ID:VTp6T5x/0.net]
- vbaを30分も動かすってどんな処理だよ
あとあまり長い時間動かしっぱなしにすると大体フリーズしてるぞ
- 92 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 12:14:29.94 ID:jjfnS8MSd.net]
- どんな処理でも構わないけどExcelのプロセスが起動してるときに新規のExcel起動>ファイルを開くで開けばいいけど
無意識のうちにダブルクリックなんかで開こうとしたらVBA実行中のプロセスで開かないとも限らないから 30分の拘束ってのは日中ならなし
- 93 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 12:55:50.88 ID:JIfRBOPe0.net]
- そんなに速くしたら、フリーズしてないか監視する仕事の人がクビになっちゃうだろ
ああいうのは、わざと1日かかるように作ってあるんだよ
- 94 名前:デフォルトの名無しさん (ワッチョイ 7dda-o6RS) mailto:sage [2022/05/14(土) 13:31:33 ID:wh2tsa6Q0.net]
- なんでExcelエキスパート集団の富○通がそんなクソ遅いマクロ書くのか不思議だ。
- 95 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 15:15:38.33 ID:VTp6T5x/0.net]
- >Excelエキスパート集団
それはない
- 96 名前:デフォルトの名無しさん [2022/05/14(土) 16:41:13.43 ID:9uXA4NxPd.net]
- 富士通が直接作っているのでないだろうし、たった一つの例で全部がわかったつもりになる幼稚なアホ
- 97 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 18:27:44.98 ID:msymY1pp0.net]
- あんまり処理に時間かかるようなやつならプログレスバーやらひとまず動いてることがわかるようなものを入れとくわ
- 98 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 18:32:44.86 ID:qaSd7ep40.net]
- 1.xlsx、2.xlsx、3.xlsx、・・・、1000.xlsxという連番のブックがあって
そのすべてにssssというシートがあって そのすべてのD2(R2C4)セルにデータがあるとして あるブックのA1~A1000に1~1000が入力してあって、 それぞれの隣(B1~B1000)に対応するブック(B500には500.xlsx)の シートssssのD2セルの中身を持ってくるのってどうすればいいですか? ExecuteExcel4Macroとか使ってそんなに難しくなくやれるかと思いきやまるでうまくいかない…
- 99 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 18:58:29.62 ID:lDPvxjtFD.net]
- >>94
方眼紙はじめとした使い方への皮肉だろ
- 100 名前:デフォルトの名無しさん [2022/05/14(土) 19:14:09.21 ID:yHnyJFGQ0.net]
- >>97
他に条件や例外がないなら自分で書いてる通り「そんなに難しくない」が、どこで詰まってるの?
|

|