Excel VBA 質問スレ Part41©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net
2016/04/27(水) 04:11:46.79ID:Nk+oP5xRコード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part40
http://echo.2ch.net/test/read.cgi/tech/1455817784/
※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 122
http://echo.2ch.net/test/read.cgi/bsoft/1461287268/
0792デフォルトの名無しさん
2016/06/19(日) 23:47:29.25ID:NZMKMoV30793デフォルトの名無しさん
2016/06/19(日) 23:48:08.55ID:/jrrR31N0794デフォルトの名無しさん
2016/06/19(日) 23:49:00.17ID:NZMKMoV30795デフォルトの名無しさん
2016/06/20(月) 00:15:37.00ID:ytJnTDmV世界標準にあわすために3バイト捨てないといけない
0796デフォルトの名無しさん
2016/06/20(月) 00:56:49.56ID:GaIVYz7vえ?
…。
とまぁ、こういう人がいるので、やはり
あまりプログラミングスキルのない人がいる現場では漢字変数でいいと思います。
0797デフォルトの名無しさん
2016/06/20(月) 01:11:03.28ID:RuTd1b0eでもボキャブラリーが貧弱なのでネーミングに困る
予算とか曜日とかyosan、youbiにしてしまう
我ながらださすぎるw
0798デフォルトの名無しさん
2016/06/20(月) 01:40:45.13ID:g4dtXF6Y入力が手間と、日本語が使えない環境で開発/保守できないって意見はみたこととあるけど
いまだこれにまともな回答を見た事が無いわけだ
0799デフォルトの名無しさん
2016/06/20(月) 02:51:36.52ID:SbKX6kLZ0800デフォルトの名無しさん
2016/06/20(月) 03:03:49.22ID:8+wUFNFJ日本語環境じゃないなら話は別だけど。
例えば、A商品購入処理っていう名称が要件仕様に乗っかてっきてんなら、そのまま名前を適用するわけ。
そうすりゃ、追加要員の人からBuyProductAってA商品購入処理のことですか?とか、要求仕様としてない用語に混乱することもない。
0801デフォルトの名無しさん
2016/06/20(月) 03:05:53.20ID:8+wUFNFJ0802デフォルトの名無しさん
2016/06/20(月) 04:13:27.46ID:7CuehomzDim パス As String, パス一覧, 読み込まれたデータ As Dictonary, 店舗単位 As Dictionary
フォルダ指定 パス
ファイル一覧作成 パス一覧, パス
ファイル読み込み 読み込まれたデータ, パス一覧
集計処理 店舗単位, 読み込まれたデータ
表変換 シート1, 店舗単位
装飾処理 シート1
印刷設定 シート1
印刷プレビュー シート1
保存確認
End Sub
わかりやすい(うっとり
0803デフォルトの名無しさん
2016/06/20(月) 04:45:08.49ID:VMcfDu8lプロシージャなのか変数名なのか、パッと見いまいち分かりにくい・・・
0804デフォルトの名無しさん
2016/06/20(月) 05:26:48.51ID:tNPTsfIGBMI = 身長m * 身長m / 体重kg
End Function
わかりやすい
0805デフォルトの名無しさん
2016/06/20(月) 05:32:04.61ID:7Cuehomzそういやこのスレでも度々「コードの見やすさ」について話題が出るけど、
ステップ実行とかウォッチ機能とかのデバッグ機能を使わない事前提なのが不思議。
0806デフォルトの名無しさん
2016/06/20(月) 06:41:42.91ID:ytJnTDmVなぜ使わないと思い込むのか理解できない。
0807デフォルトの名無しさん
2016/06/20(月) 06:43:31.24ID:A8kl/PgBなので俺は
Call フォルダ指定(パス)
Call ファイル一覧作成(パス一覧, パス)
Call ファイル読み込み(読み込まれたデータ, パス一覧)
Call 集計処理(店舗単位, 読み込まれたデータ)
Call 表変換(シート1, 店舗単位)
Call 装飾処理(シート1)
Call 印刷設定(シート1)
Call 印刷プレビュー(シート1)
Call 保存確認
ってやる派
0808デフォルトの名無しさん
2016/06/20(月) 06:45:07.03ID:A8kl/PgBコードの見易さとデバッグ機能がどう関係してるのか意味不明なんだが...
0809デフォルトの名無しさん
2016/06/20(月) 06:57:42.06ID:T6nELGvC「気持ち悪い」とかいう感覚に固執するやつは頭が固すぎるんだろう。
0810デフォルトの名無しさん
2016/06/20(月) 07:10:50.33ID:vG8P03oG型は全部Variant?
0811デフォルトの名無しさん
2016/06/20(月) 07:13:39.44ID:UXcyvThL体重/身長^2
じゃね
0812デフォルトの名無しさん
2016/06/20(月) 07:32:27.23ID:WzYWjmMB初期処理
中核処理
終了処理
ってまずは3つに分けるな
箇条書きは3つの中に割り振って作る
こうしないと処理の目的が分からなくなる
0813デフォルトの名無しさん
2016/06/20(月) 08:10:58.58ID:MOJTeKy8古い習慣(unicodeが未サポートの時代)に囚われているとこれに気が付けないんだよね
顧客や自分がビジネスで使う用語は日本語だからドメインモデルも日本語になる
当然ユビキタス言語も日本語だしそうなるとコードも日本語になるべきだ
0814デフォルトの名無しさん
2016/06/20(月) 08:20:43.59ID:ol+yTAduそれ・・・ひとつのSub/Functionのコードは何行くらいになるんだ?
0815デフォルトの名無しさん
2016/06/20(月) 08:59:52.48ID:4770PqBdアルファベットと漢字が混ざるから気持ち悪いのか
全部漢字だと思ったより見やすいな
0816デフォルトの名無しさん
2016/06/20(月) 09:11:37.21ID:gGOYEOkD多分何かを誤解してそうだが
こういうことだろ
SEならこうするわな
PGはこんなんしないと思う
sub 主処理()
call 初期処理
call 中核処理
call 終了処理
end sub
sub 初期処理()
call 変数初期化
call エラーチェック
call ファイル一覧作成
end sub
sub 中核処理
’ファイル一覧ループ
for i = iST to iED
call ファイルリード
call 〜処理
next i
end sub
0817デフォルトの名無しさん
2016/06/20(月) 09:31:27.46ID:jXyz40Gk本処理
後始末
0818デフォルトの名無しさん
2016/06/20(月) 11:03:38.89ID:GaIVYz7vプログラマですか?
プログラマだとそんな意見は出ないと思います。
事務員さんがマクロを扱っている状態なら、すきにしてくださいとしか。
夏からjavaの現場に戻るから頭切り替えないとバカになりそうw
0819デフォルトの名無しさん
2016/06/20(月) 11:08:11.64ID:ol+yTAdu初期処理、中核処理、終了処理に分けるのはほぼ「sub 主処理」だけってこと?
その下もそんな風に3段階くらいに分けて次々に処理してるのかと聞いてみたんだ。
たしかに行数はあまり関係なかった。
0820デフォルトの名無しさん
2016/06/20(月) 11:15:19.11ID:GaIVYz7vまぁVBA程度じゃ関係ないんだろうけど、
変数名が長いとリソースを食う。
全角の数字は勝手に半角と判断されバグの温床
コメントとの差がわかりにくい
コーディングの際漢字がめんどくさい
VBは漢字使えるが他言語は使えないものもあり、拡張が発生した場合のバグの温床
他言語で漢字の変数は使えないものがaaAある以上、アルファベットで記載するのが当たり前の流れ
命名規則に乗っ取ればそもそも混乱はない。
こんな感じ?
けどVBAでは扱う人のスキルを考えると漢字変数もむしろ良いと思う。
ただうっとり、なんて思えないw
ぃゃゃゎぁと思いながら組みますよ
0821デフォルトの名無しさん
2016/06/20(月) 11:46:28.32ID:ol+yTAdu>プログラマですか?
何より恥ずかしいのでこういう発言は止めてもらいたい。
恥ずかしいというか情けない。
0822デフォルトの名無しさん
2016/06/20(月) 12:04:56.49ID:GaIVYz7vえっ?
意味がわからないです。
までも漢字変数を感情論以外で説明してくれって、そんな言い方する人
開発現場で見たことないんで、まぁそう言う事なんでしょうね…
0823デフォルトの名無しさん
2016/06/20(月) 12:05:24.59ID:xPaMOXBK独立性の高いサブプログラムならないこともない
引数も貰って初期処理、中核処理、終了処理って構造を
必ず作るのは建て付けとしてはよくある
vbaに限らずな
0824デフォルトの名無しさん
2016/06/20(月) 12:14:15.88ID:xPaMOXBKなぜかって前レスにあったがリソースを食うから
ここから感情論だが
漢字変数の後に as long とか書く人は何なの?ルー大柴かよ!
といつも思って楽しんでる
0825デフォルトの名無しさん
2016/06/20(月) 12:17:42.88ID:ol+yTAduプロのプログラマが仕事として書くプログラムについて議論する場じゃないってことだよ。
0826デフォルトの名無しさん
2016/06/20(月) 12:19:38.90ID:NqJTjEgY>プロのプログラマ
頭が頭痛
0827デフォルトの名無しさん
2016/06/20(月) 12:22:01.24ID:JaTSFg3p0828デフォルトの名無しさん
2016/06/20(月) 12:22:08.41ID:xPaMOXBKマジかよ
0829デフォルトの名無しさん
2016/06/20(月) 12:23:33.80ID:UXcyvThLプログラムのプロは予めの意味ではないか
0830デフォルトの名無しさん
2016/06/20(月) 12:36:15.18ID:rGzE/Yjo2chのresourceをeatだからyou達はハンカクカタカナ使うべき
海外の4chとか、まとめブログ界の人達がコピペ
しやすいように英語で書け
要するに、こう仰りたいのですよね?
0831デフォルトの名無しさん
2016/06/20(月) 12:37:01.11ID:NsVXy02Rえーとね、きっと漢字を使うなら使うで、
論理的な理由を説明して欲しいと言っているんだと思うよ。
考えて見れば他の人も手を入れるのに
適当に気分で付けられてはたまらないって言ってるんだと思う。
0832デフォルトの名無しさん
2016/06/20(月) 12:38:46.55ID:NsVXy02Rいや、
いやいやいや
0833デフォルトの名無しさん
2016/06/20(月) 12:49:29.42ID:jXyz40Gk本番
後戯
0834デフォルトの名無しさん
2016/06/20(月) 12:56:20.02ID:uXAOqedY大体業務システムなんて形は変われど同業なら要件の幅はポイント掴めば広くないし、Javaやらでがっちり組まれたんで無い限りVBAの変数名なんてどうでも良いよ
0835デフォルトの名無しさん
2016/06/20(月) 18:36:29.67ID:c3CA81WS組み直すのはいいけど
テストがしんどいよ
0836デフォルトの名無しさん
2016/06/20(月) 19:03:51.04ID:NN8WnHEw0837デフォルトの名無しさん
2016/06/20(月) 19:54:22.76ID:CIstkdnHモジュール名やサブプロシージャ名は日本語(出力開始ボタン01とか、CSVデータ取込処理とかにしてます)
スコープ範囲が広い変数はパスカルケース、定数はスネークケース
スコープ範囲が狭く、ローカルで使うものはキャメルケース、定数はスネークケース
で書いてますが、もっとこっちの方がいいというのはありますでしょうか?
0838デフォルトの名無しさん
2016/06/20(月) 20:00:07.45ID:ol+yTAdu狭い広いは変わりゆくものだからなあ
0839デフォルトの名無しさん
2016/06/20(月) 20:29:34.61ID:XQmgrC5wタブインデントは出来ない奴はコンドーム付けない奴と一緒って
加藤鷹が言ってた
0840デフォルトの名無しさん
2016/06/20(月) 20:37:18.28ID:7CuehomzたとえばLBound,UBoundを使う場面だと、
ステップ実行の点から考えると
l = LBound(x)
u = UBound(x)
For i = l to u
とした方がトレースしやすいんだけど、
For i = LBound(x) To UBound(x)
がいいという結論になる。
他にもステップ実行時に確認しづらい方法がとられたり、
ウォッチ式を使ってストップかけられるはずのところを別の方法で実現しようとしていたり、
明らかにデバッグ機能使わない事が前提で話が進んでるんだよ。
0841デフォルトの名無しさん
2016/06/20(月) 21:10:54.89ID:UXcyvThLデバッグは何かしらやり方があるんじゃないの?
0842デフォルトの名無しさん
2016/06/20(月) 23:22:53.17ID:dy8cPgWT何か分かる気がする。
例えば外部の変数を使うのにプロパティにしとけばブレークポイントが設定出来るから
その後どこから呼ばれて使われたか分かりやすいけど、
変数として直接指定すると分かり辛くなるもんな。
10箇所くらいから呼ばれて所々ループで使われると目も当てられなくなる。
0843デフォルトの名無しさん
2016/06/20(月) 23:34:20.29ID:ol+yTAdu0844デフォルトの名無しさん
2016/06/20(月) 23:46:45.59ID:g4dtXF6Yウォッチ式でブレークさせる必要がどれだけある?
デバッグのために本来のコードの書き方変えるなんて本末転倒
どうしても必要ならデバッグ時にデバッグ用のコード入れる方がマシ
0845デフォルトの名無しさん
2016/06/20(月) 23:50:19.99ID:ol+yTAdu0846デフォルトの名無しさん
2016/06/21(火) 00:01:55.83ID:iRmo4DUWステップ実行は全体が対象になり得るが、
するするする必要はないかもな
0847デフォルトの名無しさん
2016/06/21(火) 00:39:09.92ID:hwTTdrUbステップ実行する範囲は極微でもするするは必須だろ
0848デフォルトの名無しさん
2016/06/21(火) 01:15:14.25ID:W9Ui1+tiプロのグラマー?
ちょっとエロい
0849デフォルトの名無しさん
2016/06/21(火) 02:00:22.81ID:TC+K0LSS0850デフォルトの名無しさん
2016/06/21(火) 04:47:58.42ID:0X3G298Rデバッグとリリースでビルトを機能がVBAにもあればいいんだけどな
0851デフォルトの名無しさん
2016/06/21(火) 04:51:01.70ID:0X3G298R0852デフォルトの名無しさん
2016/06/21(火) 05:35:41.16ID:5vWLnQ7J#if debug then
#else
#end if
とか
0853デフォルトの名無しさん
2016/06/21(火) 05:46:09.31ID:0X3G298RしかもそれがVBEについてるデバッグ機能で賄える事ならなおさら。
0854デフォルトの名無しさん
2016/06/21(火) 05:47:17.87ID:ymxChLe5excelが開発ツールとして神に等しき存在になってしまう
0855デフォルトの名無しさん
2016/06/21(火) 05:50:06.40ID:J2yqWD+vVB6は神だったのか
0856デフォルトの名無しさん
2016/06/21(火) 06:12:00.20ID:qHGt9edWログとか出力してないの?
0857デフォルトの名無しさん
2016/06/21(火) 06:18:18.32ID:B7KL8DYA0858デフォルトの名無しさん
2016/06/21(火) 06:28:45.49ID:0X3G298Rデバッグ時はやるけど、あれ処理重いから実際の運用時には外すだろ。
0859デフォルトの名無しさん
2016/06/21(火) 06:33:03.15ID:p8YkQE1Tvb6にはexcelシート、excel関数、excelグラフなどなどが標準装備されてないから
どちらが有能かは明白
0860デフォルトの名無しさん
2016/06/21(火) 07:04:36.43ID:qHGt9edWえ?外してるの?
そこは普通運用時にはログレベルで調節して最低限のログは出さない?
プログラム的に運用時にどんなバグが出たか何を手掛かりに調べてるの?
運用で使ってる人の起きた事象説明を受けるだけ?
何か凄く効率悪そう
0861デフォルトの名無しさん
2016/06/21(火) 07:38:00.69ID:vJE7qstOExcelオブジェクトでもWordオブジェクトでも必要なら組み込んで利用できるんで標準で入ってなくても別に困らない
0862デフォルトの名無しさん
2016/06/21(火) 07:45:42.03ID:qHGt9edW困らないけどcom扱いだからObjectの解放が面倒臭い
0863デフォルトの名無しさん
2016/06/21(火) 07:47:23.53ID:qY/g41BX0864デフォルトの名無しさん
2016/06/21(火) 12:16:39.90ID:ZKKpyXo+結構色んなところで普通に吐いてたりするからね
きっとよほど複雑なシステムなんだよ
君から見ればね
0865デフォルトの名無しさん
2016/06/21(火) 12:19:12.87ID:RUL+uH0x0866デフォルトの名無しさん
2016/06/21(火) 12:22:43.16ID:VdnNwK8D0867デフォルトの名無しさん
2016/06/21(火) 12:36:17.00ID:qHGt9edW0868デフォルトの名無しさん
2016/06/21(火) 12:41:25.71ID:qHGt9edW大規模とは限らないよ
その仕事場の方式と言うかお作法の問題
0869デフォルトの名無しさん
2016/06/21(火) 12:45:41.09ID:JNjOOJn10870デフォルトの名無しさん
2016/06/21(火) 18:09:08.57ID:Sh/p3PtF=INDIRECT(ADDRESS(2,2)) と =INDIRECT($B$2) は同じ意味かと思うのですが返される値が違いました。
ADDRESS(2,2)とは($B$2)ではないのでしょうか。
0871870
2016/06/21(火) 18:23:07.18ID:Sh/p3PtF探したのですが、失礼いたしました。
どなたかご誘導をいただければ。
0872デフォルトの名無しさん
2016/06/21(火) 18:29:11.39ID:A2Mkn+tSExcel総合相談所 122 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/bsoft/1461287268/
0873870
2016/06/21(火) 18:36:18.68ID:Sh/p3PtF0874デフォルトの名無しさん
2016/06/21(火) 19:47:26.21ID:0X3G298R俺が作ってるのはインプットファイル指定したら後は自動でアウトプットされる様なタイプのものばかりだから、
どのマクロを使って、どんなファイルを指定したかさえ分かれば、だいたい再現されるよ。
途中でログを吐かないと手がかりがないマクロってどういう性質のもの?
今後、もし似たようなの作る事があったらロガーの実装を検討してみるわ。
0875デフォルトの名無しさん
2016/06/21(火) 20:07:10.60ID:HsDMsaK+ログ出力はビジネスでは必須なんじゃよ
望む望まずに関わらずにの
0876デフォルトの名無しさん
2016/06/21(火) 20:23:50.33ID:ymxChLe5後は小物件
excelでログ出力が必要なレベルの業務アプリ作るとか驚愕だな
所詮は支援ツールだろ
1億超える物件なら考えなくもないが
そんな大規模システムで効率下げるログ出力とか嫌やわぁ
0877デフォルトの名無しさん
2016/06/21(火) 20:27:29.39ID:AH0uRnVJ0878デフォルトの名無しさん
2016/06/21(火) 20:27:47.85ID:0X3G298R話の流れ的に「バグ特定の為にロガーを実装する」って事だからビジネス関係ないよ。
というかVBAでビジネスってなんだろ。外注とかするのか。
マクロの外注とかあるなら異なるフォーマットの五つのファイルを組み合わせて集計と計算を行い、
在庫管理と発注リストをアウトプットするマクロの見積もりとか見てみたい。
0879デフォルトの名無しさん
2016/06/21(火) 20:27:51.98ID:NeZ3bdtfそうだっけ?
もう VB6 の環境ないから試せないけど vbs とたいして変わらなかったような気がするが
とりあえずMSは Microsoft.Office.I nterop.Excel をまともにしろよ
C# から使いたいのにマジで面倒臭すぎる
0880デフォルトの名無しさん
2016/06/21(火) 20:29:57.39ID:8TPIZL80DBでお客さんがアプリ使わずに手で入力して変な値設定したときとか。
こっちが悪くなくてもそれを証明しなければいけないから
そう言う場合は必須だよ。
0881デフォルトの名無しさん
2016/06/21(火) 20:39:34.23ID:JNjOOJn10882デフォルトの名無しさん
2016/06/21(火) 20:50:20.38ID:ymxChLe5前あった例だと
dbから200個ぐらいあるテーブルをcsv出力して
リレーション組んでエラーデータ探したり
帳票出したりした
データ数はマチマチだけど
1テーブル当たり多くて300万件ぐらい
なぜこんなことしたかって言うと
導入したシステムがゴミクズで
お客さんがあそこは信用ならないって
損害賠償になったが
システムがないと処理しきれないから
なんか簡単に作れないかって言われて
excelで作った
0883デフォルトの名無しさん
2016/06/21(火) 20:58:03.49ID:Y+YRWDXHこの度、計測を自動化するという内容で取り掛かったのですがご教授いただきたく。
・マクロ開始→マイク端子からの入力待ち
・マイク端子から電圧の入力有り(サージ)
・上記の電圧をトリガーとして検知し、1秒後に別の計測ソフトをマクロで操作
・計測ソフトの保存まで終わったら再度トリガー待機状態
というフローを考えているのですが、マイク端子からの入力を検知するコードがググっても出てきませんでした。
可能であればそれらのコードか参考になるHP等が知りたいです。
0884デフォルトの名無しさん
2016/06/21(火) 21:03:35.12ID:JKCS+g1Bほう、それをExcelで?
0885デフォルトの名無しさん
2016/06/21(火) 21:04:04.51ID:WT0LkGFc0886デフォルトの名無しさん
2016/06/21(火) 21:07:56.18ID:BjtZA0F4趣味でやってるんなら面白そう。頑張って。
0887デフォルトの名無しさん
2016/06/21(火) 21:13:25.74ID:ymxChLe5やったことないからなんとも
マイク関連のapiを利用するか
マイク監視関連の別アプリと連動させるか
どちらにせよ
excelの領域を超えてosの機能を使う感じかな?
0888デフォルトの名無しさん
2016/06/21(火) 21:35:37.09ID:AH0uRnVJhttp://park22.wakwak.com/~sakura/cgi-bin/index.cgi?mode=view&page=25&back=mode%3Dlist%26nextpage%3D3
ライブラリはwin32apiかな
0889デフォルトの名無しさん
2016/06/21(火) 21:36:59.24ID:TC+K0LSS0890デフォルトの名無しさん
2016/06/21(火) 23:25:52.02ID:MK9xCASBタブインデントできないとか、そんなレベルの人見たことないけど
Excelのマクロ使う程度の人ならいるか…
0891デフォルトの名無しさん
2016/06/21(火) 23:37:03.14ID:JKCS+g1Bタブインデントって何?
まさかタブでインデントすることじゃないよね?
0892デフォルトの名無しさん
2016/06/21(火) 23:43:39.47ID:Y+YRWDXHですね、今のとこ自分の手立てとしては、というとこですが
>>885>>886
不可能だということも選択肢に入れてますが、最終手段で考えてます。現状はマンパワーなので労力使えばいいだけなので。本件とは矛盾してしまいますが
>>887
オーディオコントロールとやらに近いと思うのでos制御領域に入ってくるかと予想はしています
>>888
apiを使える程のC言語の造形が深くありません。なるべくvbaで済ませたいとは思いますが…参考urlありがとうございます。
>>889
人件費以外掛けるな、との内容だったのですが一番削る部分で何を言ってるんだ?というのは当方の団塊上司なのでお察し下さいw
■ このスレッドは過去ログ倉庫に格納されています