Excel VBA 質問スレ Part45 [無断転載禁止]©5ch.io
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2017/01/03(火) 02:51:16.56ID:9Y8iTik6コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part44
http://echo.2ch.net/test/read.cgi/tech/1479421482/
※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
0877デフォルトの名無しさん
2017/02/16(木) 20:42:31.73ID:/b6gNV/R0878デフォルトの名無しさん
2017/02/16(木) 20:50:13.72ID:6YRpUZ/n気の毒やね
0879デフォルトの名無しさん
2017/02/16(木) 20:51:15.05ID:eA7r2zui指定すべきがどうかは上で散々やってるけど、俺の意見としてはスタイルの問題でどっちでもいい
俺自身は俺の作るVBAプログラムで型を指定してないのは、手抜きだな
(Variant使うなって話じゃないよ。つかうなら原則As Variantで明示する)
ただ、意識して型指定するのはいいけど
指定したからといって言語側が型チェックをちゃんとやってくれると思うなよって話
0880デフォルトの名無しさん
2017/02/16(木) 20:53:55.17ID:7EemdXzw0881デフォルトの名無しさん
2017/02/16(木) 20:54:30.77ID:INRkCvNUいや、改変云々を論点にしたいならそれでもいいけどさ、
それでどうなるの?
マクロなら改変されなくて入力規則は改変されるっていうのは
個人の感想に過ぎないから証明のしようは無いよ。
このスレでアンケートでも取る?
ほぼ全員がVBA使ってるこのスレじゃ意味無いと思うけど。
0882デフォルトの名無しさん
2017/02/16(木) 21:00:36.04ID:6YRpUZ/nおっしゃる通りである
しかしまあ、変数に入れる値の型が明らかな場合はちゃんと指定すべきだと思うけどね
スタイルの差と言われたらそれまでだけども
>>880
保守が全くいらなければその通り
0883デフォルトの名無しさん
2017/02/16(木) 21:04:42.50ID:GoZ0ZsyN俺はマクロまで改変(というかデバッグボタンポチーからの黄色い行削除)された経験あるわ。
だから出来るだけ何も分からないユーザーの目の前に、マクロの挙動を左右する何かを差し出さない方がいい。
なので全ての入力はVariant型で受け取ってマクロ内で型チェックしてMsgboxで処理出来ない旨のメッセージを発行する。
間違っても実行時エラーのメッセージボックスとかそのまま表示させちゃダメ。
あと全員が全員やるってわけじゃないから作業者を限定するとかマクロ外での対処も有効。
0884デフォルトの名無しさん
2017/02/16(木) 21:07:45.31ID:MMs4mAvC>設計・開発・保守・拡張を一人で回すからコードの一つ一つに拘ってられない。
発狂しそうな環境ですねw
前に見たブログで「キナコ」と名乗っている自称事務系OLさんが書いているコードがもう、ありとあらゆるエラーを想定した
ものだったんだが、現場で実用になるコードってのはこういうもんか、俺にはちょっと無理だなと思ってしまった。
「非常用、押すな」と書いてあるボタンを押したがるバカでも安心して使える設計とか母性が無けりゃ無理なんじゃねえかなw
0885デフォルトの名無しさん
2017/02/16(木) 21:16:50.35ID:eA7r2zui思いついた俺が型指定したいのにVariant使う状況ちょろっと書いとくわ
For Eachで使うループ変数
Nullが必要な場合(DB連携なんか)
こいつらはどうしようもない
後はStatic変数とかで初期化チェックにNothing使うときとかも使うか
>>883
>デバッグボタンポチーからの黄色い行削除
あるねぇ
完璧な実行時エラー排除はなかなか難しい
ACCESSならmde(accde)で配布するからまだマシなんだけどねぇ
EXCELにVBAコンパイルしてコード除去するオプションとかないよな?
0886デフォルトの名無しさん
2017/02/16(木) 21:19:33.55ID:W0y5+uWSなにを主張したいコードなのか説明して
0887デフォルトの名無しさん
2017/02/16(木) 21:39:42.51ID:YyV7ugT9まあ設計に無理があるかミスしてるかだねえ
今作ってるツールでテキストボックスの名前で入力するのを指定してるんだが、命名ミスって仕方なく数値と文字受け入れるようにしてるわ
まあ別にVariant全否定するつもりはないから
「仕方ないとき」はあるからね
0888デフォルトの名無しさん
2017/02/16(木) 21:42:12.62ID:YyV7ugT9受け入れ緩くするのもありだが関数ごとにきっちりエラー処理するのが理想じゃね?
0889デフォルトの名無しさん
2017/02/16(木) 22:14:54.98ID:W0y5+uWSでおとしどこは?
0890デフォルトの名無しさん
2017/02/16(木) 22:29:25.87ID:C8BNWAf7それってさ雑な仕事してるから炎上するんだよね
手抜きのクソコードを書くとそのコードのせいでさらにクソコードを書くはめになる
クソコードはクソコードを呼ぶので加速度的にクソコードが増えていき生産性がガタ落ちになる
ようするに技術的負債ってやつだよ
借金は雪だるま式だ
0891デフォルトの名無しさん
2017/02/16(木) 22:42:46.83ID:XCVAoIB6全角入れないでね、とか言って渡せばいいんだよ。
変なエラー回避に時間かけてるから、
貴方の仕事は遅いのです。
0892デフォルトの名無しさん
2017/02/16(木) 22:53:40.42ID:2OM8+5/j0893デフォルトの名無しさん
2017/02/16(木) 22:56:48.57ID:K21kVzL80894デフォルトの名無しさん
2017/02/16(木) 22:57:04.52ID:GoZ0ZsyN別に炎上したなんて話してないし、むしろVariant型の挙動を利用して生産性第一で作業してるって話なんだけど。
なんかアンカー先間違えてないか。
0895デフォルトの名無しさん
2017/02/16(木) 23:00:55.40ID:3jDFm3bn程度問題ってだけの話
まあお前さんのところはスーパーハッカーの集団みたいだけど w
0896デフォルトの名無しさん
2017/02/16(木) 23:02:47.89ID:3jDFm3bnセルからデータ受けるときは基本 Variant で受けて型判定してるな
0897デフォルトの名無しさん
2017/02/16(木) 23:03:10.14ID:YyV7ugT9on error goto でエラートラップ
そんなに不安なら関数全部につけりゃ良い
チェックするのなんて入力の値だけで良いんだからそんな手間でもないだろ
0898デフォルトの名無しさん
2017/02/16(木) 23:04:12.76ID:YyV7ugT9VBAのスレである以上避けられないから新しい話題くれよ
0899デフォルトの名無しさん
2017/02/16(木) 23:26:38.52ID:qi3MJmNLexcelのカメラ機能(図のリンク貼り付け)を使用している場合VBAを実行した際に明らかに速度が遅くなる現象の原因が分かる方っていらっしゃいますか?
またカメラ機能を使わない以外で上記の現象を回避されてる方はいますか?
0900デフォルトの名無しさん
2017/02/16(木) 23:39:12.04ID:C8BNWAf7でもそれって生産性あげたつもりになってるだけだよ
局所的に見て楽になったような気がするのかもしれないけど実際には問題を増やしてしまっている
こういう雑な積み重ねが保守不能なコードに化ける
Variantから脱却すれば今より仕事が早くなるから考えてみたら
0901デフォルトの名無しさん
2017/02/16(木) 23:41:26.65ID:2OM8+5/j0902デフォルトの名無しさん
2017/02/16(木) 23:56:50.03ID:relaIxlmいいんだよ
Variantで満足してる人は型を求めていない
求めていないものを押し付けても押し返されるだけだよ
さくっとしたマクロとしてもがっつりしたツールとしても使えるんだから用途に応じて使い分ければいい
同様に使う人も多様であっていいんだよ
0903デフォルトの名無しさん
2017/02/17(金) 00:03:22.12ID:Egl82kKQ全部の処理が終わってからカメラ機能を使う
0904デフォルトの名無しさん
2017/02/17(金) 00:24:00.15ID:x+j5W1y3なるほど、ありがとうございます。
ちなみに他ブックを同時に開いている場合に
その他ブックがカメラ機能を使用している場合の対処法は何かありますか?
0905デフォルトの名無しさん
2017/02/17(金) 00:25:05.32ID:LNGtkd31利用側はそうかもしれんけど作る側は潔癖であるべきじゃね?
なかなかできないけど
0906デフォルトの名無しさん
2017/02/17(金) 00:35:35.78ID:ZUGFk9a/0907デフォルトの名無しさん
2017/02/17(金) 01:02:04.84ID:Yk2QF6YV0908デフォルトの名無しさん
2017/02/17(金) 02:14:58.21ID:0Mgboldtこれどうしたら良いの…?
0909デフォルトの名無しさん
2017/02/17(金) 02:28:45.78ID:iYHKBeW3xlPasteAllを指定する
0910デフォルトの名無しさん
2017/02/17(金) 05:48:13.21ID:SExp+Riaべき論はよくわかんないけど細かいルールはプロジェクト単位で決めればいいのよ
全ての人が統一したルールで開発とか無理がある
まずは目的を果たせればいいんだよ
0911デフォルトの名無しさん
2017/02/17(金) 07:02:50.19ID:C9lFCZn00912デフォルトの名無しさん
2017/02/17(金) 07:06:32.57ID:YWoqzdEN大多数のVBAプログラムはそうだし、ここでも暗黙にそういう前提だろうね
0913デフォルトの名無しさん
2017/02/17(金) 07:22:23.36ID:zu1SJ23Xなぜ「型はきちんと合わせて使う」とか
「Variantは極力使わない方が良い」とか言われているのかを
まずきちんと理解していないことには議論にもならないと思う。
逆を言えばそれさえ理解していれば後は作る側の部署なり個人なりの判断だろう。
Variantはほぼ何でも設定出来る便利な型だけど
メモリを圧迫したり暗黙の変換によって意図しない挙動を引き起こしたりする
使い方を知らないと非常に危険な型とも言える。
だから上で誰かが言っていた通り、使うべくして使うところで使うという考え方で良いと思う。
ただ、俺的には全て型宣言無しである程度の大きさのプログラムを組むような暴挙に出ることは
辞めておいた方が良いとは思うけどね。
0914デフォルトの名無しさん
2017/02/17(金) 07:37:21.18ID:hoKx2dYD他人が関係しない小さい、狭い範囲内なら何やってもいいけど
0915デフォルトの名無しさん
2017/02/17(金) 08:09:54.80ID:6fUPUfvd限られた範囲内で可能なかぎり品質の良いコードを書く努力をすべきだ、という話
VBAだとメンテナンス性とか軽んじられるからね
うちの現場はコーディング規約もありゃしないからひどいもんよ
だから俺の場合は自己満だけどね
0916デフォルトの名無しさん
2017/02/17(金) 08:37:35.15ID:57XKQRPM「型宣言なし」の話は議論になってないよ。
0917デフォルトの名無しさん
2017/02/17(金) 08:37:52.73ID:57XKQRPM仕事の話はやめるべきだ。そもそもプロのプログラマが語り合う場じゃないし。
0918デフォルトの名無しさん
2017/02/17(金) 09:21:29.04ID:4vjdAmpkすべて型宣言なし = 全部variant
0919デフォルトの名無しさん
2017/02/17(金) 10:01:59.38ID:/Ik0xHA1えっ?
0920デフォルトの名無しさん
2017/02/17(金) 10:34:33.71ID:iYHKBeW3雑談スレはちゃんと別に用意されてる
0921デフォルトの名無しさん
2017/02/17(金) 11:32:15.12ID:t6AZ1KOU他ブックはデータソースですか?
だとしたら、そのブックでカメラ機能を使わないという選択はできますでしょうか。
見栄えを良くして重くなったファイルをデータソースにするのではなく、目的がデータ保存だけのファイルを作って、それを参照して見栄えの良いファイルを複数作るという考え方です。
0922デフォルトの名無しさん
2017/02/17(金) 11:43:15.20ID:57XKQRPMここでの「仕事」つったらExcelを仕事に活用しているビジネスマンのやってる事だよ。
プロが現れて「プロならこうあるべき」なんて見たこともない。ドン引きそのものだ。ツイッターでやれ。
自分の職業をわざと貶めてるのか?
0923デフォルトの名無しさん
2017/02/17(金) 12:52:58.35ID:loItl+7kどの板に書いてるのかをよ〜く考えてからレスしなよ...
0924デフォルトの名無しさん
2017/02/17(金) 12:58:20.11ID:57XKQRPM音楽板にプロのミュージシャンは日常的に出てこないしスポーツ板にJ選手は出てこないしカメラ板にプロカメはこっそりしか出てこないわ。
奇異に感じねーのか?
0925デフォルトの名無しさん
2017/02/17(金) 13:00:23.80ID:zgFjy358dim b as long
a = range("A1").value
' aが整数値であることのvalidationコード
b = a
みたいなコードを書いてるんですかね、このスレのプロ様は
0926デフォルトの名無しさん
2017/02/17(金) 13:05:22.14ID:6fUPUfvd所詮サラリーマン
0927デフォルトの名無しさん
2017/02/17(金) 16:07:46.96ID:fQ7GKGL6何言ってんだよ。
返り値が1次元だろうが2次元だろうが配列で返せる。
ただ、俺の例もそうだけど、こういう関数事態が糞関数だ。
引数が1次元でも2次元でもOKという時点で地雷臭がする。
こういうコード書く奴はエラー処理も碌にしないことが多い。
逆に型をきちんと指定する奴は、エラー処理の想定込みで指定する。
0928デフォルトの名無しさん
2017/02/17(金) 16:19:46.97ID:loItl+7kん?
> ここでの「仕事」つったらExcelを仕事に活用しているビジネスマンのやってる事だよ。
に突っ込んでるんだが?
Excel の使い方の話ならよそでやってくれよ
0929デフォルトの名無しさん
2017/02/17(金) 16:44:49.17ID:57XKQRPM1次元ならLong値を返す、と書いてるじゃないか。
あとこれは完全に後出し(書き忘れた)なので根拠にはしないけど、見つからなかった場合はEmpty を返したい。
それとこういうライブラリ関数はあまり丁寧なエラー処理はしないよ。アプリに近い上流側でやるべき。
0930デフォルトの名無しさん
2017/02/17(金) 17:24:57.59ID:fQ7GKGL6だからそんな関数は作っちゃダメなんだよ。
設計してないからそんなことになってるんだろうけど。
だからエラー処理は受ける前にやるの。
変な引数自体受け取らないで済むように。
丁寧に作る時は両方でやることもある。
0931デフォルトの名無しさん
2017/02/17(金) 17:33:56.58ID:fQ7GKGL6どんな型でもOKな配列からサーチすることなんて殆ど有り得ない。
本来なら型指定の配列からサーチする関数でもOKな所を便利だからと使ってるだろうと推測する。
→それはどんな変数でもVariantにするのと全く同じ弊害を持つことになる。
0932デフォルトの名無しさん
2017/02/17(金) 17:36:48.43ID:fQ7GKGL6これだけでもレベルが分かる。
0933デフォルトの名無しさん
2017/02/17(金) 17:40:48.67ID:zgFjy358> だからエラー処理は受ける前にやるの。
> 変な引数自体受け取らないで済むように。
呼び出し側でエラーチェックするってことか?
プロ様は大変ですな
0934デフォルトの名無しさん
2017/02/17(金) 17:52:20.28ID:57XKQRPMエラー処理は渡す側の責務と受けとる側の責務に分けられるが、例えば平方根を求める関数でマイナス値のチェックなど普通はしない。
0935デフォルトの名無しさん
2017/02/17(金) 18:05:05.67ID:fQ7GKGL6全然大変じゃない。
インテリセンスからでも渡して良いものがわかるし、他の奴が使ってもおかしなことになりにくい。
他の奴が作ってても型指定してあれば使い方も分かりやすい。
むしろ何でも受け取るような関数作る方が後々大変なことになる。
Sub Test1()
Debug.Print LongToString("ABC")
End Sub
Function LongToString(varIn As Variant) As Variant
LongToString=varIn*3
End Function
Test1を書いてる時に"ABC"ではダメだと気付かない。
型指定してあればインテリセンスから"ABC"なんて入れることは有り得ない。
0936デフォルトの名無しさん
2017/02/17(金) 18:06:26.44ID:6fUPUfvdlongがほしいならisnumericでセルの値を時かにチェックすればよろしくないか
どちらにしてもその値を処理するならどんな値かのチェックは必要だと思うんですが
0937デフォルトの名無しさん
2017/02/17(金) 18:08:34.57ID:fQ7GKGL6それは型指定しててもあり得るだろ。
引き数をVariantにした平方根を求める関数でマイナスをチェックするなら型指定しててもするだろう。
0938デフォルトの名無しさん
2017/02/17(金) 18:10:40.07ID:57XKQRPMFunction searchFromAr(ByRef arr() As Variant, ByRef target As Variant) As Variant
ではなく、
Function searchFromAr(ByRef arr As Variant, ByRef target As Variant) As Variant
だ。
arr( ) じゃなくただの arr
0939デフォルトの名無しさん
2017/02/17(金) 18:15:31.89ID:fQ7GKGL6そもそも他言語を知ってればVariantでOKという発想にはならんだろう。
もっともOKな奴がいるからVBが不評なんだけどな。
0940デフォルトの名無しさん
2017/02/17(金) 18:18:49.17ID:6fUPUfvd片付けがあやふやなんだから指定しなくてokってのがいるけど、そら逆でしょって思うわ
0941デフォルトの名無しさん
2017/02/17(金) 18:25:09.55ID:zgFjy358Function LongToString(varIn As Long) As Long
と定義しておこうが、
LongToString("ABC")
と書けちゃうし
dim a as variant
dim b as string
a = range("A1").value
' validation code here
b = LongToString(a)
とか書くのか
LongToStringを100箇所呼び出してると100箇所でやるのか
お疲れ様です
0942デフォルトの名無しさん
2017/02/17(金) 18:26:21.82ID:fQ7GKGL6そんなの見た瞬間から気付いてたが関数の中身が無いから一概に間違いとも言えない。
配列(Variant)を配列に入れることもある。
実際に俺も()付きの方の関数作ったことある。
Variantは普通は使わない方が良いが、例外の定番であるRangeをVariantで受けて高速化する方法でRangeが複数の場合がこれに該当した。
戻り値はVariantじゃ無かったけど。
0943デフォルトの名無しさん
2017/02/17(金) 18:33:49.68ID:zgFjy358取り得る戦略はいくつもあるし
型を明示する場合でも
dim a as long
a = range("a1")value
1. デフォルトのruntime errorでエラー検知のみ
2. on error gotoでエラートラップ
3. セル参照時に1個1個validation
毎回3やれとか言われても疲れるし
0944デフォルトの名無しさん
2017/02/17(金) 18:34:02.47ID:TnLGa8QJちょっと前に同じ現象ではまりました。困ったバグです。
カメラ機能の使用数に対し、等比級数的に処理時間が遅延。
オンメモリなら自/他ブックの区別なく影響を受けます。
要はカメラ機能を維持していることがNGなので、必要な時に更新して
機能を止めればいいです。
実はShapeオブジェクトに参照式が入っているだけなので、
ソースセル内容編集
→ Shapes(1).DrawingObject.Formula=(参照範囲)
→ Calculate
→ Shapes(1).DrawingObject.Formula=""
これでShape内の画像は残り、リンクは切れてただの図形になります。
2〜3個あったカメラのリンクを切ったことで、数百秒に遅延した
シートイベントがmsecレベルに短縮されました。 ご参考まで。
ちなみにScreenupdatingの制御は逆に遅延の原因になることがある
ので注意して使うほうがよいです。
0945デフォルトの名無しさん
2017/02/17(金) 18:35:34.78ID:57XKQRPMん?「受ける前にやる」って呼び出し側でやるって意味か?
0946デフォルトの名無しさん
2017/02/17(金) 18:35:59.64ID:fQ7GKGL6インテリセンス知らんのか?
書けても実際には書かれない。
分かる?初心者君。
100個所呼び出すって何だよww
ユーザ―インターフェースと関数を分離する意味が分からないなら関数作らずに全部イベントの所に書いてろw
0947デフォルトの名無しさん
2017/02/17(金) 18:37:51.59ID:zgFjy358実引数のチェックは100%やるべき
余裕があったら関数内でもやるけどね
って意味だと取った
ふつー逆でしょ
0948デフォルトの名無しさん
2017/02/17(金) 18:40:11.45ID:57XKQRPMいやそれは書けん(関数本体に入る前にエラー)だろ
0949デフォルトの名無しさん
2017/02/17(金) 18:40:47.16ID:zgFjy358> 書けても実際には書かれない。
またへんなこと言い出した
もしそうなら、実引数のチェックなんていらないよね
だって、間違った型の変数渡さない(書かない)ってことでしょ?
0950デフォルトの名無しさん
2017/02/17(金) 18:42:27.09ID:zgFjy358関数に入る前って実行時ってことでしょ?
書けてるじゃんw
0951デフォルトの名無しさん
2017/02/17(金) 18:44:30.55ID:zgFjy358> 100個所呼び出すって何だよww
何だよって、関数吐くったら呼び出すのは1回だけかよ
頭痛くなってきた
0952デフォルトの名無しさん
2017/02/17(金) 18:45:06.96ID:6fUPUfvd楽に書きたいんだったらon error gotoで良いんじゃね
そんなんはvariantでやろうがなんだろうが一緒だろ
>>941の例なんかだと、ユーザー側が間違った記述してんだからエラー吐いて当然でしょ
それを許容して返り値で判断させる関数を求められてるならそういう作りにするだけ
0953デフォルトの名無しさん
2017/02/17(金) 18:45:55.53ID:57XKQRPM0954デフォルトの名無しさん
2017/02/17(金) 18:48:28.19ID:zgFjy358ある関数の前提条件を誰が担保するかの話をしてるんだけど
仮に呼び出し側が担保すべしというポリシーにしたとしても、間違った型の値は渡されうる
だって、書けちゃうんだから
だから、担保するなら呼ばれる方
0955デフォルトの名無しさん
2017/02/17(金) 18:52:31.72ID:6fUPUfvd何だか俺横槍がまずかったみたいだな
とりあえず俺のレスは取り下げで
0956デフォルトの名無しさん
2017/02/17(金) 19:00:12.08ID:fQ7GKGL6だから何で分からんの?バカなの?
LongTοString(
までキー入力した時にvarInがLongだと分かるんだから"ABC"入れてもエラーになると分かるから書かれない。
For i=1 To 100
If IsNumeric(a) Then 'aの範囲気にする処理なら別のチェック
b=LongToString(a)
EndIf
Next i
とすればそもそも1度も呼び出されないこともある。
こんなのは関数の使われ方によって変わる。
場合によってはVariantで受けることも有るだろう。
そういう、状況を無視して100個所とか言うから笑われるんだよ。
0957デフォルトの名無しさん
2017/02/17(金) 19:02:20.94ID:57XKQRPM間違ってるな。
呼び足す側がコントロールできることは呼び足す側が責任をもつ。
処理過程で発生するエラーなどは呼びだされる側でしかコントロールできないから呼び出される側でチェックする。
「引数が正しい型か?」は呼び出し側で静的にチェックできること。
0958デフォルトの名無しさん
2017/02/17(金) 19:09:34.20ID:57XKQRPMそれを踏まえて、
同じアルゴリズムを違う型に適用するためコピペして関数名を変えて使うのは最低の行為だ。
0959デフォルトの名無しさん
2017/02/17(金) 19:21:54.70ID:fQ7GKGL6お前のやり方では使う方がvarInに"ABC"入れてダメなのかが分からない。
それで入れて実行時にエラー処理ではねられる。
というよりその関数の使い方が分かりにくい。
それだったら関数なんて作らない方が良い。
0960デフォルトの名無しさん
2017/02/17(金) 19:27:49.71ID:fQ7GKGL6平方根求める関数ならどういう処理か分かるだろ。
別に後に作る場合でも関数がどうであるべきかを考えて実装する。
そもそも何でもVariantで良いなら型なんて必要無いだろ。
もしかしてVBScriptの方が正しいと思ってる?
0961デフォルトの名無しさん
2017/02/17(金) 19:30:25.17ID:h6UWdVSZ悪意あるユーザがスタックオーバーフローとかインジェクションとか目的としてたらセキュリティ的にまずい事になる
0962デフォルトの名無しさん
2017/02/17(金) 19:33:24.00ID:DzGsmJeY0963デフォルトの名無しさん
2017/02/17(金) 19:44:57.51ID:DzGsmJeY0964デフォルトの名無しさん
2017/02/17(金) 19:45:19.30ID:loItl+7k人に使ってもらうマクロならその程度のチェックは当たり前にやるけど?
0965デフォルトの名無しさん
2017/02/17(金) 19:47:28.23ID:57XKQRPMそれは上流の話だな。下流では「謝った引数を入れたら結果は未定義」でok
0966デフォルトの名無しさん
2017/02/17(金) 19:54:46.13ID:57XKQRPM・エラーが起こる条件が明確
・その条件に当てはまるかどうか事前に確認できる
この二つを満たすように工夫してるし、実現できた場合はエラーチェックは「しない」
0967デフォルトの名無しさん
2017/02/17(金) 20:00:13.54ID:6fUPUfvd型が違うってのは結果が違うんだぞ?
上の例みたいに例外の場合emptyを返すって用件ならそりゃvariantだろうけども
少なくとも明示的にどんな値が返るのかわかるような関数じゃないと色々まずいだろ
0968デフォルトの名無しさん
2017/02/17(金) 20:01:41.42ID:h6UWdVSZユーザが使って業務がストップしたらまずくね?
いくらテストしてもバグがないことは証明出来ないよ
0969デフォルトの名無しさん
2017/02/17(金) 20:12:43.27ID:8qknrLBgユーザー定義関数なのに定義を追っていって中身を確認出来ない状況とか、
実行時エラーが会社の命運を決めるような事態を引き起こすとか、
そんなものをエクセルで動かす狂気の会社なんかあるわけないだろ。
・・・ないよな?
0970デフォルトの名無しさん
2017/02/17(金) 20:18:39.08ID:LyP8mvbq"Variant型を議論するスレ"
見たいなの作って そこでやって欲しい気分だな
0971デフォルトの名無しさん
2017/02/17(金) 20:34:36.32ID:0Mgboldtちゃうねん
関数とか他シートの参照とかでごちゃごちゃしたシートから
値だけ入ったシートを作るために四の五のしてからPasteSpecialのxlPasteValuesAndNumberFormatsを指定して貼り付けてるんだけど
そうすると何故か数値になってる部分が全部文字列扱いになるの…
なんか俺オプションの勘違いしてるかな
0972デフォルトの名無しさん
2017/02/17(金) 20:36:15.65ID:57XKQRPM型は静的に指定できるじゃないか。
'***この関数の引数と返り値の関係は以下の通りです***
'1次元配列→Long値
'2次元配列→長さ2の 1次元配列
'N次元配列→長さNの 1次元配列
'ただし見つからなかった場合は Empty
'配列の各要素とターゲットの値は = で比較可能であること
'**************+++++++++++
誰も困らないだろ
0973デフォルトの名無しさん
2017/02/17(金) 20:38:15.99ID:DzGsmJeY動的ですね
0974デフォルトの名無しさん
2017/02/17(金) 20:38:20.38ID:loItl+7k会社の命運はないと信じたいけど
今日はB子ちゃんとデート♪
これを処理してっと...
ピポッ
エラー 13 「型が一致しません。」
お前らの命運やいかに
0975デフォルトの名無しさん
2017/02/17(金) 20:41:06.37ID:57XKQRPM静的に「指定」できる
関数の挙動はそりゃ動的だよ。
でも引数と返り値の関係は静的。
0976デフォルトの名無しさん
2017/02/17(金) 20:44:59.92ID:3DJT3WqG例としてはA1をコピーして図のリンク貼り付け→A1〜A3を結合した図が出る
問題なく貼り付けられる場合もあるし・・・よく分からん
レス数が950を超えています。1000を超えると書き込みができなくなります。