Excel VBA 質問スレ Part56

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/23(木) 07:25:24.98ID:Kh3D3mRW
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part55
http://mevius.5ch.net/test/read.cgi/tech/1532236398/l50
2018/09/06(木) 12:54:27.92ID:BbhKyKYE
>>680
シートの再計算を切った方がよさそうですね
2018/09/06(木) 12:58:40.70ID:bUttQEUW
>>753
なるほど
アマチュアVBAerのコードがクソな理由はそのあたりにあるんだね
2018/09/06(木) 13:11:18.25ID:pSvnv7DA
>>756
ありがとう!

ちなみにPCの買い替えを検討中なんだけど、
オススメのPCはあったりする?
VBAを問題なく扱えるスペックで
マックの新モデル(いつ発売か知らんけど)を買おうか迷ってたんだが、
他にあれば教えてほしい
2018/09/06(木) 13:16:19.10ID:FcDUl1Zk
Macはやめとけ、Winならなんでもよかろう
2018/09/06(木) 14:32:32.21ID:uyGxH2tN
VBAはWindowsとExcelしか使うことを許されていない人が仕方なく使うものなので、
Macの使用が許される人は素直に別の言語を学ぼう

Mac使うなら(言語じゃないが)AutomatorやAppleScriptなんかが初学者にはいいぞ
2018/09/06(木) 14:34:30.61ID:f+Em582n
>>759
Windows10が入ってて、ドライブがSSDで、CPUがintel i5のを選んどけば間違いない
新品だとだいたい10万円だけど中古でも問題なし
2018/09/06(木) 14:41:15.36ID:ocJXcvkM
本当にExcel VBAだけが目的なら型落ちWindowsでOK
他にもやりたいことがあるならVBAだけで決めるのはハイリスク
2018/09/06(木) 14:54:51.00ID:f+Em582n
Excel(Office)が入ってるかどうか確かめるのを忘れないように
パソコンと別々に買うと高く付く

マイクロソフトのOfficeならどのバージョンでも大丈夫だけど、キングソフトのはダメ
2018/09/06(木) 15:33:41.34ID:vVlOKn8A
事務仕事をやっていてVBAが使えたら便利だなと思っていて、
VBAのスキルを(仕事に生かせるレベルまで)身に付けたら
他の言語にも手を広げたいなと考えている

プログラミングのことはチンプンカンプンだけど、
ググったらプログラミングやるならマックがええでって記事をいくつか見かけたので
マックにしようかと思ってた
エクセルも使えるし

だから、皆んなの意見を聞いてどうすればいいのか分からなくなってきた
2018/09/06(木) 16:26:31.35ID:uyGxH2tN
VBAを習得したいのかもっと一般的なプログラミングを習得したいのかハッキリさせよう

どんな事務仕事を楽にしたいんだ?まずはそこを明確にしていこう
767デフォルトの名無しさん
垢版 |
2018/09/06(木) 16:47:53.27ID:UI2giREj
マウスコンピューターの乃木坂46 モデル
https://www.mouse-jp.co.jp/m-book/mbb506/?intid=nogi_btn003_asuka

CPU-i7, 512GB SSD で、10万円!

これを、メモリ・保証期間を最大まで、カスタマイズする
2018/09/06(木) 17:08:12.24ID:vVlOKn8A
>>766
VBAを仕事に生かせるレベルまで習得してから他の言語も勉強したい

ほんの一例だけど各部署の旅費集計作業とか全自動化させたい
2018/09/06(木) 17:10:03.69ID:vVlOKn8A
>>766
他の言語=一般的なプログラミングなのかな
一般的なプログラミングがどういうものかわからんが
2018/09/06(木) 17:25:00.57ID:uyGxH2tN
>>769
(VBA含めて)プログラミングというものを勉強してみたいのかという意図だった

その要件で勝手にエスパーするとExcel操作しまくりだろうからVBAがいいかもね
PCは仕事で使ってるやつとOS, Officeのバージョンが同じの買えばいいよ
2018/09/06(木) 17:30:41.07ID:4qJ3M+Kb
本職になるつもりならVBAから入るのはお勧めできない
変な癖が付く
2018/09/06(木) 17:32:28.08ID:uyGxH2tN
将来VBAってこんなに糞だったんだなと思い知るのもまた一興…
2018/09/06(木) 17:37:34.01ID:vVlOKn8A
>>770
操作しまくりだけど難しいことはしていない
事務作業では既にどこかの部署又はグループ会社の社員が作ったマクロを動かしてるだけだから
多少の関数は使うけどその程度

VBAだけやるなら会社のPCと同じやつでいいかもしれないけど、
VBAの先に他の言語もやりたいってのがあるからさ〜
そうなるとマックがええんちゃうのってグーグル先生が言ってまして

まあ、とにかく参考になりましたわ
ありがとうございます!
2018/09/06(木) 18:04:15.50ID:rLUupM/1
>>773
万が一他のプログラミング言語に興味を持った時は Visual Studio 2017 Community版 を入れればいい。
解説書も本屋に行けばたっぷりある。
大概の事はそれでOK
プログラマじゃないんだから、別に興味を持たなくとも良し
2018/09/06(木) 18:26:45.77ID:vVlOKn8A
>>774
なんやようわからんがそれを入れれば他の言語も開発できると
マックはそれを入れなくてもええの?
2018/09/06(木) 19:11:59.61ID:R1JX6SwT
マックのことは忘れろ
2018/09/06(木) 19:17:18.82ID:vVlOKn8A
なんでや
2018/09/06(木) 19:24:08.46ID:rLUupM/1
>>777
マックの事は全然知らん

みるみるプログラミングがわかる本
掌田津耶乃

↑を立ち読みすれ。確かマックの開発環境のことも書いてあったような記憶がある。
まぁ素人なんだろ?Winにしとけって
779デフォルトの名無しさん
垢版 |
2018/09/06(木) 19:28:35.21ID:r2CzgwVn
初心者に群がるプロさんきしょいわー
2018/09/06(木) 19:31:46.27ID:UI2giREj
Mac は高い。素人は、マウスで十分。
最大限メモリを積めばよいだけ

3年ぐらい、プログラミングしてから考えろ。
まあ、その頃には、たぶんやめてると思うが
2018/09/06(木) 19:32:52.80ID:9gAxqTcJ
ラズパイでもいいじゃん
782デフォルトの名無しさん
垢版 |
2018/09/06(木) 21:26:39.31ID:BSkJoWVe
初めての言語でExcelVBAって悪くないと思うけどなぁ
Excelのオブジェクトを操作するのもイメージしやすいしすぐにそれなりのもの作れるようになるし
2018/09/06(木) 21:55:08.39ID:81SkF9sN
自分だけで使うんならなんでもいいよ
2018/09/06(木) 21:55:40.77ID:jEPt2f2o
そしてJavaとかへ行って大量のカラムを持った壮大なテーブル作ってぐるぐるSQLするまでがテンプレ
2018/09/06(木) 23:42:58.44ID:OdtAawkS
>>750
>>751
>VBAの勉強法
VBAの入門書がたくさんあるからまず一冊読んでみ

それから実際に簡単なコードを書いてみること
何かのデータを集計してCSVにして出力しようとか

そうやってだんだん分かってきたら
実務に使えそうなコードを書いてみる

最初は挫折することも多いと思うけど
小さな部品を組み合わせて大きな仕事をする
という方向で考えると上手くいくことが多い
これはVBAに限らずプログラミングの基本
2018/09/06(木) 23:48:28.62ID:OdtAawkS
>>765
>プログラミングやるならマック
Webサービス作ったりするプログラマになるならMacもいいが
あくまで本業は事務職でVBAも組むだけならWindowsが良い

なぜなら事務の仕事で使うのはMacではなくWin機だろうから
環境が違うことでいろいろ支障が出るかもしれない
2018/09/06(木) 23:50:42.53ID:OdtAawkS
>>781
ExcelやVBAよりLinuxの方がはるかに難しい
まあ電子工作とかIoTとかやりたいなら
ラズパイは安くて面白いオモチャだと思うけど
2018/09/06(木) 23:53:18.80ID:OdtAawkS
>>782
VBAは入門用言語に向いてると思うけどね
GUIがあるから動作が分かりやすい

ただもちろん本格的にプログラミングするなら
他の言語もやらないと筋が良くならないね

VBAしか知らない人のコードってただベターっと処理を並べて
OOPどころか構造化もしてないようなコード多く見かけるから
2018/09/06(木) 23:56:51.95ID:eYDI7Rps
構造化してないって具体的にどういう感じのコードになるんだ?
790デフォルトの名無しさん
垢版 |
2018/09/07(金) 00:06:56.77ID:K16bSxkY
感じ方は人それぞれやし
2018/09/07(金) 00:14:48.37ID:JyggHFXK
>>785
小さな部分を組み合わせることは重要だが、それは一つの観点に過ぎない
プログラミングはトップダウンで考えてボトムアップで作る
VBA上がりの人は大抵このトップダウンで考える部分が抜けてて、その結果>>788の言ってるようなベターっとしたメンテ不能の糞が出来上がる
2018/09/07(金) 00:20:44.98ID:ZCXZkOYn
>>791
>プログラミングはトップダウンで考えてボトムアップで作る
>VBA上がりの人は大抵このトップダウンで考える部分が抜けてて
そうだね、言いたいことはよく分かるよ

ただ最初からトップダウンで考えるのって難しいんだよ
かなりプログラミングに慣れてから分かってくることで

部品を組み合わせることを続けて訓練していくと
最初からトップダウンで設計できるようになっていく
2018/09/07(金) 00:25:26.43ID:ZCXZkOYn
>>789
>構造化してないって具体的にどういう感じのコード
関数に切り出して部品化しようって意識もなくて
百行なら百行、必要な処理をそのまま並べてるとか

それで必要な処理とかが増えて
そのまま規模が大きくなっていくと
メンテできなくて破綻する
2018/09/07(金) 00:28:30.33ID:edPtcLES
VB系から入るのが危険なのって、一番は何が正しくて何が正しくないのかを理解しないまま正しくないものに触れてしまうことだと思う
書籍やWebサイトのサンプルの質が低すぎる
ある程度分別がついてからであれば、あ、これ真似しちゃいけないやつだ、と分かるんだけどな
2018/09/07(金) 00:49:11.50ID:t4Ye9HSP
>>793
草生える
そこまで酷いと、ひょっとして操作対象のセルのアドレスや行や列のインデックスとかも動的に取得しないでリテラルでいちいち指定してたりするのか?
2018/09/07(金) 01:14:28.94ID:ApUN6pL7
>>753
俺が初心者に毛が生えたような人間だからだろうけど、まず「hoge」とかいう全く慣れない単語を使うところから嫌になるんだよな
「a」とか「x」でいいんじゃないのかと
2018/09/07(金) 02:19:35.13ID:FfnLtQCz
トップダウンで作れないのは抽象化という概念を知らないからだろ
2018/09/07(金) 08:17:05.32ID:ftKRfHoc
>>785
その入門書を教えてもらえると助かる
2018/09/07(金) 08:30:15.06ID:lSyTDt+M
トップダウン、ボトムアップって別にそれでもいいんだけどさ、そういうことを言う奴がプロジェクトを台無しにしてたりもする。
どんなモデルでもある程度のプロトタイピングは必要だし、スパイラルにもなり、テストファーストな部分もある。

ところが頭でっかちで言葉に囚われて、おかしなことになってたりする。
ブックを開くコードも書けなかったら、色々試してその方法を獲得しておく必要があるだろ。
2018/09/07(金) 08:45:55.51ID:t4Ye9HSP
>>796
見慣れない言葉を使ってるのは、コードの可読性を確保しながら任意の値であることを示すためでは
その観点で言うとアルファベット一文字は論外だし、なまじ意味のある言葉だと既定の固定パラメータだと読み手側に勘違いされるかもしれない
2018/09/07(金) 08:47:48.91ID:bU+tCKgJ
アルファベット一文字変数よく使います
2018/09/07(金) 09:04:28.96ID:DJ4cwpQn
>>800
などのような説明があるとわかるんだけど、前提とされているのかそういったことを細かく書いてる人は少ない(私が勉強してる間は見たことない)し、なんかやりづらさを感じるのが正直なところ
そもそも自分で作る簡単なやつならaでもxでも何でもいいわけだし
2018/09/07(金) 09:15:28.79ID:avaKv6NM
>>800
ホゲで可読性があがるとは思えないの
言うなれば男らしさをアピールするために眉毛を繋げてみました
と言ってるようなもの
hogeという文字列を使う人間からはそういうサイコパス的な
不気味さを感じる
2018/09/07(金) 09:15:40.14ID:t4Ye9HSP
>>802
ぶっちゃけ慣れの問題でしかない
ある程度慣れてくると逆に任意の文字列値を代入することが明らかな箇所でわざわざそのような説明が付されているとわずらわしく感じるようになるぞ
2018/09/07(金) 09:23:23.85ID:lSyTDt+M
かつてデフォルトという言葉が浸透していなかった頃、かっこつけてるけどみんなが理解しにくい言葉を使う奴はバカだと思ったりもした。

何も考えずに"hoge"や"fuga"を使ってるが"任意のデ―タ"とかの方が良かったか。
2018/09/07(金) 09:51:08.31ID:XlXfYo9N
文系にありがちな本質と関係ないところで無駄に意味を求めてつまずくタイプ
2018/09/07(金) 10:11:17.64ID:B220yqHC
hogeの期限を求めて
https://togetter.com/li/47113
メタ構文変数
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E6%A7%8B%E6%96%87%E5%A4%89%E6%95%B0
2018/09/07(金) 11:01:56.00ID:avaKv6NM
本質は枝葉に宿る
日本の心
2018/09/07(金) 11:28:46.81ID:bU+tCKgJ
「ほげほげ」とか「ほにゃらら」とか久米宏がよく言ってなかったっけ?
2018/09/07(金) 11:31:12.93ID:nOBPcl1D
質問なんぞどうでも良くて、それをネタにただただ雑談したいだけのスレ
2018/09/07(金) 12:07:30.64ID:bU+tCKgJ
そりゃ意味のある質問や回答は10年以上前に出尽くしたからだろうね
812デフォルトの名無しさん
垢版 |
2018/09/07(金) 12:21:03.61ID:alW2eXWh
>>810
プロさんが稚拙なプログラミング論を教えたがるスレや
2018/09/07(金) 12:21:35.56ID:avaKv6NM
まだ生まれてなかった人もいるんですょ!
2018/09/07(金) 12:24:54.53ID:GrCwMJT9
>>809
ホニャララは堺マチャアキがまだ言ってるだろ
2018/09/07(金) 12:40:26.02ID:WYpQijpK
チョメチョメ
2018/09/07(金) 13:13:39.31ID:DJ4cwpQn
>>804
まあそうなんだけどここで言いたいのはVBAを初めてやってみるとエクセルではない何か変な壁みたいのがあるんだよね
大変だよねっていう
2018/09/07(金) 13:26:38.18ID:unjOkW8g
>>816
そうか?
VB系以外のまともなプロミングができる人がVBA使うと、抽象化されたデータモデルを念頭に置いた作りになるからかなりとっつきにくいけど、
VBAの本で出てくるコードなんか所詮は操作の自動化をしてるだけでしょ
操作手順書のフォーマットだと思えば何も難しいことはないよ
2018/09/07(金) 14:19:29.48ID:6Cwu36S8
確かにVBAから入った若手はプログラミングが下手
綺麗なコードを書くためにやってはいけない悪い習慣のオンパレード
その元をたどっていくとVBAで身についた癖だったということがちょくちょくある
2018/09/07(金) 14:35:52.83ID:bU+tCKgJ
具体的に
2018/09/07(金) 15:59:24.84ID:HPYB0S2c
むしろマトモな感性の持ち主ならvbaでクソコード見すぎてクソコードは悪という考え方が育ってマシな書き方しようとする
2018/09/07(金) 16:01:30.53ID:avaKv6NM
抽象的に
2018/09/07(金) 18:38:30.90ID:67IOH7lV
クソコードの例を見てみたい
2018/09/07(金) 19:22:19.85ID:ZCXZkOYn
たしかにhogeは慣習だけど筋が悪い命名だと思う
「A123」とかとそんなに大差ない

意味の分かる名前を付けるのが
プログラミングの大原則
2018/09/07(金) 19:23:22.25ID:ZCXZkOYn
>>798
悪書じゃなければ何でもいい
Amazonのランキングとか見れば
2018/09/07(金) 19:25:27.35ID:r3GmK71+
>>823
意味がないという意味があるだろうが
826デフォルトの名無しさん
垢版 |
2018/09/07(金) 19:28:03.60ID:AK55G/Fe
フィボナッチ数列ってどうやるの
827デフォルトの名無しさん
垢版 |
2018/09/07(金) 19:28:46.48ID:K16bSxkY
>>816
おまえもしかしてここでvba学ぼうとしとらんか?w
変な壁みたいな奴しかおらんぞここw
2018/09/07(金) 19:33:59.45ID:viTRXcYg
引数にはちゃんとした名前を付ける
ローカル変数はhogeでいい
2018/09/07(金) 20:21:44.73ID:DJ4cwpQn
>>817
そうか?って言われても…
そうだって言ってんだしさ
2018/09/07(金) 20:38:53.94ID:avaKv6NM
せやろか?
2018/09/07(金) 20:39:47.41ID:ZCXZkOYn
>>825
それでも「sample」とかがいい
2018/09/07(金) 21:11:03.73ID:B220yqHC
意味がない=どんな予約語や変数とも被らないという大きな役目とメリットがある。
sampleなんてつい使いがちじゃないか……
2018/09/07(金) 21:19:36.74ID:Vo/2y10q
VBAだけしかできないですが、VBAだけでも完璧に操れるようになりたいです
他の言語で色々やってみろと言われますが、まだデバッグモードもまともに使えませんしSub()とEndSubだけで囲んだだけのものからつい先日卒業したばかりです
まだ他の言語で色々やってみるのは早いでしょうか、もう少し留まって勉強するべきでしょうか
だけれどもVBAでは具体的な成長方法がわかりません
もっとできるようになってVBAでかなり複雑なガントチャートでも作れればオバちゃんたちがもっと楽になるはずなのでそれが目標です
2018/09/07(金) 21:55:47.81ID:IACFWMzK
>>833
具体的な目標があるんなら、それを実現するために一番いい方法が何か、をまず考えるのがいいと思うよ
それがVBAなら、目標に沿ってVBAを勉強すればいいし。そういう風にしないと勉強しても身につかないしね
2018/09/07(金) 22:16:01.88ID:ZCXZkOYn
>>832
それは関数を分割するなどしてスコープを分ければいい
「sample」だと名前がかぶるから「hoge」なんて筋が悪い
2018/09/07(金) 22:22:01.07ID:hj+zNy2i
>>835
理想的なくらいに分割したら
そもそもローカル変数の必要性はかなり低くなると思うの
2018/09/07(金) 22:22:21.94ID:ZCXZkOYn
>>833
VBAはExcelありきの言語なので
Excelに向いてないことをする必要があるなら
いつといわずすぐにでも他言語を覚えるべき

>複雑なガントチャート
それはVBAで組むもんかなあ……?

C#とかJavaとかPythonとかRubyとか
汎用言語で組みたいなあ
2018/09/07(金) 22:25:06.15ID:ZCXZkOYn
>>836
>ローカル変数の必要性はかなり低くなる
ん? どういう意味?

グローバル変数を使うって意味なら反対
関数型プログラミングの意味なら良いと思う
2018/09/07(金) 22:40:50.86ID:+h1u/3vH
>>833
VBAと親和性が高いのはC#

ただ、ガントチャートが作れるかどうかは分からないから、
入れるVSを確認して
2018/09/07(金) 22:46:28.54ID:B220yqHC
具体コードの中で変数や関数に意味づけするのは当たり前。
ロジック例示でのhogeは全然アリで寧ろそうして欲しい。頭が抽象思考しやすくなる
2018/09/07(金) 22:49:16.70ID:ZCXZkOYn
>>839
>ガントチャートが作れるかどうかは分からない
いや汎用言語ならどれでも確実に作れるでしょ
しいて言えばGUIが大変とかはあるけど
842デフォルトの名無しさん
垢版 |
2018/09/07(金) 22:59:40.01ID:hj+zNy2i
>>838
「理想的なくらいに分割できたけどグローバル変数使ってます」では語義矛盾だよねw
「ローカル変数がいらなくなる」ってのもうまく分割できたかどうかのバロメーターになり得ると思ってる。
843デフォルトの名無しさん
垢版 |
2018/09/07(金) 23:02:07.62ID:JTm7XZoK
ブックA
ブックB
ブックC
・・と複数のブックがあったとして、
ブックAとブックBを参照して値をコピーしてブックCに張り付けるとき
ブックAをオープン
ブックBをオープン
ブックCをオープン
for文
if( workbooks("ブックA").worksheet("Sheet1").Cells(X,Y).value = workbooks("ブックB").worksheet("Sheet1").Cells(X,Y).value )
ブックCに値を設定

という具合に、ブック名から指定して参照するコードを組みこんでいるのだが
処理が複雑でなければ処理速度はさほど気にながらないが、for文がいろいろ重なると、やたら処理速度が重くなる。
2018/09/07(金) 23:29:41.20ID:hj+zNy2i
PowerShellとExcelで指定フォルダ以下のPDFファイル一覧をリンク付きで出力
https://qiita.com/takaaki3110/items/8b51e3df81e73fdd4585

みんなこういうのが好きなのか?
845デフォルトの名無しさん
垢版 |
2018/09/08(土) 07:16:31.62ID:fPoBP/2C
どうゆうのだよ?
2018/09/08(土) 08:14:31.41ID:ZUEeKRTR
>>844
PowerShellで処理して結果をExcelファイルに書き込むってこと?
なら結構好き
逆にExcelファイルからデータ読み出してDBに書き込むとかもよくやる
2018/09/08(土) 08:34:54.76ID:Gh/NaJW5
おまえらって偉そうに講釈垂れてるけど、
職業はPGやSE又はそれらに類似する職種、業務をしていて、尚且つ最低でも10年はバリバリ働いてるんだよな?
2018/09/08(土) 08:51:21.15ID:A8WV5L+6
>>844
好き嫌いはどうでもいいけど日常作業としてよくやるね
逆にExcelをVBAで拡張して操作感UPみたいな使い方は業務では意外と需要が少ない
2018/09/08(土) 09:10:34.46ID:VTe/DYe1
>>847
ここの書き込み見ればそんな奴居ないのはわかるだろ?
普段の作業はキッティングがいいとこ。
2018/09/08(土) 09:51:54.75ID:qA6q8f56
>>834>>837>>839
アドバイスありがとうございます
大事なことを言い忘れてましたが、職場ではVBA(VBE)以外は触れそうにありません…
それでも家ではC#の勉強をして、プログラミング能力を高めてから複雑なガントチャート作りに取り掛かった方が良いでしょうか?
2018/09/08(土) 10:22:59.24ID:LzkjeqyB
たのしいRuby 第5版、2016

まず、この本を3回読む

C# なんて、難易度が高すぎる。
数年後に考えろ
2018/09/08(土) 10:26:22.67ID:CibhxHgt
でもC#ってWindows標準でコンパイラついてるからメモ帳でもプログラム作れるよな
会社のPCでもC#使えるのでは
853デフォルトの名無しさん
垢版 |
2018/09/08(土) 10:41:58.97ID:5ZaWBhkV
相変わらず出ました Rubyヴァカ
2018/09/08(土) 11:47:20.96ID:VbyUB+Pi
それ言い出したらVBコンパイラも付属してるし、VBscript、バッチ、ブラウザ経由のJavaScript、標準で使える言語はいくつもある
言語ごとの文法の違いよりも、基本アルゴリズムをたくさん知ってる方が重要
2018/09/08(土) 12:14:50.97ID:ZUEeKRTR
>>849
キッティングがマシな方なのか…
お仕事お疲れ様です w
856デフォルトの名無しさん
垢版 |
2018/09/08(土) 12:19:15.64ID:tr1EMUo1
「キッティングがいいとこ。」
という表現をどのように解釈するか。
オレには疑問の余地はなかったが世の中は広いな。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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