ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part54
https://mevius.5ch.net/test/read.cgi/tech/1527334657/
探検
Excel VBA 質問スレ Part55
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/07/22(日) 14:13:18.78ID:/fuF+goF2018/07/22(日) 14:19:08.78ID:F/x1cwuJ
>>1
すれ立て乙
そして前スレ976のリストビューがずれる現象は
splitしてる結果を比較してみろとエスパー
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
以下、知ったかぶりがVBAにマウントをとる長文と
VBA老害が見当外れのレスをする長文をお楽しみください
すれ立て乙
そして前スレ976のリストビューがずれる現象は
splitしてる結果を比較してみろとエスパー
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
以下、知ったかぶりがVBAにマウントをとる長文と
VBA老害が見当外れのレスをする長文をお楽しみください
2018/07/22(日) 14:22:10.86ID:8ZEdBsEN
4デフォルトの名無しさん
2018/07/22(日) 16:10:37.90ID:/S62SzuU >>2
その解説はマクラーにやらせるわ
その解説はマクラーにやらせるわ
2018/07/23(月) 18:46:22.51ID:drz7RaL2
クラスモジュールの正しい使い方わからん
コレクションとかディクショナリとかそれらにぶっこむ変数定義して関数かましてMEをぶっこんで行くのって使い方として正しいん?
コレクションは標準側にもったり別のクラスに持つべき?
コレクションとかディクショナリとかそれらにぶっこむ変数定義して関数かましてMEをぶっこんで行くのって使い方として正しいん?
コレクションは標準側にもったり別のクラスに持つべき?
6デフォルトの名無しさん
2018/07/23(月) 19:21:59.18ID:Q2zG7cPg7わ
2018/07/23(月) 20:09:48.91ID:wdqn61b0 別に使わなくても良いよ。
コンストラクタ引数が使えないし、オーバーロードないしで読みづらくなるだけ。
コンストラクタ引数が使えないし、オーバーロードないしで読みづらくなるだけ。
2018/07/23(月) 22:37:38.24ID:AQkTIfCC
oopになりきれてないんだよね
正しいかどうかは状況によるけど俺は何度も繰り返す処理を自作クラスにしておく程度かな
vbaの文字列操作は遅いから自前でjavaのstringbuilderみたいなのつくったりとか
正しいかどうかは状況によるけど俺は何度も繰り返す処理を自作クラスにしておく程度かな
vbaの文字列操作は遅いから自前でjavaのstringbuilderみたいなのつくったりとか
9デフォルトの名無しさん
2018/07/24(火) 06:54:57.86ID:KA6Loe2t マクラーがPSスレで大暴れしたけど反応薄くてワロタwww
2018/07/25(水) 12:44:56.02ID:xnPg1Ikh
たしかにYahoo知恵遅れのPGカテ見てると
なぜそれをVBAでやろうとする?て質問だらけでウンザリするな
なぜそれをVBAでやろうとする?て質問だらけでウンザリするな
2018/07/25(水) 13:42:04.43ID:ELoTVjgZ
VisualStudioとか他の開発環境はダウンロードもインスコも面倒だで
慣れてる人から見れば簡単だろうけど、未経験者には敷居がかなり高い
慣れてる人から見れば簡単だろうけど、未経験者には敷居がかなり高い
2018/07/25(水) 14:49:05.99ID:xnPg1Ikh
テキストファイルのコピー/マージ/分割、Webスクレイピングもどき
に貧弱で重いコーディングしかできないVBAですか?という…
せめてPowerShellもバッチも使えよという
に貧弱で重いコーディングしかできないVBAですか?という…
せめてPowerShellもバッチも使えよという
2018/07/25(水) 15:28:26.94ID:EptEn42e
>>12
死ねや
死ねや
2018/07/25(水) 23:29:59.75ID:GlwT5bgj
意識してスクレイピングという言葉を使っていないんだろうけど、Web操作なら分かるがスクレイピングにPowerShellは向かない。
取ってきたデータをどうするんだよ。
取ってきて終わりで、それをExcelの絡まない他のシステムに渡すだけというなら分かるけどな。
でもそれだったらそもそもExcel関係ないから俺でもそうするかも。
でもその場合でもPowerShellじゃなくて別の言語にするかも知れない。
多分VB.NetかC#とかの方が有力だな。
PowerShellからExcel起動してデータを表示するようなの作ってきたらセンスが無いの一言で終わりだね。
それにユーザーの使い勝手より自分のコードの書きやすさを優先するような奴は使えない。
取ってきたデータをどうするんだよ。
取ってきて終わりで、それをExcelの絡まない他のシステムに渡すだけというなら分かるけどな。
でもそれだったらそもそもExcel関係ないから俺でもそうするかも。
でもその場合でもPowerShellじゃなくて別の言語にするかも知れない。
多分VB.NetかC#とかの方が有力だな。
PowerShellからExcel起動してデータを表示するようなの作ってきたらセンスが無いの一言で終わりだね。
それにユーザーの使い勝手より自分のコードの書きやすさを優先するような奴は使えない。
2018/07/25(水) 23:35:58.97ID:GlwT5bgj
一緒に働いてたら、同じ動作するVBAのコードを提示して俺のが採用されるだろうな。
何でPS1とxlsxの2つのファイルを扱わなきゃならんと言われて。
何でPS1とxlsxの2つのファイルを扱わなきゃならんと言われて。
16デフォルトの名無しさん
2018/07/25(水) 23:41:43.01ID:UzfdtR0J もうおまえら好きなの使えよwwwNGワード登録めんどくせーんだよ
ただここはExcel VBAスレだ
ただここはExcel VBAスレだ
2018/07/26(木) 00:36:25.38ID:9WKx7EUj
ろくなパーサーもない、正規表現すら覚束ないVBAでスクレイピングとかマゾかよ
PowerShell以上に向いないのに
データ取り込んでVBA有利な作業したいって条件でも、
Excelからスクレイピングツール(psでもrbでもcsでもなんでもいい)呼び出すのが正解だろ
使い分けというの言葉を知らんのか
ほんとマクラーは何でもかんでもVBAだけでやろうとするのが好きだな
もしかしてそれしか出来ないのか?
PowerShell以上に向いないのに
データ取り込んでVBA有利な作業したいって条件でも、
Excelからスクレイピングツール(psでもrbでもcsでもなんでもいい)呼び出すのが正解だろ
使い分けというの言葉を知らんのか
ほんとマクラーは何でもかんでもVBAだけでやろうとするのが好きだな
もしかしてそれしか出来ないのか?
2018/07/26(木) 00:44:22.92ID:9WKx7EUj
標準入力すら素直に受け取れないVBAじゃ他のツール呼び出すの難しかったね
ごめんね俺が間違ってた
全部VBAでやるのが正解だよ
それしかできないもん
ごめんね俺が間違ってた
全部VBAでやるのが正解だよ
それしかできないもん
2018/07/26(木) 01:05:48.00ID:LoTOwKr6
俺マクリスト
2018/07/26(木) 01:06:28.33ID:UMEAXP+A
お先マックラー
21デフォルトの名無しさん
2018/07/26(木) 04:09:18.23ID:i54gzLVo 再び降臨 パワーシェルキチガイ
2018/07/26(木) 08:14:35.04ID:OM9s1u3H
2018/07/26(木) 12:22:39.07ID:ghkF5wqN
powershellは起動するためにもう一工程要る
24デフォルトの名無しさん
2018/07/26(木) 14:34:42.45ID:dRpGxBDU PSなんて使う必要ないだろ
PSこそ中途半端な機能だわ
こんなの使うくらいならVSとかのIDEで良いよね
PSこそ中途半端な機能だわ
こんなの使うくらいならVSとかのIDEで良いよね
2018/07/26(木) 14:36:40.80ID:2gS9pFwI
一般的な環境ならVSぐらい入ってるしな
2018/07/26(木) 20:38:34.08ID:eYfujGzi
vbaだと云々かんぬんはまぁ分からんでもないけどあーするといいこうしろよとか無くps勧めてくるのはありえんわ
知識そこで止まってる化石かなんかかよ
知識そこで止まってる化石かなんかかよ
2018/07/26(木) 23:24:39.34ID:8XjexWHE
使いにくい言語を使い本来不要な問題を作り出す
その問題を工夫して回避することが大事なんだ
便利なツールを手軽に作りたいだけの軟弱者は別の言語を使えばいい
その問題を工夫して回避することが大事なんだ
便利なツールを手軽に作りたいだけの軟弱者は別の言語を使えばいい
2018/07/27(金) 00:34:59.37ID:3FMr3f7+
VBAを否定するつもりはないが固執する理由もない
どの言語も向き不向きはあるしExcel周りはやっぱVBAが一番手軽で楽なんだよ
ただ行番号くらいはデフォルトで設定設けろ
どの言語も向き不向きはあるしExcel周りはやっぱVBAが一番手軽で楽なんだよ
ただ行番号くらいはデフォルトで設定設けろ
29デフォルトの名無しさん
2018/07/27(金) 00:37:19.63ID:Npi7GBC0 VBAはWindow10になってさらにクソ化した
2018/07/27(金) 00:40:17.66ID:mbQIXxf8
VBA質問スレなんだからVBAに固執してくれよ
逆に固執したくないならこのスレに固執するなよ
てかなんでVBA質問スレで最適言語談義が延々続いてるのかさっぱりわからない
逆に固執したくないならこのスレに固執するなよ
てかなんでVBA質問スレで最適言語談義が延々続いてるのかさっぱりわからない
2018/07/27(金) 00:50:20.39ID:zTP90E1i
それがマウンター
32デフォルトの名無しさん
2018/07/27(金) 02:38:29.13ID:Aw8biuWY Colloctionに入ってる要素をランダムに並べ替えたいんですが
どういうコード書けばよいですか?
どういうコード書けばよいですか?
33デフォルトの名無しさん
2018/07/27(金) 06:08:47.10ID:zsHsTZpP >>32
やりたいのはこういうこと?
Key1 → Value1
Key2 → Value2
Key3 → Value3
↓
Key1 → Value3
Key2 → Value1
Key3 → Value2
やりたいのはこういうこと?
Key1 → Value1
Key2 → Value2
Key3 → Value3
↓
Key1 → Value3
Key2 → Value1
Key3 → Value2
2018/07/27(金) 06:20:20.47ID:Z7cB5M3n
35デフォルトの名無しさん
2018/07/27(金) 07:46:13.68ID:Aw8biuWY2018/07/27(金) 07:53:09.32ID:R37VLMlI
collectionは順番って概念がないからあまり意味ないけど。。
目的次第だけど一度配列にぶっ込んで
インデックス乱数で作ってその順でcollection作り直したら?
目的次第だけど一度配列にぶっ込んで
インデックス乱数で作ってその順でcollection作り直したら?
2018/07/27(金) 08:03:27.23ID:7rMzYIsO
inputboxにdefaultを設定すると選択状態になりますが、
これを選択しない状態にすることは可能でしょうか?
これを選択しない状態にすることは可能でしょうか?
38わ
2018/07/27(金) 08:20:43.06ID:VN9LlfpU >>37
VBAにはinputboxは無いし、text boxにはdefaultプロパティもないんだが、一体なんの話だ?
VBAにはinputboxは無いし、text boxにはdefaultプロパティもないんだが、一体なんの話だ?
2018/07/27(金) 08:21:57.58ID:hpcoy/E6
>>34
いや、あのね...
与えられた環境でどうするかって話で、そんなの当たり前だろ。
VBAも同時に使えるなら消えないだろうし、pythonに置き換わってVBAが使えないならpython覚えるだけだろ。
いや、あのね...
与えられた環境でどうするかって話で、そんなの当たり前だろ。
VBAも同時に使えるなら消えないだろうし、pythonに置き換わってVBAが使えないならpython覚えるだけだろ。
2018/07/27(金) 08:24:28.31ID:hpcoy/E6
>>35
もう1個Collection作ってランダムに入れれば良いんじゃね?
もう1個Collection作ってランダムに入れれば良いんじゃね?
41デフォルトの名無しさん
2018/07/27(金) 08:50:15.62ID:WxuEvi1L VBAを.net対応にすれば良いのに
42デフォルトの名無しさん
2018/07/27(金) 09:41:22.77ID:7Lss2z2K43デフォルトの名無しさん
2018/07/27(金) 09:43:45.36ID:7Lss2z2K44デフォルトの名無しさん
2018/07/27(金) 12:10:40.85ID:Aw8biuWY >>40
なるほど。
テストでこういうコードを「アホレ スイスイスーダララッタ スラスラスイスイスイ」と一瞬で作ったら一発で成功した。
あらためてオレは頭がいいな。
------------------------------
Sub test()
Dim i As Integer
Dim r As Integer
Dim c1 As Collection
Dim c2 As Collection
Dim c As Class1
Set c1 = New Collection
Set c2 = New Collection
For i = 1 To 100
Set c = New Class1
c.i = i
c1.Add c
Next i
For i = 1 To 100
r = Int(Rnd * (100 - i + 1)) + 1
c2.Add c1(r)
c1.Remove r
Next i
For i = 1 To 100
Debug.Print c2(i).i
Next i
End Sub
------------------------------
Class1
Public i As Integer
------------------------------
なるほど。
テストでこういうコードを「アホレ スイスイスーダララッタ スラスラスイスイスイ」と一瞬で作ったら一発で成功した。
あらためてオレは頭がいいな。
------------------------------
Sub test()
Dim i As Integer
Dim r As Integer
Dim c1 As Collection
Dim c2 As Collection
Dim c As Class1
Set c1 = New Collection
Set c2 = New Collection
For i = 1 To 100
Set c = New Class1
c.i = i
c1.Add c
Next i
For i = 1 To 100
r = Int(Rnd * (100 - i + 1)) + 1
c2.Add c1(r)
c1.Remove r
Next i
For i = 1 To 100
Debug.Print c2(i).i
Next i
End Sub
------------------------------
Class1
Public i As Integer
------------------------------
2018/07/27(金) 12:24:17.95ID:9o30Opw+
Vbaってコレクションのランダムソートごときにすごい行数を使うんだなあ驚いた
2018/07/27(金) 13:22:27.47ID:W1pWGgrd
1、2、3、たくさん、すごい、って数える部族の人コンニチワ
2018/07/27(金) 14:10:45.72ID:/pOg/k3/
VBAのIDEには行数が書いてないから致し方ない
2018/07/27(金) 17:04:08.64ID:ferZ4IGy
VBAもBASICの一種だから行番号は付けられるんだけどね
Sub Foo()
10 Dim i As Integer
20 Debug.Print i
30 i = i + 1: GoTo 20
40 End Sub
Sub Foo()
10 Dim i As Integer
20 Debug.Print i
30 i = i + 1: GoTo 20
40 End Sub
2018/07/27(金) 20:35:05.00ID:7rMzYIsO
>>37
inputbox関数のことです
引数defaultに文字を入力した時、選択されないようにしたいのです
Sub foo()
bar = InputBox("", "", "選択されてしまう")
baz = Application.InputBox("", "", "選択されてしまう")
End Sub
inputbox関数のことです
引数defaultに文字を入力した時、選択されないようにしたいのです
Sub foo()
bar = InputBox("", "", "選択されてしまう")
baz = Application.InputBox("", "", "選択されてしまう")
End Sub
2018/07/27(金) 22:41:24.03ID:R37VLMlI
選択されてしまうって、文字が?
inputboxの仕様だから難しいね
vbsだけど
https://stackoverflow.com/questions/28989351/vbscript-inputbox-unselect-the-text
inputboxの仕様だから難しいね
vbsだけど
https://stackoverflow.com/questions/28989351/vbscript-inputbox-unselect-the-text
2018/07/27(金) 23:09:03.86ID:7rMzYIsO
2018/07/28(土) 00:48:56.31ID:kTSYe+MH
おれはテキストボックスにフォーカスが当たったらテキストが選択されてない方が嫌だけどな
ダイアログボックスのUIに対するガイドラインみたいなのなかったかな
ダイアログボックスのUIに対するガイドラインみたいなのなかったかな
2018/07/28(土) 01:05:32.09ID:YviSsm89
おまえがどうかなんて聞いてない
2018/07/28(土) 01:21:56.22ID:kTSYe+MH
また偏った知識で変なUIがVBによって作られてしまうのかと思うと忍びなくてな
2018/07/28(土) 05:02:40.84ID:DudWgeWo
>>48
Integerオーバーフローまで無限ループw
Integerオーバーフローまで無限ループw
2018/07/28(土) 06:27:05.92ID:Q0sE5Usk
16bitだからすぐにオーバーフローするけどね
2018/07/28(土) 07:31:07.15ID:rUA3L/4N
クラスインスタンスをJSONにシリアライズしたいのですがどうすればいいでしょうか
クラスの種類が1000種類ぐらいあるので個別に作ると工数が足りません
クラスの種類が1000種類ぐらいあるので個別に作ると工数が足りません
2018/07/28(土) 07:32:26.75ID:LmAaizbn
それVBAでやるの??
2018/07/28(土) 07:44:25.29ID:rUA3L/4N
2018/07/28(土) 07:51:40.54ID:Q0sE5Usk
VBAでクラスを1,000種類?
バカなのかネタなのかはっきりしてくれ w
バカなのかネタなのかはっきりしてくれ w
2018/07/28(土) 07:57:28.10ID:rUA3L/4N
>>60
要件を満たすには必要なのです
要件を満たすには必要なのです
62デフォルトの名無しさん
2018/07/28(土) 08:35:55.74ID:RecypDDO ならバカ決定
2018/07/28(土) 08:37:47.02ID:Q0sE5Usk
ならお前の工数見積もりのミスだな
おとなしく謝って人員投入してもらえ
おとなしく謝って人員投入してもらえ
2018/07/28(土) 09:15:35.74ID:rUA3L/4N
そこをなんとか
バカは承知なのですが他の選択肢は禁止されているんです
工夫でどうにかなりませんかね?
バカは承知なのですが他の選択肢は禁止されているんです
工夫でどうにかなりませんかね?
65デフォルトの名無しさん
2018/07/28(土) 09:59:39.84ID:mUQBcLm1 出来ませんって言えば?
実際出来ないんだし
正直に言えば済むだろ
実際出来ないんだし
正直に言えば済むだろ
2018/07/28(土) 10:13:43.19ID:rUA3L/4N
こんな簡単なことがVBAではできないのでしょうか?
2018/07/28(土) 10:15:03.35ID:LmAaizbn
出来る出来ないじゃなく
出来るけど工数がかかるだけだろ…馬鹿か?
出来るけど工数がかかるだけだろ…馬鹿か?
2018/07/28(土) 10:21:59.57ID:rUA3L/4N
>>67
もしできるなら工数はほとんどかかりませんよ
できないから工数がかかって大変なのでなんとか工夫してできませんか?という話をしてます
人にバカという前に自分の理解力の程度を自覚したほうが良いのでは?
もしできるなら工数はほとんどかかりませんよ
できないから工数がかかって大変なのでなんとか工夫してできませんか?という話をしてます
人にバカという前に自分の理解力の程度を自覚したほうが良いのでは?
2018/07/28(土) 10:30:26.33ID:fRhkCVmt
apiでメッセ送れば未選択状態に出来なかったかな?
2018/07/28(土) 10:45:40.00ID:LmAaizbn
クラス定義はテキストだし、JSONもテキストだし、変換しようと思えばできるじゃない
まさかそこの手法レベルで悩んでたの?
クラス定義が1000種類もあり、変換定義を書く工数が足りないって話だとばかり思っていたよ…
まさかそこの手法レベルで悩んでたの?
クラス定義が1000種類もあり、変換定義を書く工数が足りないって話だとばかり思っていたよ…
2018/07/28(土) 10:48:20.08ID:a+XCE/dC
何の禅問答だよ
2018/07/28(土) 11:18:14.54ID:bzfoDHBV
クラスのソースからコンバータ自動生成するプログラム作れば解決
つかクラス1000個とか、VBAに向いてないのを差し引いても、どう考えても設計間違ってるわ
つかクラス1000個とか、VBAに向いてないのを差し引いても、どう考えても設計間違ってるわ
2018/07/28(土) 12:09:18.04ID:IX5bbTr/
VBAではJSONシリアライズのようなちょっとした処理のためにVBAパーサーを書かなければならないんですか?
他の言語だと基本ライブラリを使って1行で出来る処理なのでにわかには信じられません
経験上、コード生成は資源管理や後々のメンテナンスでトラブルが発生することが多いのでできれば避けたいです
VBAは工夫しだいで何でも出来る言語だと思います
もっと工夫して実行時に解決することはできませんかね?
>>72
小さいオフィスの事務作業ではどうか知りませんが1000クラスは業務システムでは少ない方ですよ
1つのシステムでプロジェクト(機能)が100以上、それぞれのプロジェクトに画面がいくつか、クラスが10〜、なんてことは別に珍しくもないです
他の言語だと基本ライブラリを使って1行で出来る処理なのでにわかには信じられません
経験上、コード生成は資源管理や後々のメンテナンスでトラブルが発生することが多いのでできれば避けたいです
VBAは工夫しだいで何でも出来る言語だと思います
もっと工夫して実行時に解決することはできませんかね?
>>72
小さいオフィスの事務作業ではどうか知りませんが1000クラスは業務システムでは少ない方ですよ
1つのシステムでプロジェクト(機能)が100以上、それぞれのプロジェクトに画面がいくつか、クラスが10〜、なんてことは別に珍しくもないです
2018/07/28(土) 12:11:55.65ID:LmAaizbn
しゃあないやん、VBAてそうなんだもん
2018/07/28(土) 12:12:24.12ID:ZzrKjuqy
見積甘かったのを言語のせいにされても
76デフォルトの名無しさん
2018/07/28(土) 12:17:55.21ID:IX5bbTr/ VBAはRuby、Python、.NETと比較されるほどの優れた高級言語なので
他の言語で当たり前のようにできることがまさか出来ないとは思いませんでした
こんなことで見積もりを誤ったなんてまるで交通事故にでもあったような気分です
他の言語で当たり前のようにできることがまさか出来ないとは思いませんでした
こんなことで見積もりを誤ったなんてまるで交通事故にでもあったような気分です
2018/07/28(土) 12:28:41.80ID:V98tNPxX
使った事ないけどリフレクションぐらいあるに決まってんだろwww
それ使えば簡単に実装できるわ
それ使えば簡単に実装できるわ
2018/07/28(土) 12:39:19.60ID:ZzrKjuqy
上司だかお客だかにそう説明すりゃええやん
2018/07/28(土) 12:39:27.77ID:V98tNPxX
オブジェクトブラウザにクラス一覧やメソッド一覧が表示される
という事はメタデータの取得方法が存在するって事だ
詳しい方法はいつもの達人VBAerが教えてくれるだろう
という事はメタデータの取得方法が存在するって事だ
詳しい方法はいつもの達人VBAerが教えてくれるだろう
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- 【正論】玉木雄一郎「高市さんの答弁は米軍が攻撃を受けた場合を前提としており、撤回するのは難しい」特定野党を完全論破 [519511584]
- タイで中国人観光客が激減でもタイ人は大喜び、タイの人はネトウヨだった [605029151]
- フランス「G7に習近平主席を呼びたい」ドイツ「良い考えだ」 高市さん...? [237216734]
- 麻生太郎氏、高市政権と距離を置きはじめる(´・ω・`) [399259198]
- 自閉症が「んなっしょい」と連呼するお🏡
- 【悲報】中国営業に熱心な日本人タレントたち、中国のイベントが続々と中止に… まだ予定中のアイドルとか歌手とかたくさんいるけど [452836546]
