>>1
すれ立て乙
そして前スレ976のリストビューがずれる現象は
splitしてる結果を比較してみろとエスパー
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
以下、知ったかぶりがVBAにマウントをとる長文と
VBA老害が見当外れのレスをする長文をお楽しみください クラスモジュールの正しい使い方わからん
コレクションとかディクショナリとかそれらにぶっこむ変数定義して関数かましてMEをぶっこんで行くのって使い方として正しいん?
コレクションは標準側にもったり別のクラスに持つべき?
>>5
そんな事が知りたい?
オッケー
じゃあそれもマクラーに解説させるわ 別に使わなくても良いよ。
コンストラクタ引数が使えないし、オーバーロードないしで読みづらくなるだけ。
oopになりきれてないんだよね
正しいかどうかは状況によるけど俺は何度も繰り返す処理を自作クラスにしておく程度かな
vbaの文字列操作は遅いから自前でjavaのstringbuilderみたいなのつくったりとか
マクラーがPSスレで大暴れしたけど反応薄くてワロタwww
たしかにYahoo知恵遅れのPGカテ見てると
なぜそれをVBAでやろうとする?て質問だらけでウンザリするな
VisualStudioとか他の開発環境はダウンロードもインスコも面倒だで
慣れてる人から見れば簡単だろうけど、未経験者には敷居がかなり高い
テキストファイルのコピー/マージ/分割、Webスクレイピングもどき
に貧弱で重いコーディングしかできないVBAですか?という…
せめてPowerShellもバッチも使えよという
意識してスクレイピングという言葉を使っていないんだろうけど、Web操作なら分かるがスクレイピングにPowerShellは向かない。
取ってきたデータをどうするんだよ。
取ってきて終わりで、それをExcelの絡まない他のシステムに渡すだけというなら分かるけどな。
でもそれだったらそもそもExcel関係ないから俺でもそうするかも。
でもその場合でもPowerShellじゃなくて別の言語にするかも知れない。
多分VB.NetかC#とかの方が有力だな。
PowerShellからExcel起動してデータを表示するようなの作ってきたらセンスが無いの一言で終わりだね。
それにユーザーの使い勝手より自分のコードの書きやすさを優先するような奴は使えない。
一緒に働いてたら、同じ動作するVBAのコードを提示して俺のが採用されるだろうな。
何でPS1とxlsxの2つのファイルを扱わなきゃならんと言われて。
もうおまえら好きなの使えよwwwNGワード登録めんどくせーんだよ
ただここはExcel VBAスレだ
ろくなパーサーもない、正規表現すら覚束ないVBAでスクレイピングとかマゾかよ
PowerShell以上に向いないのに
データ取り込んでVBA有利な作業したいって条件でも、
Excelからスクレイピングツール(psでもrbでもcsでもなんでもいい)呼び出すのが正解だろ
使い分けというの言葉を知らんのか
ほんとマクラーは何でもかんでもVBAだけでやろうとするのが好きだな
もしかしてそれしか出来ないのか?
標準入力すら素直に受け取れないVBAじゃ他のツール呼び出すの難しかったね
ごめんね俺が間違ってた
全部VBAでやるのが正解だよ
それしかできないもん
>>17
>>18
それでもお前のコードは採用されない。
2ファイルになった時点で埋めようが無い差だ。
VBAで出来ないことなら別だがな。
VBAで標準入出力使うことはあまり無いなあ。
それで困ったことも無い。
そういう環境だと思うが。 powershellは起動するためにもう一工程要る
PSなんて使う必要ないだろ
PSこそ中途半端な機能だわ
こんなの使うくらいならVSとかのIDEで良いよね
vbaだと云々かんぬんはまぁ分からんでもないけどあーするといいこうしろよとか無くps勧めてくるのはありえんわ
知識そこで止まってる化石かなんかかよ
使いにくい言語を使い本来不要な問題を作り出す
その問題を工夫して回避することが大事なんだ
便利なツールを手軽に作りたいだけの軟弱者は別の言語を使えばいい
VBAを否定するつもりはないが固執する理由もない
どの言語も向き不向きはあるしExcel周りはやっぱVBAが一番手軽で楽なんだよ
ただ行番号くらいはデフォルトで設定設けろ
VBA質問スレなんだからVBAに固執してくれよ
逆に固執したくないならこのスレに固執するなよ
てかなんでVBA質問スレで最適言語談義が延々続いてるのかさっぱりわからない
Colloctionに入ってる要素をランダムに並べ替えたいんですが
どういうコード書けばよいですか?
>>32
やりたいのはこういうこと?
Key1 → Value1
Key2 → Value2
Key3 → Value3
↓
Key1 → Value3
Key2 → Value1
Key3 → Value2 >>28
これってVBAの言語的な優位性というかランタイムがエクセルに乗っかってるからってだけだよね
Pythonが乗っかったら急速に消え去りそう
VBAでおまんま食ってる人達は怯えてるだろうね >>33
いえこういうことです
>>32
やりたいのはこういうこと?
Key1 → Value1
Key2 → Value2
Key3 → Value3
↓
Key3→ Value3
Key1 → Value1
Key2 → Value2 collectionは順番って概念がないからあまり意味ないけど。。
目的次第だけど一度配列にぶっ込んで
インデックス乱数で作ってその順でcollection作り直したら?
inputboxにdefaultを設定すると選択状態になりますが、
これを選択しない状態にすることは可能でしょうか?
>>37
VBAにはinputboxは無いし、text boxにはdefaultプロパティもないんだが、一体なんの話だ? >>34
いや、あのね...
与えられた環境でどうするかって話で、そんなの当たり前だろ。
VBAも同時に使えるなら消えないだろうし、pythonに置き換わってVBAが使えないならpython覚えるだけだろ。 >>35
もう1個Collection作ってランダムに入れれば良いんじゃね? >>34
VBAでおまんま食ってるPython未経験だけど
Python移行を熱烈に希望します >>41
せめてそれくらいはしてほしいよな
理想はC#AだがVB.netAでもいいわ >>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
------------------------------ Vbaってコレクションのランダムソートごときにすごい行数を使うんだなあ驚いた
1、2、3、たくさん、すごい、って数える部族の人コンニチワ
VBAもBASICの一種だから行番号は付けられるんだけどね
Sub Foo()
10 Dim i As Integer
20 Debug.Print i
30 i = i + 1: GoTo 20
40 End Sub
>>37
inputbox関数のことです
引数defaultに文字を入力した時、選択されないようにしたいのです
Sub foo()
bar = InputBox("", "", "選択されてしまう")
baz = Application.InputBox("", "", "選択されてしまう")
End Sub >>50
そうです、文字が選択されてしまいます
フォームでも作るしかないみたいですね
ただ、右キーで選択解除できるのは大きな収穫でした(endキー使っていました)
ありがとうございました おれはテキストボックスにフォーカスが当たったらテキストが選択されてない方が嫌だけどな
ダイアログボックスのUIに対するガイドラインみたいなのなかったかな
また偏った知識で変なUIがVBによって作られてしまうのかと思うと忍びなくてな
>>48
Integerオーバーフローまで無限ループw クラスインスタンスをJSONにシリアライズしたいのですがどうすればいいでしょうか
クラスの種類が1000種類ぐらいあるので個別に作ると工数が足りません
>>58
そうです
エクセルVBAの使用以外の開発は全て禁止されています VBAでクラスを1,000種類?
バカなのかネタなのかはっきりしてくれ w
ならお前の工数見積もりのミスだな
おとなしく謝って人員投入してもらえ
そこをなんとか
バカは承知なのですが他の選択肢は禁止されているんです
工夫でどうにかなりませんかね?
出来ませんって言えば?
実際出来ないんだし
正直に言えば済むだろ
こんな簡単なことがVBAではできないのでしょうか?
出来る出来ないじゃなく
出来るけど工数がかかるだけだろ…馬鹿か?
>>67
もしできるなら工数はほとんどかかりませんよ
できないから工数がかかって大変なのでなんとか工夫してできませんか?という話をしてます
人にバカという前に自分の理解力の程度を自覚したほうが良いのでは? apiでメッセ送れば未選択状態に出来なかったかな?
クラス定義はテキストだし、JSONもテキストだし、変換しようと思えばできるじゃない
まさかそこの手法レベルで悩んでたの?
クラス定義が1000種類もあり、変換定義を書く工数が足りないって話だとばかり思っていたよ…
クラスのソースからコンバータ自動生成するプログラム作れば解決
つかクラス1000個とか、VBAに向いてないのを差し引いても、どう考えても設計間違ってるわ
VBAではJSONシリアライズのようなちょっとした処理のためにVBAパーサーを書かなければならないんですか?
他の言語だと基本ライブラリを使って1行で出来る処理なのでにわかには信じられません
経験上、コード生成は資源管理や後々のメンテナンスでトラブルが発生することが多いのでできれば避けたいです
VBAは工夫しだいで何でも出来る言語だと思います
もっと工夫して実行時に解決することはできませんかね?
>>72
小さいオフィスの事務作業ではどうか知りませんが1000クラスは業務システムでは少ない方ですよ
1つのシステムでプロジェクト(機能)が100以上、それぞれのプロジェクトに画面がいくつか、クラスが10〜、なんてことは別に珍しくもないです VBAはRuby、Python、.NETと比較されるほどの優れた高級言語なので
他の言語で当たり前のようにできることがまさか出来ないとは思いませんでした
こんなことで見積もりを誤ったなんてまるで交通事故にでもあったような気分です
使った事ないけどリフレクションぐらいあるに決まってんだろwww
それ使えば簡単に実装できるわ
オブジェクトブラウザにクラス一覧やメソッド一覧が表示される
という事はメタデータの取得方法が存在するって事だ
詳しい方法はいつもの達人VBAerが教えてくれるだろう
>>76
>他の言語で当たり前のようにできることがまさか出来ないとは思いませんでした
>こんなことで見積もりを誤ったなんてまるで交通事故にでもあったような気分です
ただの無能じゃん。部下がこんなしょぼいミスしたらブチ切れるわ > VBAはRuby、Python、.NETと比較されるほどの優れた高級言語なので
その認識からしておかしい、ネタだろ?w
>>66
実際、貴方が出来ないんだから僕には無理でした
って言えば?って事ですよ
カッコ付けて安請け合いするから変な事になる