Excel VBA 質問スレ Part58

■ このスレッドは過去ログ倉庫に格納されています
2018/11/19(月) 06:47:24.99ID:Qq88xGOU
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part57
https://mevius.5ch.net/test/read.cgi/tech/1536583359/
724デフォルトの名無しさん
垢版 |
2019/01/29(火) 22:13:12.12ID:TIeo+FQH
>>723←これが世間でバグと言われるものです
725デフォルトの名無しさん
垢版 |
2019/01/29(火) 22:19:46.43ID:5yOKK0P6
>>724
どこがバグ?
726デフォルトの名無しさん
垢版 |
2019/01/29(火) 22:22:56.72ID:TIeo+FQH
>>725
それぐらい自分で考えろやプロさんw
脳ミソついとらんかプロさんの頭にはw
2019/01/29(火) 22:40:58.72ID:2ngnqyHd
>>726
お前が馬鹿
2019/01/29(火) 22:57:33.37ID:ywRkqTQf
>>725
もっと簡単な例で考えれば分かる
1〜6のサイコロ2個と、2〜12のサイコロ1個で合計7の出る確率は、前者は6/36=1/6、後者は1/11
結果(確率)がまったく違うから、同じプログラムとは言えない
729デフォルトの名無しさん
垢版 |
2019/01/29(火) 23:02:31.19ID:TIeo+FQH
ワイは>>727の恥ずかしさをもっと掘りさげたいんやw
2019/01/29(火) 23:06:27.72ID:kf38Yh2H
いつも思うんだが、どういう状況で使うんだよ。
Excelでゲームでも作るの?
731デフォルトの名無しさん
垢版 |
2019/01/29(火) 23:13:55.62ID:TIeo+FQH
話をそらさずにもっと>>727の恥ずかしさを語り明かそうやw
2019/01/30(水) 00:12:38.41ID:7kXOqwqB
数学の確率は人間の直感を裏切ることがけっこうあるから、慎重に扱わないと痛い目を見る
2019/01/30(水) 00:15:46.22ID:mmfL+KpI
乱数が欲しいんて書いてないし
2019/01/30(水) 00:18:07.14ID:yYgJ37mP
確率が直感に合わないのはほとんどの場合解釈を間違えてるだけ
2019/01/30(水) 00:21:14.29ID:Q4JlCs68
バグと確率の問題をすり替えて逃げてる馬鹿がいる。どこにバグがあるか指摘してみろや。
VBAしかしらない馬鹿どもが。
2019/01/30(水) 00:26:30.71ID:4G8qGWeY
「乱数字」という言葉の意味がわからない限り、誰も何も回答できないわけだが
回答者が勝手に問題を作って議論を始めるいつものパターンになってるな
2019/01/30(水) 00:34:51.85ID:3ZvsJrgT
結果が意図と違っていたらバグ
たとえば乱数でサイコロをシミュレーションするプログラムで、どれだけ試行しても確率が1/6に収束しようとしなかったらバグがある
2019/01/30(水) 00:36:43.73ID:ILSDuF01
よっぽど悔しかったんだな。。。
739デフォルトの名無しさん
垢版 |
2019/01/30(水) 07:02:27.20ID:3/CBrgdG
>>735←バグの意味を知らんプロさんwwww
ええでもっと恥ずかしがってもwww
740デフォルトの名無しさん
垢版 |
2019/01/30(水) 12:54:53.35ID:X+zaqEGo
よろしくお願いします。

あるxlsmファイルを、1ヶ月間だけ使える、という形にしたいです。
つまり、各使用者がそのファイルを自分のPCに置いてから、1ヶ月だけは操作できると
いうことなのですが、どのようにしたらよいかわかりません。

ファイルを開いたときに、そのファイルが設置後1ヶ月経っていたら「もう期限切れ」とメッセージを出して
操作を不可能にしてしまうのを考えていたのですが、その設置日というのをどう取得すればいいのか。

「USBメモリなどから、そのファイルがそのPCにコピーされた日」を取得するにはどうすればよいでしょうか?
2019/01/30(水) 13:21:11.92ID:TCBbgKI9
「ブックの作成日」でググって出てきた二つ目のサイト
ttps://www.moug.net/tech/exvba/0130015.html
2019/01/30(水) 18:49:20.66ID:vrvbffTa
2019/01/30(水) 19:54:50.43ID:E22FaIEN
Excel 2016 (64bit) のVBAで質問です

とある理由で、大規模桁の計算をしないといけなくなったので
取り急ぎLongLong型の配列を作って必要な演算を作ろうかと

そこで、エラーが出て悩んでいる案件と、ちょっとした疑問が

とりあえず、代入されるものが数値であるかのチェックは必要よね…と思い
IsNumeric関数を使おうかと思うのですが
これって、例えば100桁の整数を表す文字列でも通るんでしょうか…って通るみたいなんですが
上限は文字列として扱える上限まで行けるんでしょうか?

計算の都合で商を求める演算「\」を使ったところ、10^12 \ 2^22 あたりの計算でオーバーフローとなりました
(実際には、2^22のところはそのオーダーの定数)
「\」の計算は64bitに非対応なのでしょうか?
2019/01/30(水) 21:02:23.30ID:E37rjQ75
それこそPowerShell呼んでBigInteger使えよ
2019/01/30(水) 22:56:12.99ID:dsQEAAmt
>>740
基準日をどうするかにもよるけど、
一番簡単なのは、If 今日の日付 = 2019/2/28 Then Exit Sub 的なやつ。
2019/01/30(水) 22:59:06.78ID:dsQEAAmt
あ、コピーされた日か。
じゃあFileSystemObject使うとか。
2019/01/31(木) 07:12:05.16ID:Z5McOm4q
コピーされた日なんてどこにも記録されてないんだから取得のしようもないだろ
2019/01/31(木) 07:50:39.64ID:tKdk8GYp
起動時にあるセルが空白なら今の日付入れる。
空白でないのなら、セルの内容と今の日付を比べる。
セルは非表示のシートとかでよくね?
2019/01/31(木) 08:17:14.63ID:mZzaZtfh
>>744
別に作成されているマクロのコンポーネントになるので不採用ですね…。
2019/01/31(木) 10:24:09.90ID:ivIRiWY+
スルーされてるけど>>741に日付取得のソースが丸々載ってますよ
余程変なことをしなければ、コピー日時はファイルの(≠エクセルのプロパティ)の作成日時です
適当なセルをパスワード保護して、ブックモジュールのOpenイベントに空白条件で日付を入れるコードを書けば初回起動で記録されます。

>>743
\演算子が良く分からないのですが、除算の結果から小数点以下を消すという意味なら
Int(10 ^ 12 / 2 ^ 22)
でどうでしょうか
2019/01/31(木) 12:39:08.81ID:xxTKFGAk
>>749
WScript.Shell で呼べばいい
VBAのソース内に書いたPowerShell実行できるぞ
2019/01/31(木) 12:43:51.49ID:B2lY3/DV
>>751
何でそういう面倒くさい方法にしなきゃならんの?
VBAじゃどうにもならんという結論か?
2019/01/31(木) 12:52:33.19ID:xxTKFGAk
>>752
VBAでやろうとすれば自前で多倍長整数演算を実装する必要があり、開発とテストで誇張抜きで工数数百倍かかるよ
754デフォルトの名無しさん
垢版 |
2019/01/31(木) 16:39:19.38ID:aH0rCOCG
>LONGLONG

>100桁の整数

あほですか
2019/01/31(木) 19:07:59.37ID:B2lY3/DV
>>753
だからさ、まずお前の結論としてVBAじゃ無理というのがあって、それからだろPowerShell云々は。

で、本当のところ、無理かどうかは分からんが、仮に無理だとしてどうしてPowerShellになるんだ?
別に他でも良いわけだろ。
2019/01/31(木) 19:08:45.03ID:2eoSLZbf
>IsNumeric関数を使おうかと思うのですが

On Error Resume Next
数字じゃないとエラーが起きるような処理
エラーが起きたら終了みたいな
On Error Goto 0
2019/01/31(木) 19:28:01.37ID:ivIRiWY+
>>743
>>IsNumeric関数を使おうかと思うのですが、上限は文字列として扱える上限まで行けるんでしょうか?

ちょっと質問内容が良く分からないのですが、

・そもそもLongLong型(64bit=8バイト)の話では無かったのですか?100桁とは?
・ヘルプに有る通り文字列型の上限は2GBですが(以下同様)

仮に2GBの判定が出来たとしても、その膨大な時間を使うよりは例外処理してしまった方が早いと思います。
2019/01/31(木) 19:28:54.99ID:kne0z8/A
>>743
よくそんな仕事請け負ったな、依頼者に騙されてないか?
2019/01/31(木) 19:31:09.20ID:ivIRiWY+
お話を聞いてる限り、恐らく元々の依頼内容も勘違いされている部分があると思うので、
差し支えない範囲で教えて貰えれば根本的な部分に回答が出来るかもしれません。
2019/01/31(木) 19:31:49.59ID:ivIRiWY+
みんな同じ様な事言っててワロタ
2019/01/31(木) 21:50:14.70ID:xxTKFGAk
>>755
別にPowerShellでなくてもいいけど、標準のWindowsだけで特に追加で何か入れることなく使えて
多倍長演算もサポートしててVBAから簡単に呼べるのなんて他にある?
762デフォルトの名無しさん
垢版 |
2019/02/01(金) 01:19:40.80ID:UQQ7ub0a
>>757
そちらの質問は興味本位です。与えられた数値に見える文字列を信じるなら不要です
それと、LongLong型で済むなら配列はいりませんし

やりたいことは、例えば「100桁同士の四則演算をする」というようなことです。
コンパイラのインストールをセキュリティポリシーで禁止されているので
困っているのですよ。

>>759
そちらは時間があれば勉強してみようかと
ただ、それで実装すると引き継ぐときに後の人が大変そうですが
2019/02/01(金) 02:51:10.44ID:Jdk/7rOF
100桁ぐらいなら、Ruby でも演算できる
2019/02/01(金) 03:10:10.30ID:HKJPuzL8
>>762
あまりに馬鹿過ぎて話しにならん
どうして馬鹿と言われるか理解できるか?
2019/02/01(金) 04:03:45.69ID:bJm3iiDn
>>750
初回起動で設定しても元のブックをコピーし直せば何度でも使える
何の条件で期間指定したいのかわからないけど
パソコン限定ならレジストリでも使うのかな
2019/02/01(金) 07:03:41.22ID:gp0X8o+d
>>743
言語の動作もわかっていないこんな奴に依頼するなんて。頼む方も頼む方。
2019/02/01(金) 07:18:07.26ID:76fUr+Yk
Excel VBAの質問スレだろ
質問も回答もする気無いならスルー出来んのか?
768デフォルトの名無しさん
垢版 |
2019/02/01(金) 07:44:04.79ID:eMw5OSNU
答えられない質問はとりあえず馬鹿にして勢いで乗り切る方針のプロさんw
バカwww
2019/02/01(金) 08:37:10.62ID:UEAxmDKm
ComboBoxで↓を押して表示されるリストの行数は固定でしょうか?
表示行数を増やす方法がありましたら、ご教授ください

よろしくお願いします
2019/02/01(金) 08:51:37.94ID:76fUr+Yk
>>765
Excelのレジストリ操作だと簡単なのはそのパソコンのユーザー毎の設定だな
無論APIを使えば何でもできるけどね
所詮はバーチャルマシンも考えればユーザー側も何でもできる
その程度と思って使うか ネットにDB持つかだな
2019/02/01(金) 08:51:40.44ID:8kRZ6Lw/
最近はexcel2010とVB.netで改元対応しています。
excelのイベント少ないなって思っているのですが、2016などの新しいのはイベントや関数などは増えているのでしょうか?
2019なんかはタブレット操作用のイベントもあったりするとかでしょうか?
2019/02/01(金) 09:05:53.38ID:qPCno0Ra
なんかすごいところだな
>>764とか上から目線ってかもう天から垂直に見下ろして魔法打ち込んでるレベルだな
しかも書き込んでる時間が深夜3:00とか超絶生活者
2019/02/01(金) 10:01:49.43ID:FlvBcwUR
763 名前:デフォルトの名無しさん[sage] 投稿日:2019/02/01(金) 02:51:10.44 ID:Jdk/7rOF
100桁ぐらいなら、Ruby でも演算できる


ゲラゲラゲラゲラゲラゲラ
2019/02/01(金) 10:50:03.45ID:3Ud/K8J0
>>773
計算するライブラリーが有るってことじゃないの
Rubyしらんが
2019/02/01(金) 10:54:24.80ID:rRNrmt+/
>>771
VBAはレガシー扱いだからMSのポリシー的に積極的な機能追加は不可
ちなみにVB.NETのWindowsフォームも既にレガシーで開発終了してる
2019/02/01(金) 10:55:12.36ID:3Ud/K8J0
>>773
計算できるライブラリーがあるだけじゃないの
どんな言語でも、4則演算程度なら作れるだろ
2019/02/01(金) 10:56:26.07ID:wTTD69jh
VBAだって超多倍長演算ライブラリぐらいネットに転がってんじゃない?
ちなLongLongで扱えるのは18桁まで、乗除算でオーバーフローを起こさないようにするなら半分以下の桁で使うのが無難
2019/02/01(金) 10:57:36.71ID:3Ud/K8J0
すまん、ダブって書き込みしても〜た
779デフォルトの名無しさん
垢版 |
2019/02/01(金) 15:50:46.63ID:eD54qyaY
VBAなんて低級言語を真剣にやってるバカ
言い訳は色々あるんだろうけどそろそろちゃんとしたのを覚える時期だよ
2019/02/01(金) 16:15:57.80ID:9mJigrZN
>>779
心が病んでるな、かわいそうに。
2019/02/01(金) 17:19:33.59ID:oMFegD+z
低級言語・高級言語の意味すら分かってないのって
かわいいな
2019/02/01(金) 18:56:31.92ID:dMBA0PwK
もしレベル的な意味合いで貶すなら下級または低俗じゃないかな
低級だと金額的な意味合いだからオフィス製品みたいな安い言語使いやがって、という意味か
高い開発言語ってなんだろ
2019/02/01(金) 19:14:07.93ID:OpRhgdeW
>>779
お前の馬鹿頭ではアセンブラは何言語になっているんだ?
2019/02/01(金) 19:21:01.59ID:69So7CMb
どんな状況で100桁の計算が必要なんだよwwwwww
弾道計算でもするのかよwwwwww

どうしても必要だとして、
16777216を、256×256×256で表現するRGBみたいに、
分離して計算できないの?
2019/02/01(金) 19:48:56.75ID:oMFegD+z
桁数じゃあなくて精度の問題だろ
何桁精度が必要か
全部なら分けて計算するんだろ
整数限定かよ
2019/02/01(金) 20:43:56.48ID:ldeBmXAI
>>762
Mid関数がString型の限界である20 億文字(桁)まで対応出来るようなので、限界まで判定可能です。
実際に試そうと思ったのですが、1000万桁あたりからエラーは起きないものの処理が終わる気配がありませんでした。
また、311桁目から判定がFalseとなり正常に判定できませんので注意してください。
787デフォルトの名無しさん
垢版 |
2019/02/01(金) 21:29:30.54ID:6BaLLxbK
>>772
腹筋イタイwww
2019/02/01(金) 21:35:52.61ID:yy1ts1sJ
>>782
>低級だと金額的な意味合いだから
は?????????
789デフォルトの名無しさん
垢版 |
2019/02/01(金) 23:01:14.33ID:UXXgl86T
>>764
中学生かそれ以下の質問だな
790デフォルトの名無しさん
垢版 |
2019/02/01(金) 23:02:01.30ID:UXXgl86T
>>769
64kbの壁でぐぐれ
2019/02/02(土) 02:17:14.50ID:nzR6xkI9
>>786
こんな馬鹿に人月とかで請求されたらブチ切れる
馬鹿だから時間を食うだけだろ
2019/02/02(土) 03:55:47.52ID:XBSRuYVd
機械よりか人間よりかで低いか高いか
2019/02/02(土) 06:09:03.94ID:jIzNjlQE
>743
何桁通るかは別として、IsNumericって例えば"1.2e3"とか"\30"とかでもTrue返すんだけど、それはいいの?
2019/02/02(土) 09:04:05.51ID:jIzNjlQE
あと"&hDEADBEEF"とか"&o77"とか
ついでに全角/半角が混在しててもTrueだし、文字列の前後にスペースタブ改行なんかが入っててもTrueだね
2019/02/02(土) 11:42:55.97ID:QW9QiURg
declareのシグニチャー間違えたらフリーズするんだけどdllから型情報取れないの?????
2019/02/02(土) 13:15:40.31ID:C6ef9W0S
>>795
調べりゃ出てくるんだからそんな面倒なことしなくてもよくね?
2019/02/02(土) 19:22:50.38ID:VsnxbMPu
そんなに桁数使うことあるの?
桁数ならアセンブラなら言語的な制限がないから
C++のインラインアセンブラで作ってDLL化しておけばいいんじゃない?
ま、あまり桁数が多い場合は外に出しても数字として扱えないだろうから
文字列として扱うしかないけど
2019/02/02(土) 20:08:24.01ID:mZCa7M9L
>>797
アホか
CPUがネイティブで扱える桁数は決まっている
2019/02/02(土) 21:45:51.31ID:l+0aiRcv
8bitCPUがネイティブで扱える電卓は決まっている
2019/02/02(土) 22:18:38.36ID:Ep74GMaU
昔々、256桁の四則演算ルーチン組んだことある。アセンブラで。
今なら VBAでも同じくらいの速度で動くんだろうな…
2019/02/02(土) 22:40:50.50ID:nzR6xkI9
このスレで質問する薄ら馬鹿に匹敵する馬鹿ばっか
Python3使えよというまともな提案が未だなし
2019/02/02(土) 22:57:11.62ID:IQGxMEya
801<カマッテー、カマッテー、ボクチャンヲ カマッテー
2019/02/02(土) 23:30:42.83ID:32vETS5N
シート1をアクティブにしてWEBクエリで取り込んだあとReplaceで置換したいのですが
うまくいきません。なぜかF8でステップ実行したらできるのですが、普通に実行すると置換されません。
何がいけないんでしょうか。
2019/02/03(日) 00:12:07.90ID:1X9tFGjy
>>798
アホか桁繰り上げ繰り下げのフラグを知らんのか?
むかーしのZ80や6502だってメモリの許す限り
際限なく計算出来るわ
2019/02/03(日) 00:35:40.02ID:1X9tFGjy
そもそもそう言った計算方法を
知らなかったとしても
8bitや16bitしか演算に扱えなかった時代に
テレビゲームとかで255や65535を超える
スコアが表示されていたことを思い出せば
普通は人をアホ呼ばわりすることを
書き込む前に気付きそうなもんだけどな
2019/02/03(日) 06:14:34.05ID:eVzJd4zP
そういう処理をアセンブラでしかできないと思ってるからアホだって言われるんだよ
2019/02/03(日) 06:43:05.61ID:Q6V8DKqV
多少非効率になるけどたいていの言語で多倍長演算はできる
なので
> 桁数ならアセンブラなら言語的な制限がないから
とか意味わからん、って話だろ
2019/02/03(日) 06:57:12.02ID:1X9tFGjy
>>806
いや>>798はあからさまに
「CPUがネイティブで扱える桁数は決まっている」からって言ってるんだが?

それに俺は実現方法の一例を挙げただけだと思うが「アセンブラでしか出来ない」なんて
どこに書いてあるんだ?

もっとも、桁数制限のない計算を
もっと効率よくVBAで使用する方法が
あるのであればそれはそれで聞いてみたいけど
2019/02/03(日) 07:06:03.78ID:1X9tFGjy
>>807
効率を考えなければ別にC++の時点で出来るんだよ
なんでC++からインラインアセンブラを
使用するような話をしていると思う?
2019/02/03(日) 07:34:17.85ID:Q6V8DKqV
>>808-809
>>797を見てからレスしなよ…
2019/02/03(日) 08:52:19.94ID:kk/DtOkp
>>805
まあ、単位が100点だと、後ろの00は飾りだと思うけどな。
2019/02/03(日) 09:10:44.36ID:eVzJd4zP
>>808-809
なに効率とか後付けしてんだアホ

あと「コンパイラのインストールをセキュリティポリシーで禁止されている」って書いてあるのを読めてないのもアホ
813デフォルトの名無しさん
垢版 |
2019/02/03(日) 09:36:56.46ID:C7VVL/VH
ゼビウス1000万点超えは9999990で表示が止まるがゲーム続行
2019/02/03(日) 09:40:40.04ID:J1QLe6/n
足し算ならExcelでも実用レベルで作れるわ
2019/02/03(日) 10:00:11.19ID:tEc8TngX
>>812
> あと「コンパイラのインストールをセキュリティポリシーで禁止されている」って書いてあるのを読めてないのもアホ
今時C#とかVB.NETのコンパイラなんてインストールいらんぞ
情弱なのかXPでドヤってるのかは知らんけどw
2019/02/03(日) 10:19:47.32ID:vrXjtSxX
>>812
今のWindowsはインストールしなくてもC#コンパイラが最初から入ってる
2019/02/03(日) 10:39:36.74ID:eVzJd4zP
誰がC#とかVBの話してんだよアホども
2019/02/03(日) 11:12:27.82ID:tEc8TngX
>>817
コンパイラの話な
恥ずかしいからもう出てくんなw
819デフォルトの名無しさん
垢版 |
2019/02/03(日) 11:42:00.66ID:o6ig8vkN
>>818←恥を知らないプロさんwww
2019/02/03(日) 12:05:01.97ID:Q6V8DKqV
ダサw
2019/02/03(日) 15:02:23.40ID:kTgfWuu8
>>817
日本語に不自由か真性のバカ発見
2019/02/03(日) 15:51:29.62ID:xJhhUajw
html?のようなパラメーターのあるURLから ActiveSheet.QueryTables.Add を使って
WEBクエリで取り込むにはどうすればいいでしょうか?
一部変数を使うのですが文字列を結合するやり方ではうまくいきません。
2019/02/03(日) 16:02:39.05ID:vrXjtSxX
>>822
認証やクッキーが必要か、URLが間違ってるか、エンコードが必要か、原因は色々考えられる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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