Excel VBA 質問スレ Part55

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


※前スレ
Excel VBA 質問スレ Part54
https://mevius.5ch.net/test/read.cgi/tech/1527334657/
2018/08/16(木) 17:16:08.82ID:5/9Syz1B
すげーな、ハンドルと右折の話から一週間くらいでこれとか活気があっていいなw

サマータイムの話が職場で盛り上がった時に
それくらいはプログラム作るときに考慮しておけよなって人が多くて
やっぱり求められてるのはハンドル作れってことなんだなと痛感したわ
ー応じようだなんて1ミリも思わないけどww
2018/08/16(木) 18:00:06.03ID:L21XhAl1
>>728
それ自体が試験の一部
2018/08/16(木) 18:48:51.47ID:1cDvfnJm
>>728
そのテキストのHPとかあるんじゃね
2018/08/16(木) 21:26:24.30ID:Z/EAAxtY
教えてください

マクロを登録したチェックボックスを用意して、ワンクリックでその隣のセルの値をコピーする
という簡単そうな事ができませんでした
Activecell.offset(,1).Copy
くらいの事でできると思っていました…
すみません助けてください
たぶんすぐ出来るとか豪語してしまいました
反省しています
2018/08/16(木) 21:31:43.44ID:W+10vliG
>>732
出来ませんでした、と謝ればいいと思う
2018/08/16(木) 21:46:48.30ID:BIfWFzcm
>>732
Private Sub CheckBox1_Click()
  CheckBox1.TopLeftCell.Offset(0, 1) = "←ここだよ"
End Sub
2018/08/16(木) 23:30:13.50ID:Z/EAAxtY
>>734
参考にしてできました!
ありがとうございました!!!
2018/08/17(金) 01:42:30.73ID:tOusYlvg
>>735
馬鹿は死ねよ
2018/08/17(金) 01:50:16.73ID:yjK/nJxZ
そんなに自分を卑下しなくてもいいぞ
2018/08/17(金) 07:22:56.68ID:nBQYbnk5
>>736
隗より始めよ
2018/08/17(金) 08:34:01.64ID:w1qAakJm
>>736
泣いて馬鹿を斬る
740デフォルトの名無しさん
垢版 |
2018/08/17(金) 17:20:05.57ID:lRSRxbIQ
with使うやつアホなの?
.で始まる部分を見るたびにwithを探しに行って確認する手間暇がかかって面倒。
2018/08/17(金) 18:01:20.36ID:KaaDwp63
普通の人が追うのに苦労するほどなら確かにWithの使い方としてはあまり良くない
ただ>>740の能力がなさ過ぎる可能性が微レ存
2018/08/17(金) 18:03:08.60ID:dZqaXnfX
>>740
何故頑なに変数使わんのか謎だよなw
一行に何度も.出てくるの見ると吐きそうになる
2018/08/17(金) 18:31:53.54ID:LWrcZ49g
with無くしてメソッドチェインできるようにAPI変えてくれ
2018/08/17(金) 22:49:53.19ID:Y+5hjotK
やだ
745デフォルトの名無しさん
垢版 |
2018/08/17(金) 22:57:11.00ID:zD2h2oDf
このスレもルビパー臭くなったなwプロさんwwwww
746デフォルトの名無しさん
垢版 |
2018/08/17(金) 23:20:18.52ID:vMaMvG23
>>740
オブジェクトの生成とWithを組み合わせるとスコープ(っぽいもの)の終了で
リソース解放してくれるのだけは重宝している。
2018/08/18(土) 00:16:22.71ID:u8ja/Ot0
>>746
その使い方以外あんまり使ってほしくない
.開始はなんというか、キョドる
748デフォルトの名無しさん
垢版 |
2018/08/18(土) 00:25:21.58ID:1Mn+50P1
>>747
.開始?

With Createなんちゃら〜
.なんかメソッド
End With

Nothing代入せずにデストラクタが呼ばれるのいいじゃない
2018/08/18(土) 00:33:56.94ID:u8ja/Ot0
そういやvbaのガベージコレクションってどうなってるの?
sub・functionが終わったらメモリから全部消えるのかな
750デフォルトの名無しさん
垢版 |
2018/08/18(土) 00:38:28.60ID:PRD/1v4M
>>748
C#のusing的な使い方になるってこと?
751デフォルトの名無しさん
垢版 |
2018/08/18(土) 00:52:41.00ID:QJ6qXFdU
プロさん出番やでーwwwww
752デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:07:33.12ID:1Mn+50P1
>>750
単に End Withのタイミングで Class_Terminate が呼ばれるってだけだけど
Sub・Functionの終了を待たずにそのタイミングをコントロールできるのがいい。
2018/08/18(土) 02:05:15.49ID:Qu3u+5ap
>>750
なるほど、廃棄が前提ならアリやな。
でもVBA掲示板のプロっぽい風吹かしてるやつらは、廃棄する必要のないworkbookとかworksheetをワザワザwithする不思議。
2018/08/18(土) 02:35:51.37ID:gharGiQ8
ブルゾンちえみ
2018/08/18(土) 03:10:47.26ID:r01iwFGV
>>752
VBAのガベコレは参照カウンタ方式だから、参照がなくなったら廃棄されるだけ
変数に受けても、明示的にNothing代入すればその場で解放されるはずだからタイミングのコントロールはできる


>>753
そもそもWithは、単に何度も同じオブジェクト参照を書かなくて済むだけの機能だから
廃棄するかどうかとは関係ないしそんなものと絡めて使うべきではない
756デフォルトの名無しさん
垢版 |
2018/08/18(土) 09:04:47.19ID:1Mn+50P1
>>755
明示的にNothing代入するのがだるいって話さ
2018/08/18(土) 09:10:53.39ID:pAmB63kN
>>755
> 廃棄するかどうかとは関係ないしそんなものと絡めて使うべきではない
>>748みたいな奴ならEnd Withで廃棄されるだろ
難癖つけてるだけにしか見えん
2018/08/18(土) 11:11:44.78ID:HXszneG/
VBAで べき論 は不要
2018/08/18(土) 13:39:35.74ID:u8ja/Ot0
>>758
だよな
vbaなんてサクッとエクセルデータをどうにかしたり印刷の体裁整える程度でいい
そんなインストラクタだのガベージコレクションなんて考えて書く言語じゃない
2018/08/18(土) 14:07:43.88ID:WpMgA9bG
>>759
それもまたべき論
2018/08/18(土) 14:20:57.50ID:u8ja/Ot0
>>760
うん、知ってる
2018/08/18(土) 14:25:54.38ID:r01iwFGV
>>758
ああ、そうだな
VBAではっていうより、ここでは不要だな
どうせまともな議論にはならんしな
2018/08/18(土) 14:26:50.24ID:r01iwFGV
>>758
ああ、そうだな
VBAではっていうより、ここでは不要だな
どうせまともな議論にはならんしな
2018/08/18(土) 14:37:54.05ID:pHq61mgp
>>763
明確に賛成 vs 明確に反対
の罵り合いになるなら荒れても面白いんだけど、なぜかそうならんね
みな本題から逸れたところで言い争う
2018/08/18(土) 15:01:58.92ID:u8ja/Ot0
前提や環境が違いすぎるからな
2018/08/18(土) 15:33:37.30ID:OGMfrWDu
>>753
WorkbookやWorksheet等の組み込みオブジェクトであってもWithで参照保持した方が良い場合もある
実際比べてみると分かるがオブジェクト変数を使うとメモリを確保する分動作が重くなるし、一つの処理の中でWithを使わず何度も同じプロパティ参照を行えばその分計算量は増える

それなりに大きな配列を処理したり何百ものブックやシートを処理したりするプログラムになれば、この手の小手先の調整が大きく動作に影響したりするよ
2018/08/18(土) 15:50:10.99ID:u8ja/Ot0
オブジェクト変数って言っても中身は参照でしょ?
どんなポンコツPC使ってるんだ
768デフォルトの名無しさん
垢版 |
2018/08/18(土) 16:17:32.41ID:1Mn+50P1
>>766
With なんちゃら
  .Hoge
End With
の代わりに
Set ref = なんちゃら
として ref.Hoge
とするなら原理的に同じはずでは?
2018/08/18(土) 16:26:03.95ID:XAZ8inQ9
アマチュアのVBAユーザーだとインスタンスと参照の概念はよくわからないんじゃないかな
Java研修などでも新人が躓きやすいところだし勘違いしてもしょうがない
770デフォルトの名無しさん
垢版 |
2018/08/18(土) 16:33:12.97ID:lPI41hg1
VBA推しの人の前提条件がアプリのインストールも何もかも出来ないって会社の話でしょ?
そんな会社は特殊な極一部じゃん
普通はインストールも出来るしアプリも入れれる
でもそうなるとVBAを使う意味が全くなくなるから特殊な環境の話をこじつけてるんでしょ?
2018/08/18(土) 16:38:06.28ID:u8ja/Ot0
>>770
>特殊な極一部じゃん
中小企業にばかりいればわからないかもな
そこら中にあるぞ
772デフォルトの名無しさん
垢版 |
2018/08/18(土) 16:53:37.10ID:lPI41hg1
大企業が極一部じゃん
2018/08/18(土) 17:07:16.74ID:u8ja/Ot0
>>772
正論じゃん!
すまんかった
774デフォルトの名無しさん
垢版 |
2018/08/18(土) 17:19:14.72ID:XAZ8inQ9
本当にエクセルしか使わない大企業などというものが存在するのだろうか
具体的にどこの企業のことなんだ?
2018/08/18(土) 17:32:37.30ID:ktgzOwh8
やたらとメール重用で社内システムは古臭いwebアプリ
末端はこそこそエクセル開発ってイメージ
ただの偏見だけど
2018/08/18(土) 17:50:50.84ID:XAZ8inQ9
>>775
そんなんで仕事になるのかね?
大企業じゃなくて底辺か中小の話ではないのかそれって
777デフォルトの名無しさん
垢版 |
2018/08/18(土) 18:23:43.35ID:lPI41hg1
大企業からwebアプリでやってそうだけど
違うんだ
共有や同時接続が決定的にダメダメなエクセルで仕事しなけりゃいけないなんで気の毒だな
2018/08/18(土) 19:11:00.94ID:QbV6+C0c
大企業でも大抵は入れていいアプリはホワイトリストとかで持ってるし申請すれば大抵は通る
779デフォルトの名無しさん
垢版 |
2018/08/18(土) 19:24:59.50ID:Rl20PTNq
じゃあVBAしか使えないって大前提が崩れるじゃん
そしたらVBAなんて使う意味ないじゃん
VBAしか使えないのに色んな工夫して凄いなぁーって
とてつもなく面倒で生産性の悪い事をさせられてるんだなーって
2018/08/18(土) 19:43:20.54ID:g/6PiQSP
で、またC#だのなんだのでループ?
781デフォルトの名無しさん
垢版 |
2018/08/18(土) 19:54:33.41ID:Rl20PTNq
ループっても前提条件が大きく変わったんだから議論は初めてと言っても良いだろ
2018/08/18(土) 20:12:24.79ID:u8ja/Ot0
>>775
メールは使いにくい!チャットワーク導入!
→チャットワーク使いにくい!
→メールへ

って感じ
783デフォルトの名無しさん
垢版 |
2018/08/18(土) 20:34:54.41ID:1Mn+50P1
>>779
根本的なところで根拠がないんだよ
Excelが周りで使われているんだからVBAも当然使いたくなるだろう
784デフォルトの名無しさん
垢版 |
2018/08/18(土) 20:41:33.86ID:Rl20PTNq
今からVBAを覚えようとしてる人へ

他言語ならもっとシンプルで簡単にそして高速ですよ
それに開発ツールも遥かに強力だしインテリセンスも抜群に効くし半分の労力で10倍の生産性があるので無意味なVBAを覚えるなんて遠回りしない方が良いですよ
VBAは主に大企業で制約がとてもキツく何もインストールさせて貰えない環境で働かされてる人向けです
785デフォルトの名無しさん
垢版 |
2018/08/18(土) 21:15:29.15ID:1Mn+50P1
>>784
そんなあなたのイチオシは?
2018/08/18(土) 21:34:56.80ID:XAZ8inQ9
俺は.NETに惚れ込んでMS好きになったから、MSファミリの代表格であるExcelやVBAも好きになりたい
でも、ExcelとVBAの使い道を必死に探しても、残念ながらC#やPowerShellには勝てない日々が続いている
なんでもいいから、VBAコミュニティが努力して革命的な利用方法を発明してくれればいいんだけど
787デフォルトの名無しさん
垢版 |
2018/08/18(土) 21:42:59.05ID:ddghJ7gy
>>784
VBAは大企業では大いに役に立つわけですな
788デフォルトの名無しさん
垢版 |
2018/08/18(土) 21:50:10.80ID:ddghJ7gy
ここはVBAのスレだから
VBAのポジティブなところにフォーカスしたいよね
その他の言語は専用スレに行っていただくとして

大企業で活かせるっていうのは良いですよね
2018/08/18(土) 22:00:30.77ID:g/6PiQSP
>>786

お前が.NETに惚れ込んでいようとなんだろうとそんなのはこのスレに何の関係もない
2018/08/18(土) 22:09:36.45ID:XAZ8inQ9
>>789
VBAのメリットや効果的な運用方法を教えてください
791デフォルトの名無しさん
垢版 |
2018/08/18(土) 22:13:23.22ID:FUzlnCg0
前提条件が崩れてアタフタしとる
ちなみにお前は大企業の書類選考も通らん
なので好きなだけインストール出来る環境なのにVBAでのたうちまわってる
792デフォルトの名無しさん
垢版 |
2018/08/18(土) 22:17:28.63ID:ddghJ7gy
>>790
Wikipediaから引用するけど

Excel、Access、Word、Outlook、PowerPointなど
Officeのアプリケーション・ソフトウェアの機能を拡張できる。

Microsoft OfficeシリーズにはVBAのコード作成・編集ソフトが最初から付属している
使用を始めるにあたり、Office以外の特別なソフトの用意やセッティングを要しない。
文献やネット情報も多く、最低限の学習で誰でも手軽にプログラミングが始められる。
実行も容易。

効果的な運用方法はわかりません。
793デフォルトの名無しさん
垢版 |
2018/08/18(土) 22:25:10.50ID:ddghJ7gy
大企業の書類選考を通らない人は中小企業に就職するしかありませんね。

中小企業に就職したとしても大企業の下請けとして仕事することも在りますので
大企業で使われているVBAは中小企業でも使われることは自明なわけであります。

まとめるとVBAは大企業で大いに役立つし
中小企業でもその知識や技術は重宝されるよってことです
2018/08/18(土) 22:30:17.99ID:XAZ8inQ9
GoogleやMicrosoft、Amazonなどの大企業ではエクセルVBAを推奨してほかのツールはインストール禁止なのでしょうか?
795デフォルトの名無しさん
垢版 |
2018/08/18(土) 22:30:34.00ID:FUzlnCg0
エクセル以外は何もインストール出来ない環境だからって前提は変更で良いのね
その上で実は色んな言語もIDEも試せるけどエクセルにはVBAが1番ピッタリだって事に変えとけば良い?
2018/08/18(土) 22:40:06.27ID:bgbHuJd/
その前提だとVBAが一番ってことにならないからダメ
2018/08/18(土) 22:43:37.98ID:ub6IzT+t
>>768
違う
オブジェクト変数は4バイト以上のアドレス領域をメモリ上で占有する
Dimとかで宣言すると、その変数に何も代入されておらず処理に全く関与していない状態でも4バイト以上消費することになる

一方、With文中で取得した参照はブロックスコープ内でしかROMを占有しない

この違いは案外大きいよ
798デフォルトの名無しさん
垢版 |
2018/08/18(土) 22:45:52.52ID:FUzlnCg0
今のマシンで4バイトのメモリなんて気にする必要ないだろ
ファミコンか!
2018/08/18(土) 22:48:22.15ID:u8ja/Ot0
>>797
どんなしょぼいメモリなんだよwww
2018/08/18(土) 22:50:44.29ID:XAZ8inQ9
>>792
メリットとしては弱いかな

>>795
VBAがExcelにピッタリというのは実は根拠に乏しい
本当にピッタリならVSTOやExcel Python、Excel JS APIなどといった他の言語への需要は生まれなかったはず
ユーザーの素直な気持ちとしてVBAはExcelにふさわしくないのでは? という思いがあるから、他の言語への需要があるんじゃないかな
801デフォルトの名無しさん
垢版 |
2018/08/18(土) 22:57:23.43ID:1Mn+50P1
>>797
大きいわけないと思いまーす

>>800
それらって成功してるの?(曖昧な質問)
2018/08/18(土) 23:05:53.57ID:GFBy1Kxc
ROMww ファミコンかよw
2018/08/18(土) 23:10:13.31ID:XAZ8inQ9
>>797
もうやめとけ
そんな微細な違いでは8:2法則に飲み込まれてパフォーマンスには影響しない
そもそもコンパイルされたらどっちの書き方でも関数やプロシージャの消費するスタックサイズは同じだろう
それともなにかVBAは分岐によって動的にスタックサイズを変えているとでもいうのか?
そんなのは4バイトのメモリをケチるよりももっと無駄なコストだ
804デフォルトの名無しさん
垢版 |
2018/08/18(土) 23:16:38.19ID:ddghJ7gy
>>800
最強だよ!
805デフォルトの名無しさん
垢版 |
2018/08/18(土) 23:17:49.14ID:ddghJ7gy
VBA最強伝説の幕開けである
2018/08/18(土) 23:26:02.96ID:u8ja/Ot0
vba、当時は言語が入り乱れていてbasicでもいいかなって感じだったけど
もう今やBasicベースの言語が壊滅的すぎてな

今ならJS、python、C#どれでもいい
個人的にはweb系火事tているのでJSで掛けるとありがたい。
807デフォルトの名無しさん
垢版 |
2018/08/18(土) 23:37:12.67ID:ddghJ7gy
>>806
GoogleスプレッドはJSを採用してるね
たしかに良い

とある大学の情報の先生がOCamlを教えたあとに
Javaを教えるとJavaは難しいですと言ってくる生徒が多いって言ってた

Excelのマクロと関数型言語は親和性高いから
F#とかこれから覚える人にとってはVBAよりもわかりやすいかも
808デフォルトの名無しさん
垢版 |
2018/08/18(土) 23:46:37.13ID:FUzlnCg0
優秀な言語の条件
情報やサンプルの豊富さとIDE
F#なんてVBAより奇特
マイナーが好きなの?
2018/08/18(土) 23:47:08.42ID:u8ja/Ot0
>>807
JSは本当に使いやすくていいね
昔は定数「undifined」に代入出来たりとやんちゃな言語だったけど、大分更生した

vba自体は嫌いじゃないけど、折角プログラム覚えたのに、
他言語へのつぶしが効かないのがちょっと勿体無い

ただ、F#はちょっと・・・
せめてGoとかで
810デフォルトの名無しさん
垢版 |
2018/08/19(日) 00:04:11.93ID:VVi9Y61v
>>808
OCamlが好きなの
F#はOCamlの.NETバージョンだから

>>809
Goも良いよね、ミニマリズムって感じ
あれ設計した人は良い意味で変態だよ
もう言語ありすぎて追い切れないけど
2018/08/19(日) 00:15:19.63ID:HmjF4wKY
VBAの一番の問題は、馬鹿が作ったVBAをもっと馬鹿には理解できないことだろ
812デフォルトの名無しさん
垢版 |
2018/08/19(日) 00:26:53.36ID:psltJnDY
>>811
もしVBAがなければその現象がほかの言語・環境になだれ込むんだぞ?
2018/08/19(日) 01:01:59.23ID:Pl2DH8TK
VCAとかになるのかな?
2018/08/19(日) 03:33:05.33ID:p4OHu/xz
というか90年代にVBが爆発的に売れた経緯を忘れてる
当時GUIに関してはVC++よりも開発し易かった
2018/08/19(日) 06:40:10.99ID:2hMRvgbC
おまいらここVBA質問スレだからな
雑談は雑談スレがあるだろ
質問したい人がしにくい雰囲気になってるじゃねーか
2018/08/19(日) 08:03:31.75ID:aAysneB2
ここ3人ぐらいで回してるんだろw
2018/08/19(日) 09:07:00.29ID:Qn4G0bqC
>>814
それはVBではなくGUIフレームワークの成果だろ
VBそのものは今も昔も使いにくかった
2018/08/19(日) 09:41:26.30ID:t1KS71KR
> >>814
> VBそのものは今も昔も使いにくかった
具体的事例よろ
2018/08/19(日) 11:21:10.80ID:v00HjWei
>>818
言いたい事がまとまっているサイトがあったわ
http://crapp.hatenablog.com/entry/2014/12/31/235842

個人的には今も昔も
>E等価演算子と代入演算子が同じ。
これがあまりにウンコすぎる。本当に最悪
2018/08/19(日) 11:29:02.68ID:EQkxTh7g
VBとVB.NETの区別もできないバカ → >>819
2018/08/19(日) 11:31:13.70ID:/OaADBse
>>800
用途が全く違う。
それに大抵の言語は用途が違っていてもある程度は被ってる。
矛盾するようだが他言語で出来ることは大抵VBAでも出来る。
一方、VBAで出来ることが他言語で出来ない場合は結構多い。

他えば、IEが自らをスクレイピングさせるために専用言語を用意したとする。
そうするとVBA含めて他言語は勝負にならない。
なぜならスクレイピングする運用方法が違うから。
どちらも使用者が取得したいデ―タを取得するプログラムが出来てると仮定してPythonと架空のIE専用言語を比較するとWebを見ていて、スクレイピングしたいページが有った時にその場でボタンやメニューから出来るのと、スクレイピング用のプログラム探しを始める違い。
この差は致命的に大きい。

まず、機能が実現出来ることが一番大事。
次にスピード。
プログラミングしやすいかどうかはその後。
そしてユーザーインターフェースは一番大事な機能に含まれる。
822デフォルトの名無しさん
垢版 |
2018/08/19(日) 11:41:24.96ID:XZP26CyB
>>821
この意見に全く同意出来ないんだけど
そしてIE専用言語って何?
2018/08/19(日) 11:44:49.04ID:ql2A++ig
>>821
IEの開発者ツールのデバッグコンソールから実行するjavascriptとかIE専用言語みたいなもんだけど
それがあるからといってPythonやRubyでIEを操作することをやめはしない

そもそもスクレイピングするのにIEを通すことなんてしないので例えが悪すぎる

Web開発してるときにIEでの表示チェックぐらいか?
それならなおのことIE専用言語なんて出番がない
2018/08/19(日) 11:56:24.77ID:QrzzpoQc
マジでスクレイピングごときになんでIEだのCOMだの持ち出さないといかんのか
IEのサポート終了と同時に消える技術だってのに
825デフォルトの名無しさん
垢版 |
2018/08/19(日) 11:59:17.80ID:XZP26CyB
IE専用言語ってもしかして
ActiveXの事とかの事?
そうでもない?
826デフォルトの名無しさん
垢版 |
2018/08/19(日) 12:25:59.66ID:NIMznYGz
雑談やりたけりゃ雑談のスレでやれや、ヴォケナス野郎ども
2018/08/19(日) 12:30:11.49ID:/OaADBse
>>823
違うよ。
そういうものが有ったとしたらという話。
今の開発者用ツールはWebぺージを作るためのものでスクレイピングするためのものじゃ無い。
2018/08/19(日) 12:33:51.41ID:ql2A++ig
>>823
IE専用言語があったとしてもPython使うわボケって言ってんの

> スクレイピングしたいページが有った時にその場でボタンやメニューから出来る
これに近いことが今でも開発者ツールでできるから具体例として挙げたの


文盲の相手マジ疲れる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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