Excel VBA 質問スレ Part52

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/01/27(土) 20:25:05.67ID:Xe+uGT7T
スレ立ての際は一行目に
!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 VBA 質問スレ Part51
http://mevius.2ch.net/test/read.cgi/tech/1510107990/
2018/02/21(水) 07:37:11.81ID:pdEcbkjv
>>177
まぁIf文でもSelect文でも使いどころが見合ってればいいけど
それより気を付けなければいけないのはOrやAndの扱いだね。
.Net系のOrElseやAndAlsoと違って前に設定した条件を満たしていても後続の条件を評価してしまう。

まだ単純な値を比較するなら誤差程度の時間差しか出ないけど
関数やメソッドの戻り値を条件にしていて、
その関数が重い処理であればそれだけ無駄な時間が掛かってしまう。

後はもしクラスに詳しければポリモーフィズムでなるべく無駄な分岐は避けた方が良いかな。
その分処理時間だけでなく改修やテストの時間も削減が見込める。
184デフォルトの名無しさん
垢版 |
2018/02/21(水) 23:14:40.16ID:y7Un/hTJ
処理時間の高速化が目的なら
セル範囲をバリアント型配列に代入して配列内で処理をしてから、処理後の結果を配列からセル範囲に出力すれば劇的に早くなるよ
2018/02/22(木) 01:57:42.07ID:gwSYBKpq
エクセルで家計簿作りたいんだけど、みんなどうしてるん?
ものすっごい管理するのが面倒くさくなるんだけど…

家計簿を複式で書きたいから毎回商品名やら収入支出まで全部書くんだけど、
最近面倒臭くなってきたからこの辺の操作を簡略化したいのよ


商品名を全部書くのが面倒くさいから大雑把な商品項目を作って
商品項目の選択制にしたいんだけどどうすりゃいいんだ?

例えば、お茶買ったとしたら、飲み物って項目を選択して
収入支出のどっちかを選択して金額を入れればいいだけ、みたいな
あと、飲み物のグループだけを表示できるようにしたりもしたい
自分がその月に何にお金を一番使ってるのか項目毎に分析したいんだ
2018/02/22(木) 05:34:45.99ID:6+gpZmum
ユーザーフォーム作って選択すればいいんじゃね?
あとはKey に該当する商品だけ合計するとかでおk
2018/02/22(木) 07:11:07.10ID:/kJbMS0V
>>185
セルを選択形式にしたいなら「入力規制」でググれ
だがその項目を決まった位置に書いておけば
それすら必要ないように思える。

多分VBA必要ない。
188デフォルトの名無しさん
垢版 |
2018/02/22(木) 07:13:19.54
>>185
つ 「エクセル簿記」
2018/02/22(木) 07:17:47.39ID:FxhP8B8J
>>185
> 自分がその月に何にお金を一番使ってるのか項目毎に分析したいんだ
スレチになるけどそう言う目的あるならフリーの家計簿ソフト使った方がいいと思うよ
190デフォルトの名無しさん
垢版 |
2018/02/22(木) 08:05:56.18ID:YVYiWWcv
フリーの家計簿ソフトなんて作ってるのはみんな>>185みたいな奴だぜ
オレオレ便利機能が欲しいから作っちゃいましたみたいな
家計簿なんてそんなもん
作れるなら自分で作っちゃうアプローチのが正解
2018/02/22(木) 10:32:45.75ID:jLYjEY9/
さらにスレチだけど、そもそも複式で書く意味って?
支出と費用計上のタイミングがずれる
収入と収益計上のタイミングがずれる
なんてことがある場合に複式の利点があるんだろうけど
そもそも家計簿作る人ってそこまでやんの?
米を10kg買ってきました
資産計上します
消費の都度費用計上しますとか?
192デフォルトの名無しさん
垢版 |
2018/02/22(木) 18:43:19.33ID:VgNmulNi
アスペ感強すぎwww
2018/02/22(木) 19:08:12.44ID:K6gwUVsb
家計簿の無料アプリなんて、いくらでもあるだろ

既にあるものは作るな。
世の中に無いものを作れ
2018/02/22(木) 19:45:49.11ID:1JOjbwTy
ほんと定期的にやばそうな人くるよな
2018/02/22(木) 21:13:28.78ID:c7GHDdxz
++や+=や?みたいな演算子ないんでしょうか?
毎回代入やifしないと駄目?
2018/02/22(木) 21:36:57.24ID:UMUr68HJ
>>195
だめ
2018/02/22(木) 21:45:28.24ID:c7GHDdxz
ありがとう
不便だなあ…('A`)
2018/02/22(木) 22:03:55.07ID:/kJbMS0V
>>197
不便だよ
不便なところをどうやって何とかするのかを
考えるのもVBAの醍醐味
2018/02/22(木) 22:05:36.37ID:6NHeYF5q
>>195
?:(三項演算子)はIIf( )で似たようなことができる
ただしC++の三項演算子と違って関数だから引数はすべて評価される
なので
a = 0
b = IIf(a <> 0, 1 / a, 0)
とかやると0割りエラーになるので注意
2018/02/22(木) 22:31:32.98ID:rSjpq6iH
And や Or も前件だけで真偽判定してくれなくて全文評価するから不便だよな
2018/02/22(木) 22:44:59.91ID:Dms0Es6m
条件式は1本にまとめるよりIfをネストした方が処理が速いこともあるし
C#なんかとは考え方をまるっきり変えてコーディングしないと
2018/02/23(金) 00:01:36.17ID:aLU7NSfS
その内LINQやラムダ式が使えないから不便だって言う人が出てきそうな勢いだな

Pythoneまで待てや
2018/02/23(金) 08:52:34.86ID:AfM26Mh3
「プログラミング環境なんて数年おきに改訂され進化していくもの」
という感覚は正しい。
しかしあたりまえが通じない世界もある。
それが、「廃れた開発環境」と「リソースの足りないプロジェクト」だ。
204デフォルトの名無しさん
垢版 |
2018/02/23(金) 12:15:48.66ID:E8zJnigo
どしたの急に?
2018/02/23(金) 12:32:39.13ID:AiDQ1wxe
Excel2010以降で、コンテキストメニュー追加するとき
commandbars().add
でコメントを右クリックした時のメニューは()の中は何になりますか?
206デフォルトの名無しさん
垢版 |
2018/02/23(金) 22:05:45.08
コメントを右クリックの意味がわからん
207デフォルトの名無しさん
垢版 |
2018/02/23(金) 22:09:49.60ID:NDjRlvGW
まずコメントって知ってるか?
2018/02/23(金) 22:21:14.89ID:LlcGT0P+
日本語崩壊しててワロタ
209デフォルトの名無しさん
垢版 |
2018/02/24(土) 00:24:56.44
ひょっとして、無指定だと何のショートカットキーが表示されるか(「開く(O)」みたいなの)を聞きたいのではなく(表示されないやろ…てか試せばよくね?と思ってた)、
commandbarsの引数に何を指定すればVBAのエディタのコメントを右クリックしたときのコンテキストメニューに項目を追加できますか?っていう質問なのか?
何の質問をしているのかまったく分からなかったが、がんばって一番意味が通りそうな解釈をしてみた
210デフォルトの名無しさん
垢版 |
2018/02/24(土) 00:54:26.24ID:S7UxFmQS
よく頑張った、もう少しで賞を差し上げます
211デフォルトの名無しさん
垢版 |
2018/02/24(土) 03:12:36.02ID:Cy5WZ5pS
どなたか知恵をください
日本語IMEの変換候補がドロップダウンリストで出てくるアレを
区切り記号入れて(カンマがいいかな)
一つのセルに列挙できませんかね?
例えばA1に半角英で「yama」と入力したら
B1に「山,ヤマ,やま,耶麻,耶摩,八馬,矢間」みたいな
2018/02/24(土) 03:35:37.11ID:39HZSDcZ
>>211
できる
基本的にはImmGetCandidateListかImmGetConversionListを使う
IMEの制御はドロ沼だからあんまり完璧を求めないようにほどほどにな
213デフォルトの名無しさん
垢版 |
2018/02/24(土) 04:09:09.96ID:Cy5WZ5pS
>>212
即レスありがと!
そこのリファレンス読んでくるわ!
214デフォルトの名無しさん
垢版 |
2018/02/24(土) 23:15:34.68ID:KQx6tQtJ
MACでエクセルを使用して、ボタンクリックでphpを実行させてデータを取得してエクセル
に出力する方法を教えて下さい。
2018/02/25(日) 02:02:21.78ID:fGofbzeE
モスじゃだめなのかい?
216デフォルトの名無しさん
垢版 |
2018/02/25(日) 07:39:33.73ID:tVogG6Wu
寒っ
2018/02/25(日) 10:24:12.12ID:jtYvuOjV
今日は暖かいよ
218デフォルトの名無しさん
垢版 |
2018/02/25(日) 10:56:06.58ID:tVogG6Wu
寒っ寒っ!!
2018/02/25(日) 11:00:26.62ID:fGofbzeE
そだねー
220デフォルトの名無しさん
垢版 |
2018/02/25(日) 17:02:52.72ID:TpkMAgUG
ここはエクセルの質問スレちゃうの?、あほばっかだな。
2018/02/25(日) 19:21:52.64ID:eyGxL2ZU
ソダネー
2018/02/25(日) 19:54:07.26ID:UkkX22dp
>>220
スレタイ読めが判ると思うが
223デフォルトの名無しさん
垢版 |
2018/02/25(日) 20:22:35.82ID:JQVcjONo
10万件くらいのリストを作ってそれをある規則で並べかえたいんだけど、一番高速で行うにはどういう手法がありますか?
2018/02/25(日) 20:39:07.10ID:uEiWTozj
お前がやらずに、出来る奴に
キチンと敬意と対価を払って
やってもらう
ノウとかハウとかは後で身に付けたらいい
225デフォルトの名無しさん
垢版 |
2018/02/25(日) 20:53:22.41
>>223
ggrks ([g]oogleでし[r]べてみた[k]っかです[s]んこうにしてね)

http://excel-ubara.com/excelvba4/EXCEL270.html
226デフォルトの名無しさん
垢版 |
2018/02/26(月) 07:46:27.51ID:nDommPCV
>>225
すみません
ありがとうございました
2018/02/26(月) 10:23:38.67ID:2Ht8owgk
>>226
いいってことよ(´・ω・`)b
2018/02/26(月) 17:52:12.51ID:NcBRNf65
Ruby なら、VBA より速いし、そんなに難しくない
2018/02/26(月) 18:56:12.78ID:+OqK48cA
Worksheet_SelectionChangeのコード中に、
If Target.Count=1 then Exit Sub
のところで今日急にオーバーフローのエラーが出るようになって
ちょっとググったらCountLargeというのがあることを知ってとりあえず解決したんだけど
一つのセルしか選択肢てないのに・・・
ウォッチ式にTargetを追加して確認したらTargetの中にItemはひとつしかないのにTarget.Countはオーバーフローってなんだこれ?
2018/02/27(火) 23:52:36.36ID:ht7HfYcX
コピー禁止

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.CutCopyMode = False

End Sub

コピー→別のファイル(Excelなど)に貼り付けが出来てしまう

コピー→マウスを動かすだけでキャンセルするようなVBAはないよね、、、。
2018/02/28(水) 01:32:02.58ID:urFvMZOz
APIでクリップボード自体をクリアしたらダメかね
2018/02/28(水) 01:36:53.98ID:Ddk6veDH
>>209
コメントアウトのコメントじゃなくてセルに付与するコメントのことだぞ
2018/02/28(水) 05:54:26.44ID:PdZXKZv3
フォルダに大量に入ってる動画ファイルの名前と容量を抽出してエクセルファイルに出力したり出来ませんか?
2018/02/28(水) 06:16:52.08ID:9FYD/BHY
できらぁ!!
235デフォルトの名無しさん
垢版 |
2018/02/28(水) 07:17:25.76
VBAにできないことなんてないぞ
236デフォルトの名無しさん
垢版 |
2018/02/28(水) 07:39:47.81ID:6WnrRHIY
え!!VBAでファイルの名前と容量の抽出を!?
2018/02/28(水) 07:42:05.80ID:XToZbbWL
とりあえずファイル操作は全部FSO使っておけば何とでもなる
238デフォルトの名無しさん
垢版 |
2018/02/28(水) 08:04:41.58ID:9Zs6j1Ub
ちょっと横からで申し訳ないです
>>233に似たようなことをFSOでフォルダ内のファイルを数万件取得していて、foreachで一つずつ配列にいれてるんだけどかなり時間がかかる。。一括で取得する方法とかありますかね?
2018/02/28(水) 08:08:27.77ID:Aj9baD3x
>>238
配列に入れないで処理する方法を考える
2018/02/28(水) 08:11:14.51ID:mCK56HVf
エロ動画フォルダに入ってるファイルサイズ取得して一致したらかたっぽを削除するマクロ作ったわ
2018/02/28(水) 08:23:05.93ID:5dUEHtJL
そんなもんフリーソフト落としてくるだけで出来るわ。
一覧表に起こしてアレコレしたいときに捗る
2018/02/28(水) 09:22:10.92ID:2zUSyVD3
朝っぱらから元気で草
2018/02/28(水) 18:29:56.39ID:EAuLwM42
>>233
エロ動画を大量に集めすぎてどこに何があるか微妙にすぐ見つけれなくなった俺と同じ悩みなんだろうか
2018/02/28(水) 19:15:28.02ID:Tb7VJEa0
Function func(ByVal arg) As int
処理
End Function
Dim var As Function
var = address(func)
Call var(argument)
みたいに、関数へのポインタでコールするのはどう書くの。
245デフォルトの名無しさん
垢版 |
2018/02/28(水) 20:22:58.19ID:6WnrRHIY
>>244
Dim var As Object
Set var = Ref(func)
Call ByRef var(argument)
2018/02/28(水) 22:29:15.05ID:ugxprRf8
PowerShell なら以下で、ファイル名・サイズを、カンマ区切りで表示できる

cd で、そのフォルダへ移動してから、
ls | %{ $_.Name + "," + $_.Length }

結果をファイルに出力するなら、
ls | %{ $_.Name + "," + $_.Length } > ファイル名

出力
test01.rb,341
test02.rb,216
test03.rb,453
247デフォルトの名無しさん
垢版 |
2018/03/01(木) 22:00:03.32ID:AveIjfm9
エクセルに出力できとらんやんw
248デフォルトの名無しさん
垢版 |
2018/03/01(木) 22:10:39.18
結果をファイルに出力するなら、
ls | %{ $_.Name + "," + $_.Length } > ファイル名.csv
249デフォルトの名無しさん
垢版 |
2018/03/01(木) 22:22:42.13ID:AveIjfm9
でたwwwエクセルとcsvの区別がついてない奴wwwww
2018/03/02(金) 07:10:15.29ID:8gOr4FTA
ブックオープン時にフォームだけ開きたい場合ってどうしたらいい?
251デフォルトの名無しさん
垢版 |
2018/03/02(金) 07:17:55.07
>>250
[表示]-[ウィンドウ]-[非表示]
2018/03/02(金) 08:53:24.56ID:NzNuwPhv
クラス継承前提で設計してしまったのだが、どうしてくれるの。
2018/03/02(金) 09:38:57.79ID:5NrcBP5g
お前がマヌケだったって事だろ。
作り直せ
254デフォルトの名無しさん
垢版 |
2018/03/02(金) 12:05:11.13
>>252
ポリモーフィズムはImplementsがあるから、あとはどうにでも工夫できるやろ
255デフォルトの名無しさん
垢版 |
2018/03/02(金) 19:00:30.03ID:ALTNLkg9
>>252
コピペは攻守ともに最強の継承やぞ
2018/03/02(金) 21:57:53.05ID:YGnqgkH5
スーパークラス作ってそれをオーバーライドしてけば省力化できると思ったのかな?
257デフォルトの名無しさん
垢版 |
2018/03/02(金) 22:07:46.54
省力化は委譲で代替できる
258デフォルトの名無しさん
垢版 |
2018/03/02(金) 22:19:05.00ID:ALTNLkg9
え?委譲で省力化を!?
2018/03/03(土) 08:40:25.03ID:xibgNHFN
正直VBAのクラスは他のObject指向言語に比べるとその辺見劣りするのは仕方ない。元々構造化言語だし。

そこをどうするかを考えて行くのが醍醐味でもあるんだけど
やっぱり移譲にも限界があって例えばフォームを継承してもっと機能を追加したり変更したりしたいとき、
.Net系であれば単純に継承してメソッドやプロパティを追加やオーバーライドすれば良いものが、
移譲の場合は全て呼出し口を設定しなければならなかったりするので
こういう場合は余り現実的とは言えない。

移譲や継承を使うのとはまた違った方法を考える必要があるんだけど
それを考えるのもまた醍醐味。
2018/03/03(土) 09:00:54.41ID:QwmpO0ZF
>醍醐味
プックスクス
2018/03/03(土) 09:05:29.61ID:CziLTh5W
他に現実的な解法が無いからVBA使っているだけで、誰も好んで使っているわけではないんだけど、
かといって自分の無能を全てVBAのせいにしている発言を見るとイラッとするのは確か
2018/03/03(土) 11:49:03.81ID:Rcnk03vE
>>260 ☆ミ DAIGOアジ ☆ミ
2018/03/03(土) 12:45:47.64ID:axcuG9mm
完全に割り切って ByVal As Object または ByVal As Variant で委譲オンリー
2018/03/03(土) 14:19:14.14ID:axcuG9mm
間違えた
ByVal As Object または ByRef As Variant
265デフォルトの名無しさん
垢版 |
2018/03/04(日) 00:55:22.93ID:DAVLACwj
それのどこが醍醐味なの?
2018/03/04(日) 09:54:22.41ID:K2njBMWG
エクセルのマクロちょいちょいと組み立てて自動化させたら

ズルをするな、計算機でちゃんと計算して打ち込め

って怒られた


意味わかんねー
2018/03/04(日) 09:58:17.84ID:3XS25AQI
計算機
2018/03/04(日) 10:02:50.11ID:aHerEJAV
パソコンが登場し始めた前世紀になら居ただろうけど、このご時世だと信じがたいわな
2018/03/04(日) 10:39:41.20ID:/M0AdgD3
その手の輩は

1.そんなもんを自動化したら
 工数がへるから残業する理由が
 なくなるだろ

2.人月商売なのに何で利益減らす行為するん

3.手作り、真心込めて、おもてなし


さて、どれ?
2018/03/04(日) 10:51:00.13ID:6PsP9d9s
単なるバカ
2018/03/04(日) 10:55:35.55ID:m9Z0+hmg
>計算機でちゃんと計算して打ち込め

いや〜、そこまで言うなら計算機なんて信じず算盤で計算しろ
が正しいでしょ w
2018/03/04(日) 11:30:31.21ID:7ZGw1DO5
今の時代でも、碌にパソコン使えないくせに、やたらパソコンで作業したがるおじさん・若手はいるし
ああいう人たちが「下手にパソコン使わせると遅くなる」ってイメージを植え付けているのかもしれない

あとマクロ組む工程までいれると、さして時間短縮になっていない人とか
273デフォルトの名無しさん
垢版 |
2018/03/04(日) 12:45:40.43ID:nY2/C6yI
自己満なんやからええやんけ
2018/03/04(日) 14:52:14.27ID:6GOtxg/5
内製にせよ外注するにせよ他人にマクロ作ってもらうとなると時間も経費もかかるし、改修も容易じゃないからな
多少時間かかってもマクロを自分で組めた方が楽なのは間違いないけどね
管理職のくせにマクロの効用を理解できないような奴が、マクロ実装にかかる時間だけを見て手間がかかるからやめろとか言ってくることが結構あるからな
275デフォルトの名無しさん
垢版 |
2018/03/04(日) 15:51:22.29ID:DAVLACwj
結構あるってことはみんなお前のマクロにはもう懲り懲りなんじゃないの?
2018/03/04(日) 15:59:46.94ID:ewEnZjbB
エクセルマクロだと正しいか間違ってるかの判断が(上司にとって)出来ない
上司が使えないプログラミング言語は禁止ねっていうのと同じ種類の問題だと思うよ
2018/03/04(日) 17:55:29.98ID:ibRKmML9
マクロは自分用だとすごく便利
他人が作りっぱなしにしたマクロをだましだまし使うのは地獄
2018/03/04(日) 18:24:28.65ID:jmE3cBn5
エラーハンドリング全然されず
Sheet の初期化(単なるクリア)も
人間がやらないとダメな仕様
のマクロに機能拡張しろってのが
あったけどとりあえず5分で
チンカスであることを強調した上でC#で作り直した思い出
279デフォルトの名無しさん
垢版 |
2018/03/04(日) 19:26:15.30
自分だけでこっそり使うんならいざしらず、
他人に使ってもらいたいんなら
使ってもらえるような作り方&ドキュメント整備しろってことだな
2018/03/04(日) 20:05:19.79ID:IczeIIEA
エクセルは説明書ページを簡単に添付できる(シート追加するだけ)のがいい
EXE形式だとreadme.txtやHELPなんて読んでもらえないしな
まぁ、エクセルで説明ページがあってもよまないやつがおおいから結局コメント機能使いまくりだったり
画面上に説明書いちゃうけど
2018/03/04(日) 20:22:52.23ID:DWVE2Vb5
もっぱらpowershellやvbscriptで書いてる
元のワークブック汚さずに済むし
2018/03/04(日) 22:51:58.52ID:a3KsBQsp
>>281
ちなみにどう使い分けしてる?
powershell 使い始めたんだけど思うような動作しなくて、結局vbsでいいやってなっちゃう。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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