!extend:checked:vvvvv:1000:512
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
※前スレ
Excel VBA 質問スレ Part49©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1498410914/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Excel VBA 質問スレ Part50 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 7e6d-ffY6)
2017/08/27(日) 12:40:17.57ID:LjjEWylk0332デフォルトの名無しさん (ワッチョイ 06e4-vS2A)
2017/09/23(土) 22:09:48.51ID:paUCbsLX0333デフォルトの名無しさん (ワッチョイ 466d-uAR+)
2017/09/23(土) 22:56:39.62ID:7cmO2hJI0 vbaとExcelで数値とbooleanの変換が変わるのは怖い
334デフォルトの名無しさん (ワッチョイ 238f-PvnN)
2017/09/24(日) 00:06:38.99ID:CZiBIXmW0 きっと〜、あなたは もどってくるだろぅをー
335デフォルトの名無しさん (ワッチョイ af8b-bXGz)
2017/09/24(日) 02:19:39.33ID:3BjqQEbI0 ハイ戻ってきましたぁ!
また調子こいた教えたがりがしゃしゃってんのか?
バカはどいつだ?
また調子こいた教えたがりがしゃしゃってんのか?
バカはどいつだ?
336デフォルトの名無しさん (イモイモ Se66-Dc1X)
2017/09/24(日) 03:07:22.68ID:2VO5tOtwe ∧_∧
( ´・ω・)
( つ旦O
と_)_)
( ´・ω・)
( つ旦O
と_)_)
337デフォルトの名無しさん (ワッチョイ 2b8f-z8ZY)
2017/09/24(日) 08:32:58.01ID:wIEwKcgM0 >>331
Not 1と書くシーンがわからんが、素直に(?)Not TrueとかFalse とか書けば?
Not 1と書くシーンがわからんが、素直に(?)Not TrueとかFalse とか書けば?
338デフォルトの名無しさん (ワッチョイ eb6f-Dc1X)
2017/09/24(日) 08:50:08.02ID:y7FzpsGf0 ドイツの技術は世界一ィィィ
339デフォルトの名無しさん (ワッチョイ 466d-PvnN)
2017/09/24(日) 08:51:55.94ID:sE41CGP30 Not Trueは新しいな
340デフォルトの名無しさん (ワッチョイ 466d-2rpO)
2017/09/24(日) 08:53:02.43ID:sE41CGP30 ツール→参照設定で全てを参照する方法はありますか?
341デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 09:43:55.42ID:SDtHFGLja >>314
ここで言われてる初心者ってのは殆どの場合、他の言語も初心者ってことだぞ。
技術的に初心者だから初心者と呼ばれてる訳じゃない。
自分の画面を見ることが出来ない相手にも伝わるように書くとか、条件を小出しにするとか、相手をロボットか何かと勘違いしてるような初心者以前の問題が有るから否定的な意味で初心者と言われてる。
それにVBAを片手間とか簡単に言うのもどうなんかね?
あまり使ったこと無い奴ほどそういうこと言ってるような気がするね。
内容が何ーつ無くて罵倒しか出来ない初心者君の真価が問われてる。
ここで言われてる初心者ってのは殆どの場合、他の言語も初心者ってことだぞ。
技術的に初心者だから初心者と呼ばれてる訳じゃない。
自分の画面を見ることが出来ない相手にも伝わるように書くとか、条件を小出しにするとか、相手をロボットか何かと勘違いしてるような初心者以前の問題が有るから否定的な意味で初心者と言われてる。
それにVBAを片手間とか簡単に言うのもどうなんかね?
あまり使ったこと無い奴ほどそういうこと言ってるような気がするね。
内容が何ーつ無くて罵倒しか出来ない初心者君の真価が問われてる。
342デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 09:51:58.93ID:gFeQddMX0343デフォルトの名無しさん (ワッチョイ 2b8f-z8ZY)
2017/09/24(日) 10:06:08.42ID:wIEwKcgM0 >>339
ワシにとって Not 1はNot true程度には奇抜や
ワシにとって Not 1はNot true程度には奇抜や
344デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 10:11:23.30ID:gFeQddMX0 Not 1 は普通に使うけど?
LSB だけ変更したい時とか
LSB だけ変更したい時とか
345デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 10:26:12.50ID:J5lzydll0 「Not 1」と直接書くわけじゃなくて0/1を返す関数の返り値に対してのことだろ
346デフォルトの名無しさん (スププ Sdaa-z8ZY)
2017/09/24(日) 10:29:39.61ID:D9ok3B4cd347デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 11:00:50.23ID:gFeQddMX0348デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 11:49:34.08ID:SDtHFGLja349デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 12:09:02.98ID:gFeQddMX0 >>348
スッカスカの内容あるとか言われてもなぁ w
スッカスカの内容あるとか言われてもなぁ w
350デフォルトの名無しさん (ワッチョイ 466d-PvnN)
2017/09/24(日) 12:51:48.98ID:sE41CGP30 >>349
君のレスには内容ないけど、Sa6b-XzByは内容のあるレスをし続けているぞ
君のレスには内容ないけど、Sa6b-XzByは内容のあるレスをし続けているぞ
351デフォルトの名無しさん (ドコグロ MMc2-gXon)
2017/09/24(日) 13:05:01.11ID:/081jZZtM352デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 13:52:50.28ID:SDtHFGLja353デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 15:19:23.40ID:gFeQddMX0 >>352
いったいお前は誰と戦ってるんだよ w
いったいお前は誰と戦ってるんだよ w
354デフォルトの名無しさん (ワッチョイ af8b-bXGz)
2017/09/24(日) 15:25:16.48ID:3BjqQEbI0 このバカよっぽど悔しかったんだなw
支離滅裂だけど悔しさだけは痛い程伝わるよ ID:SDtHFGLjaくん
だが俺にバカを嘲笑うのをやめろと言うのは土台無理な話だ
だってバカは面白いんだものw
これくらいはその小さな脳ミソでも理解出来るよね?おバカさんw
支離滅裂だけど悔しさだけは痛い程伝わるよ ID:SDtHFGLjaくん
だが俺にバカを嘲笑うのをやめろと言うのは土台無理な話だ
だってバカは面白いんだものw
これくらいはその小さな脳ミソでも理解出来るよね?おバカさんw
355デフォルトの名無しさん (ワッチョイ ff3d-hoCt)
2017/09/24(日) 16:43:54.18ID:vk2rgPVS0 この罵倒しかしないヤツはVBAコードの一つも読めないのに何年も前から張り付いている本当の意味での異常者で、
どうも現実の生活で誰にも構ってもらえないからネットで罵倒を繰り返してレスポンスをもらって喜んでいるみたいなので、
各員は餌を与えないでください。いつまでも無意味なレスがついて荒れるだけです。
対策として「晒したコードに対し具体的なコードをつけて指摘しているもの以外は相手にしない」っていうテンプレでも追加してほしい。
どうも現実の生活で誰にも構ってもらえないからネットで罵倒を繰り返してレスポンスをもらって喜んでいるみたいなので、
各員は餌を与えないでください。いつまでも無意味なレスがついて荒れるだけです。
対策として「晒したコードに対し具体的なコードをつけて指摘しているもの以外は相手にしない」っていうテンプレでも追加してほしい。
356デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 16:48:20.79ID:jWeMnfEta357デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 16:53:01.46ID:jWeMnfEta358デフォルトの名無しさん (ワッチョイ 466d-NfCk)
2017/09/24(日) 16:54:20.86ID:sE41CGP30359デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 16:59:29.20ID:J5lzydll0 そんなことより、
0以外の数値をTrue扱いしたいのに、
If Not x が IfNot (x)じゃなくて If (Not x) なのが非常によろしくない
0以外の数値をTrue扱いしたいのに、
If Not x が IfNot (x)じゃなくて If (Not x) なのが非常によろしくない
360デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 17:04:51.18ID:J5lzydll0361デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 17:05:32.05ID:jWeMnfEta >>358
コメントの代わりに
#If 0 Then
は昔よく使ってたなあ。
最近は全く使わなくなった。
Not 1もNot TrueもIf -1 Thenも使ったこと無いな。
こういうのはその人の趣味というか癖みたいな問題だわな。
どれが良いとか悪いとかの問題じゃない。
コメントの代わりに
#If 0 Then
は昔よく使ってたなあ。
最近は全く使わなくなった。
Not 1もNot TrueもIf -1 Thenも使ったこと無いな。
こういうのはその人の趣味というか癖みたいな問題だわな。
どれが良いとか悪いとかの問題じゃない。
362デフォルトの名無しさん (ワッチョイ ff3d-hoCt)
2017/09/24(日) 17:08:48.88ID:vk2rgPVS0 しかし言うほど
If Not [Integer] Then
という書き方をするだろうか?
If Not Book Is Nothing Then
みたいな書き方はするけど、数値でNot使う事自体あんまりない気がする。
If Not [Integer] Then
という書き方をするだろうか?
If Not Book Is Nothing Then
みたいな書き方はするけど、数値でNot使う事自体あんまりない気がする。
363デフォルトの名無しさん (ワッチョイ a71e-NQgr)
2017/09/24(日) 17:09:54.28ID:3B64fACL0 MS系のBASICはずっと昔から「0」と「0以外」で真偽を判定するから、論理式では1もNot 1もありえない
もちろん-1なんかも使わない
俺の知る限り、約40年前に発売されたN-BASICの時代からこの仕様は変わってない
もちろん-1なんかも使わない
俺の知る限り、約40年前に発売されたN-BASICの時代からこの仕様は変わってない
364デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 17:11:40.94ID:gFeQddMX0365デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 17:14:57.98ID:gFeQddMX0366デフォルトの名無しさん (ワッチョイ 466d-NfCk)
2017/09/24(日) 17:20:20.54ID:sE41CGP30367デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 17:29:04.13ID:gFeQddMX0 >>330
> 「Nullが含まれる式は必ずFalseとして判定される」と書かなきゃいけなかった。
ところがどっこい
If 2 Or Null Then 〜 Else 〜 End If
は True (と言うか整数の2)と評価されたりするんだな
0 Or Null は Null になるとか挙動が読めないけど
@Excel 2013
> 「Nullが含まれる式は必ずFalseとして判定される」と書かなきゃいけなかった。
ところがどっこい
If 2 Or Null Then 〜 Else 〜 End If
は True (と言うか整数の2)と評価されたりするんだな
0 Or Null は Null になるとか挙動が読めないけど
@Excel 2013
368デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 17:29:31.46ID:jWeMnfEta369デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 17:30:59.09ID:gFeQddMX0 >>366
True ならわかるけどFalseが0以外の言語ってあったっけ?
True ならわかるけどFalseが0以外の言語ってあったっけ?
370デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 17:34:26.89ID:gFeQddMX0371デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 17:38:18.30ID:jWeMnfEta372デフォルトの名無しさん (ワッチョイ 238f-z8ZY)
2017/09/24(日) 18:38:38.48ID:yAXo7hpi0 >>358
だろうな。ワシも書いたの初めてや。そのレベルの奇抜さって事。
だろうな。ワシも書いたの初めてや。そのレベルの奇抜さって事。
373デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 18:50:18.13ID:J5lzydll0 isSomeStatusが整数を返す関数のとき
If isSomeStatus(x) Then 〜
を使ってて、つい
If Not isSomeStatus(x) Then 〜
と書いてしまうことはない?
If isSomeStatus(x) Then 〜
を使ってて、つい
If Not isSomeStatus(x) Then 〜
と書いてしまうことはない?
374デフォルトの名無しさん (ワッチョイ af8b-lQLN)
2017/09/24(日) 18:54:12.91ID:3BjqQEbI0375デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 20:10:34.74ID:gFeQddMX0 >>373
> isSomeStatusが整数を返す関数のとき
なら
> If isSomeStatus(x) Then 〜
なんて書かないで
If isSomeStatus(x) <> 0 Then 〜
って書く
> isSomeStatusが整数を返す関数のとき
なら
> If isSomeStatus(x) Then 〜
なんて書かないで
If isSomeStatus(x) <> 0 Then 〜
って書く
376デフォルトの名無しさん (ワッチョイ 238f-z8ZY)
2017/09/24(日) 20:15:55.53ID:yAXo7hpi0377デフォルトの名無しさん (ワッチョイ ff3d-hoCt)
2017/09/24(日) 20:21:50.61ID:vk2rgPVS0 使ってるうちに関数の返値型は暗記するし、そもそも一度は確認するだろうから、
真偽値以外でNotをうっかり使うというケースはあんまりなさそう。
というかうっかりNot 整数をやっちゃったぜって事ならイミディエイトウィンドウで確認する癖を付けた方がいいと思う。
真偽値以外でNotをうっかり使うというケースはあんまりなさそう。
というかうっかりNot 整数をやっちゃったぜって事ならイミディエイトウィンドウで確認する癖を付けた方がいいと思う。
378デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 20:22:09.47ID:J5lzydll0 >>375-376
なるほど
なるほど
379デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 20:25:18.45ID:J5lzydll0 組み込みの Is〜 が As Boolean になっているけど
自分の Is〜 は As Long にしたくてそうしてるんだけど、返り値を受けた時の書き方を
統一的に扱えないのが悩みの種なんですよね...
自分の Is〜 は As Long にしたくてそうしてるんだけど、返り値を受けた時の書き方を
統一的に扱えないのが悩みの種なんですよね...
380デフォルトの名無しさん (ワッチョイ 238f-z8ZY)
2017/09/24(日) 20:48:20.98ID:yAXo7hpi0 >>379
それは(失礼を承知で言えば、)ネーミングにセンスが無い。isほにゃららFunctionはBooleanに統一すべし。
それは(失礼を承知で言えば、)ネーミングにセンスが無い。isほにゃららFunctionはBooleanに統一すべし。
381デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 21:04:44.94ID:J5lzydll0382デフォルトの名無しさん (ワッチョイ ff3d-hoCt)
2017/09/24(日) 21:06:12.98ID:vk2rgPVS0 同じ関数名で宣言するとユーザー定義関数の方が優先されるはずだから、
いっそ組み込み系のIs〜を全て再定義してしまえばいいのではないだろうか。
いっそ組み込み系のIs〜を全て再定義してしまえばいいのではないだろうか。
383デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 21:12:51.54ID:J5lzydll0 もちろん「Isなんちゃら〜」の返り値を合計した後で -1 をかければいいんだけど、
Trueが-1であることに依存するのもなんかこう、しっくりこないんですよね。
Trueが-1であることに依存するのもなんかこう、しっくりこないんですよね。
384デフォルトの名無しさん (ワッチョイ 238f-z8ZY)
2017/09/24(日) 21:15:05.28ID:yAXo7hpi0 >>381
うむ、気持ちはわからないでは無いがそれは駄目だ。関数名cntなんとかとかnumなんとかとか「〜の数を返す」ヤツらルールを決めて統一すべし。
うむ、気持ちはわからないでは無いがそれは駄目だ。関数名cntなんとかとかnumなんとかとか「〜の数を返す」ヤツらルールを決めて統一すべし。
385デフォルトの名無しさん (ワッチョイ 238f-z8ZY)
2017/09/24(日) 21:18:21.48ID:yAXo7hpi0 >>383
-1をかける、とかそんな言語仕様に強く依存する(グロテスクな)コーディングはしないほうが良いと思わない?
-1をかける、とかそんな言語仕様に強く依存する(グロテスクな)コーディングはしないほうが良いと思わない?
386デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 21:18:39.00ID:J5lzydll0387デフォルトの名無しさん (ワッチョイ 238f-z8ZY)
2017/09/24(日) 21:24:09.04ID:yAXo7hpi0388デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 21:26:50.23ID:J5lzydll0 いや、
大改造はわくわくする
大改造はわくわくする
389デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 22:16:54.54ID:SDtHFGLja >>374
小学生に罵倒されれば誰でも頭に来る。
内容が無ければ尚更だ。
それに、小学生はきちんと躾ける主義でね。
バカにはちゃんとバカと言うべきなんだ。
質問に関係無いことしか書かないバカが人に対してここに来るななどと言う資格があるわけ無いだろう。
そんなことも分からないから小学生と呼ばれるんだ。
小学生に罵倒されれば誰でも頭に来る。
内容が無ければ尚更だ。
それに、小学生はきちんと躾ける主義でね。
バカにはちゃんとバカと言うべきなんだ。
質問に関係無いことしか書かないバカが人に対してここに来るななどと言う資格があるわけ無いだろう。
そんなことも分からないから小学生と呼ばれるんだ。
390デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 22:20:23.66ID:SDtHFGLja391デフォルトの名無しさん (ワッチョイ af8b-Ncsu)
2017/09/24(日) 22:24:54.53ID:3BjqQEbI0392デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 22:29:18.40ID:SDtHFGLja 元の引数の値に合計を入れて返しちゃうのはさすがに変な気がするけど。
393デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/24(日) 22:30:18.80ID:SDtHFGLja394デフォルトの名無しさん (ワッチョイ af8b-Ncsu)
2017/09/24(日) 22:39:03.86ID:3BjqQEbI0395デフォルトの名無しさん (ワッチョイ 3bb1-Dc1X)
2017/09/24(日) 22:52:38.60ID:z5Fx3/zG0 誰か助けてください。
今日一日かけて作ったマクロが、先程エクセルがクラッシュしてしまい自動修復が働き、マクロだけ消失してしまいました。
クラッシュ直後のxlsmファイルをZIPにして「vbaProject.bin」を取り出したりは出来たのですが、
新しいxlsmに取り込んでもやっぱり開くと修復で消えてしまうようで・・・
何とかしてソースコードを取り出すことはできないでしょうか・・。
今日一日かけて作ったマクロが、先程エクセルがクラッシュしてしまい自動修復が働き、マクロだけ消失してしまいました。
クラッシュ直後のxlsmファイルをZIPにして「vbaProject.bin」を取り出したりは出来たのですが、
新しいxlsmに取り込んでもやっぱり開くと修復で消えてしまうようで・・・
何とかしてソースコードを取り出すことはできないでしょうか・・。
396デフォルトの名無しさん (アークセー Sxa3-ZMJA)
2017/09/24(日) 23:42:55.80ID:ALrIElNwx 一日で作れるマクロなら大した分量じゃないだろうしもう一回同じコードを組めば良いんじゃね
397デフォルトの名無しさん (ワッチョイ eb6f-Dc1X)
2017/09/24(日) 23:52:01.97ID:y7FzpsGf0398デフォルトの名無しさん (ワッチョイ 3bb1-Dc1X)
2017/09/24(日) 23:53:04.05ID:z5Fx3/zG0399デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/25(月) 00:00:34.87ID:vsx3Rgi+0400デフォルトの名無しさん (ワッチョイ ff3d-hoCt)
2017/09/25(月) 00:01:40.54ID:AH/NDHtT0 >>398
確かにエクセルは保存をかけても終了するまで保存しないんだよな。たぶんXML形式にして保存する関係からだとは思うけど。
自動バックアップからなら修復の可能性はあるけど、マクロだけ消えたならそのファイル自体は元々マクロ書く前の状態なんじゃないかな。
確かにエクセルは保存をかけても終了するまで保存しないんだよな。たぶんXML形式にして保存する関係からだとは思うけど。
自動バックアップからなら修復の可能性はあるけど、マクロだけ消えたならそのファイル自体は元々マクロ書く前の状態なんじゃないかな。
401デフォルトの名無しさん (ワッチョイ 4ab3-UH40)
2017/09/25(月) 00:02:16.67ID:Ch3TwtIS0 あはは、俺なんかそんなのしょっちゅうだぜW
ノリノリで良さげなコードが書けてる時に限って突然落ちやがるWW
もうね、マメに保存する癖を付けないとどうにもならないよね
ノリノリで良さげなコードが書けてる時に限って突然落ちやがるWW
もうね、マメに保存する癖を付けないとどうにもならないよね
402デフォルトの名無しさん (ワッチョイ 06e4-vS2A)
2017/09/25(月) 00:05:47.41ID:PaZojpJN0 >>367
Orのヘルプに書いてある通り
True Or Null はTrue
False Or Null はNull
で、
CBool(2)はTrue
CBool(0)はFalse
なので、仕様通りの動作ではある
Orはどちらかが真なら真なので、片方が不定でも真だという理屈だな
ショートサーキットしないくせにな
どちらかが偽なら、もう片方に従うから、もう片方が不定なら不定
まあ、理屈として考えれば納得はできる
Orのヘルプに書いてある通り
True Or Null はTrue
False Or Null はNull
で、
CBool(2)はTrue
CBool(0)はFalse
なので、仕様通りの動作ではある
Orはどちらかが真なら真なので、片方が不定でも真だという理屈だな
ショートサーキットしないくせにな
どちらかが偽なら、もう片方に従うから、もう片方が不定なら不定
まあ、理屈として考えれば納得はできる
403デフォルトの名無しさん (ワッチョイ 3bb1-Dc1X)
2017/09/25(月) 00:07:49.88ID:kbDcK8g50 >>396
朝から書き続けてたから1000行以上ある。かなりつらい。
何度同じような書いてもクラッシュするので原因を調査していたのですが、判明したので報告します。
Windows10 / Excel 2016
1.一番最初のコーディング中にクラッシュした原因
※そもそも取得のために引数にした配列を直接書き換えようとするのが間違いか。
↓下記変数を関数で生成
Dim fl() as string
call GetFileList(fl)
-----
function GetFileList(ByRef fl() as string)
Redim fl(1 to 123,1 to 1)
end function
-----
↓この構文を入力してEnter押すと必ずエクセルがクラッシュする。
ReDim Preserve fl(, 1 To 2)
↓正しいコード。これならクラッシュしない。
ReDim Preserve fl(LBound(fl) To UBound(fl), 1 To 2)
次レスへ続く
朝から書き続けてたから1000行以上ある。かなりつらい。
何度同じような書いてもクラッシュするので原因を調査していたのですが、判明したので報告します。
Windows10 / Excel 2016
1.一番最初のコーディング中にクラッシュした原因
※そもそも取得のために引数にした配列を直接書き換えようとするのが間違いか。
↓下記変数を関数で生成
Dim fl() as string
call GetFileList(fl)
-----
function GetFileList(ByRef fl() as string)
Redim fl(1 to 123,1 to 1)
end function
-----
↓この構文を入力してEnter押すと必ずエクセルがクラッシュする。
ReDim Preserve fl(, 1 To 2)
↓正しいコード。これならクラッシュしない。
ReDim Preserve fl(LBound(fl) To UBound(fl), 1 To 2)
次レスへ続く
404デフォルトの名無しさん (ワッチョイ 3bb1-Dc1X)
2017/09/25(月) 00:12:44.30ID:kbDcK8g50 >>403
2.クラッシュした後にマクロが消失した理由
とあるモジュール(*.bas)を取り込むと、上書き保存は問題なくできるのだが次回ブックを開いた時必ず「vbaProject.bin」が消失することが判明した。
クラッシュしなくなるまでの手順
@新規エクセルブックに移行
Aインポートしたbasのコードだけをコピーして新規モジュールに貼り付け
B下記のような定数があったので、FileSystemObjectのクラスと競合しないよう別の名前に変更
Enum flGetMode
File = 1
Folder = 2
All = 3
End Enum
↓
Enum flGetMode
flFile = 1
flFolder = 2
flAll = 3
End Enum
>>399
そうだな・・・今度からエクセル落とす前にモジュールだけ取り出すことにするわ。
>>400
エクセル、マジ、怖い EMK
>>401
今回のはマメに保存するというより、ブックを別ファイルにバックアップしないと対処できないかな。
今度から毎時間スナップショット撮るようにするわ
2.クラッシュした後にマクロが消失した理由
とあるモジュール(*.bas)を取り込むと、上書き保存は問題なくできるのだが次回ブックを開いた時必ず「vbaProject.bin」が消失することが判明した。
クラッシュしなくなるまでの手順
@新規エクセルブックに移行
Aインポートしたbasのコードだけをコピーして新規モジュールに貼り付け
B下記のような定数があったので、FileSystemObjectのクラスと競合しないよう別の名前に変更
Enum flGetMode
File = 1
Folder = 2
All = 3
End Enum
↓
Enum flGetMode
flFile = 1
flFolder = 2
flAll = 3
End Enum
>>399
そうだな・・・今度からエクセル落とす前にモジュールだけ取り出すことにするわ。
>>400
エクセル、マジ、怖い EMK
>>401
今回のはマメに保存するというより、ブックを別ファイルにバックアップしないと対処できないかな。
今度から毎時間スナップショット撮るようにするわ
405デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/25(月) 03:13:19.89ID:eYOvRkV+a406デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/25(月) 03:21:24.47ID:kQfKGPg6a407デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/25(月) 03:26:59.82ID:kQfKGPg6a408デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/25(月) 06:57:33.96ID:vsx3Rgi+0 ExcelがクラッシュするならWord VBAで書けばいいのに
(半分マジ)
(半分マジ)
409デフォルトの名無しさん (ワッチョイ 0a06-hoCt)
2017/09/25(月) 07:18:55.09ID:CDmpdlRb0 >>399
ファイルのエクスポートってのは知ってるけど「モジュールごと」ってのは具体的にどうするんです?
ファイルのエクスポートってのは知ってるけど「モジュールごと」ってのは具体的にどうするんです?
410デフォルトの名無しさん (ワッチョイ 466d-uAR+)
2017/09/25(月) 07:24:22.76ID:dVWzg8Zn0 スプレッドシートで開いてみるとか
ファイル壊れてたらダメ化
ファイル壊れてたらダメ化
411デフォルトの名無しさん (ワッチョイ 06e4-XBbO)
2017/09/25(月) 07:25:07.82ID:5kCjH3U30 >>341
はっきり言おう
VBA自体が間口が広いために初心者が扱い易い言語ではあるが
大きなシステムやWeb系には向いていないために
全体から見れば「VBAの上級者」というのは
所詮井の中の蛙に過ぎない。
自称VBA上級者よりVBAの上級者じゃなくても
JAVAや.Netの知識を多少なりとも持っていて
そっちも出来るという方が基本的に給料が高いというのはそのせい。
つまりここで初心者がどうのと煽っている奴も
所詮は初心者の域を超えていない。
初心者が初心者を煽ってるだけ。
もっとも俺も自分を初心者じゃないなんてとても
おこがましくて言えないけどね。
はっきり言おう
VBA自体が間口が広いために初心者が扱い易い言語ではあるが
大きなシステムやWeb系には向いていないために
全体から見れば「VBAの上級者」というのは
所詮井の中の蛙に過ぎない。
自称VBA上級者よりVBAの上級者じゃなくても
JAVAや.Netの知識を多少なりとも持っていて
そっちも出来るという方が基本的に給料が高いというのはそのせい。
つまりここで初心者がどうのと煽っている奴も
所詮は初心者の域を超えていない。
初心者が初心者を煽ってるだけ。
もっとも俺も自分を初心者じゃないなんてとても
おこがましくて言えないけどね。
412デフォルトの名無しさん (ワッチョイ a71e-NQgr)
2017/09/25(月) 07:25:18.87ID:8Tm148qB0 >>409
VBEのプロジェクトエクスプローラでモジュール名を右クリ
VBEのプロジェクトエクスプローラでモジュール名を右クリ
413デフォルトの名無しさん (スップ Sd4a-6FY3)
2017/09/25(月) 07:36:56.29ID:VZWzPiEFd >>409
コードのコピペとか右クリからエクスポート(E)...じゃなくて直接ドラッグ&ドロップするの
コードのコピペとか右クリからエクスポート(E)...じゃなくて直接ドラッグ&ドロップするの
414デフォルトの名無しさん (ワッチョイ 466d-RgoO)
2017/09/25(月) 07:48:23.85ID:dVWzg8Zn0 >>411
その話題はもういいよ
その話題はもういいよ
415デフォルトの名無しさん (オッペケ Sra3-Ncsu)
2017/09/25(月) 12:29:49.86ID:nP4bJmmCr416デフォルトの名無しさん (ワントンキン MMfa-GOPe)
2017/09/25(月) 12:51:20.05ID:b3e1p2YsM 403だけど、会社のEXCELでも試してみたらやっぱりクラッシュする
redim aaa(,1 to 2)
まぁコードとしては間違いだから滅多にこんな書き方しないんだけどさ
でも
redim aaa(,1)
なら、ただのエラー(赤字)になるだけでクラッシュしないから納得行かないわ
一応MSには送っておいた。
参考まで。
redim aaa(,1 to 2)
まぁコードとしては間違いだから滅多にこんな書き方しないんだけどさ
でも
redim aaa(,1)
なら、ただのエラー(赤字)になるだけでクラッシュしないから納得行かないわ
一応MSには送っておいた。
参考まで。
417デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/25(月) 13:08:28.70ID:eYOvRkV+a >>411
JAVAや.netのできる上級者も多いと思うが。
というか、上級者は他の言語もできる奴が多いだろ。
主戦上がどこかというだけだし、そもそも主戦上だって他言語の人もいるだろ。
俺がどうあってもかなわないと思う人はVBA上でアセンブラ使ってるし。
実際、俺も大したレベルじゃないがCやJAVA、.netも書くしアセンブラも勉強中。
VBA使いだからといってレベルが低いわけじゃない。
JAVAや.netのできる上級者も多いと思うが。
というか、上級者は他の言語もできる奴が多いだろ。
主戦上がどこかというだけだし、そもそも主戦上だって他言語の人もいるだろ。
俺がどうあってもかなわないと思う人はVBA上でアセンブラ使ってるし。
実際、俺も大したレベルじゃないがCやJAVA、.netも書くしアセンブラも勉強中。
VBA使いだからといってレベルが低いわけじゃない。
418デフォルトの名無しさん (スップ Sd4a-6FY3)
2017/09/25(月) 14:27:01.66ID:VZWzPiEFd419デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/25(月) 16:13:22.32ID:715ByDora >>418
正確にはマシン語だね。
VBAとアセンブラでググれば見つかる。
マシン語のコードを変数に格納してメモリ操作して実行させる。
VBAの制限のために普通じゃ出来ないことをしようとする場合や普通に書くとどうしてもスマートじゃない場合に使う。
個人的に使いたい場面が2つ有るけど技術的に自分のものに出来て無いので使ったことは無いが。
正確にはマシン語だね。
VBAとアセンブラでググれば見つかる。
マシン語のコードを変数に格納してメモリ操作して実行させる。
VBAの制限のために普通じゃ出来ないことをしようとする場合や普通に書くとどうしてもスマートじゃない場合に使う。
個人的に使いたい場面が2つ有るけど技術的に自分のものに出来て無いので使ったことは無いが。
420デフォルトの名無しさん (スップ Sd4a-6FY3)
2017/09/25(月) 20:21:50.79ID:VZWzPiEFd >>419
確かに、ぐぐったらすぐに出てきたw
確かに、ぐぐったらすぐに出てきたw
421デフォルトの名無しさん (ワッチョイ ff3d-hoCt)
2017/09/25(月) 20:57:17.82ID:AH/NDHtT0 俺もマシン語とアセンブラ言語を勉強したなぁ。
早見表片手にバイナリ読むくらいのところまではいけたけど、
実際にメモリに転写して実行するとか手間が多すぎてあきらめたわ。
マシン語もシミュレータでOS作りに挑戦してHello Worldで止まってる。
早見表片手にバイナリ読むくらいのところまではいけたけど、
実際にメモリに転写して実行するとか手間が多すぎてあきらめたわ。
マシン語もシミュレータでOS作りに挑戦してHello Worldで止まってる。
422デフォルトの名無しさん (アウアウカー Sa6b-XBbO)
2017/09/25(月) 21:10:50.83ID:um3WFj5Ia >>419
これは駄目だないろんな意味で
これは駄目だないろんな意味で
423デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/25(月) 22:14:52.84ID:715ByDora >>421
VBA上でやる場合はアセンブラが主体じゃなくてVBAで出来ない部分だけに適用するわけだから、アセンブラ自体はそれほど複雑じゃないと思う。
自分の場合は別の言語でmemcmp使ったことがあって、それをVBAに移植する場合に使いたい。
ただ、そのプログラムをVBAで実現する意味が薄いように感じるのと別にmemcmp使わなくても代替あるかもしれないんで実際に組むかどうかは分からないんだけど。
VBA上でやる場合はアセンブラが主体じゃなくてVBAで出来ない部分だけに適用するわけだから、アセンブラ自体はそれほど複雑じゃないと思う。
自分の場合は別の言語でmemcmp使ったことがあって、それをVBAに移植する場合に使いたい。
ただ、そのプログラムをVBAで実現する意味が薄いように感じるのと別にmemcmp使わなくても代替あるかもしれないんで実際に組むかどうかは分からないんだけど。
424デフォルトの名無しさん (スプッッ Sd4a-6FY3)
2017/09/25(月) 22:22:34.05ID:eJeLm77Wd なんでそんなにしてまで?
425デフォルトの名無しさん (ワッチョイ ff3d-hoCt)
2017/09/25(月) 22:35:59.26ID:AH/NDHtT0 >>423-424
まぁそこまでするなら別の言語にした方がいいというか、そもそも発想が逆というか。
オフィス製品を拡張する上で「守られた」プログラミングが出来るのがVBAの特徴だし、
目的を絞っているから実用的なプログラムを短時間でくみ上げられるという長所があるのであって、
マシン語まで勉強してやるくらいなら、その手の目的で作られたC++言語辺りを頼るべきなんだよな。
もちろんそれが出来ない環境だから俺もマシン語を勉強するに至ったんだけど、
けっきょく型安全すら保証されない世界で何かを組み上げるってのは趣味の世界の話であってVBAの本質からずれてるしね。
ちなみに勉強中にC言語ですらマシン語で直接組むよりも非効率になる可能性が高いと知ったんで学ぶ意味はあったけど。
まぁそこまでするなら別の言語にした方がいいというか、そもそも発想が逆というか。
オフィス製品を拡張する上で「守られた」プログラミングが出来るのがVBAの特徴だし、
目的を絞っているから実用的なプログラムを短時間でくみ上げられるという長所があるのであって、
マシン語まで勉強してやるくらいなら、その手の目的で作られたC++言語辺りを頼るべきなんだよな。
もちろんそれが出来ない環境だから俺もマシン語を勉強するに至ったんだけど、
けっきょく型安全すら保証されない世界で何かを組み上げるってのは趣味の世界の話であってVBAの本質からずれてるしね。
ちなみに勉強中にC言語ですらマシン語で直接組むよりも非効率になる可能性が高いと知ったんで学ぶ意味はあったけど。
426デフォルトの名無しさん (スプッッ Sd4a-6FY3)
2017/09/25(月) 22:44:28.13ID:eJeLm77Wd 一体何の話をしているのか?
VBA補完というならC/C++で十二分だろうに
それで「実行環境がVBA」という気軽さは保てるんだし
VBA補完というならC/C++で十二分だろうに
それで「実行環境がVBA」という気軽さは保てるんだし
427デフォルトの名無しさん (アウアウカー Sa6b-XzBy)
2017/09/25(月) 22:52:54.75ID:715ByDora >>424
自分はものにして無いので、そこまでしてない。
ものにしてる人にとってはそこまでしてなどと思ってないと思う。
別言語でdll作ってVBAから呼び出すことも出来るだろうけど、そこだけで完結しないのがスマートさに欠けるように感じるからかな。
自分はものにして無いので、そこまでしてない。
ものにしてる人にとってはそこまでしてなどと思ってないと思う。
別言語でdll作ってVBAから呼び出すことも出来るだろうけど、そこだけで完結しないのがスマートさに欠けるように感じるからかな。
428デフォルトの名無しさん (ワッチョイ ff3d-hoCt)
2017/09/25(月) 22:54:34.22ID:AH/NDHtT0 >>426
確かに話がとっちらかって分かりにくくなったが、つまりそういう話をしてる。
でもVBA以外の環境を持てない職場なので仕方なくVBAが補完できる範囲だけでやるしかない。
その補完範囲にマシン語を含めるのはVBAの長所を殺しているのでVBAが想定している範囲の中で最善策を練るべきだと。
ちなみに個人的経験では次善の策としてSQLを使ったら地獄を見た。
確かに話がとっちらかって分かりにくくなったが、つまりそういう話をしてる。
でもVBA以外の環境を持てない職場なので仕方なくVBAが補完できる範囲だけでやるしかない。
その補完範囲にマシン語を含めるのはVBAの長所を殺しているのでVBAが想定している範囲の中で最善策を練るべきだと。
ちなみに個人的経験では次善の策としてSQLを使ったら地獄を見た。
429デフォルトの名無しさん (アウアウカー Sa6b-XBbO)
2017/09/25(月) 23:12:01.96ID:FBvoBYTya >>426
正解。
@まず保守性が酷い。都度ハンドアセンブルするのかって話。
Aラベルが付けられないからブランチ命令などは変更があったとき常にアドレスの相対位置を
設定し直さなければならない。ジャンプ命令みたいな絶対アドレス指定の場合はどうすんだろ。
B生産性が皆無
C中間言語を介在していないのでアーキテキクチャが異なるCPUでは使えない。
どうしてもアセンブラで組みたければC++のインラインアセンブラで素直にdllファイル作れって話。
こんなものどうやって普通にVBA組んでるやつに引き継ぐつもりなんだろうな。
出来ない環境でなければ設計自体を見直すか諦めろと。
正解。
@まず保守性が酷い。都度ハンドアセンブルするのかって話。
Aラベルが付けられないからブランチ命令などは変更があったとき常にアドレスの相対位置を
設定し直さなければならない。ジャンプ命令みたいな絶対アドレス指定の場合はどうすんだろ。
B生産性が皆無
C中間言語を介在していないのでアーキテキクチャが異なるCPUでは使えない。
どうしてもアセンブラで組みたければC++のインラインアセンブラで素直にdllファイル作れって話。
こんなものどうやって普通にVBA組んでるやつに引き継ぐつもりなんだろうな。
出来ない環境でなければ設計自体を見直すか諦めろと。
430デフォルトの名無しさん (スプッッ Sd4a-6FY3)
2017/09/25(月) 23:14:24.47ID:eJeLm77Wd >>429
引き継ぎとかは別にして、まず楽しいのかと
引き継ぎとかは別にして、まず楽しいのかと
431デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/25(月) 23:23:42.83ID:vsx3Rgi+0 >>427
完結ってどういう意味?
「VBA アセンブラ」でググって出てくるページ見ると、既存のcdecl関数を呼び出すことを目標にしてるみたいだけど、
自分はどっちかっていうと「なるべく自分で作ったもので間に合わせたい」という気持ちの方が強いな。
完結ってどういう意味?
「VBA アセンブラ」でググって出てくるページ見ると、既存のcdecl関数を呼び出すことを目標にしてるみたいだけど、
自分はどっちかっていうと「なるべく自分で作ったもので間に合わせたい」という気持ちの方が強いな。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- NHK、受信料の未払い世帯に督促強化へ 民事手続きの新組織を設置 差し押さえなどの強制執行も ★2 [1ゲットロボ★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」★2 [冬月記者★]
- んなっても良いお🏡
- 【悲報】高市早苗を妄信している今の日本人見ると80年前も市民は進んで戦争協力してたんだって理解出来るよね🥺 [616817505]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 日本人、歴史も経済も分からず貧乏に耐えかねて第二次日中戦争を求めてしまう…ヤバイよ [819729701]
- 【朗報】中国との戦争、世論調査で「賛成」が「反対」を上回るwwwwwwwww
- 識者「『フリーパレスチナ』とかイキってる連中が台湾の話になると『中国を怒らせるな!』ってなる。ほんと左翼の正義って薄っぺらい」 [279254606]
