Excel VBA 質問スレ Part49©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part48
http://mevius.2ch.net/test/read.cgi/tech/1494890685/
※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured >>402
VBAから使えるようになればC++の必要性が減る、と解釈するのが自然だと思うけどな? >>393
速いとか読み易いの前に正しいコードを書きましょう
って話
動けばOkでいいじゃんと言うなら返す言葉はないけど >>401
optionalはわかるよ。
仮に引数指定するとして、どの時点で指定するのかな、って。 >>404
つか、正しくないコードは動かないでしょ。 >>398のは
配列要素数があるかどうか「だけ」判断するというのとOptional引数で
次元を指定させる点がちぐはぐなんだよね。 ま、配列の空判定関数は各自で書くということでこの話題は完結かな。
ちなみに俺は、
Function ArrayEmpty(hoge) As Boolean
On Error Resume Next
If UBound(hoge) - LBound(hoge) < 0 Then ArrayEmpty = True
End Function
って感じ。
空判定関数を書くというだけの話題だったけど、いろいろ勉強になったね。
おつかれさまー。ノシ 3行目は
If UBound(hoge) < LBound(hoge) Then ArrayEmpty = True
のほうが美しいな。 そしたら
ArrayEmpty = UBound(hoge) < LBound(hoge)
でもいける。 >>411
素晴らしい!!
頭が柔らかくて羨ましいよ。 完成した関数テンプレにのこしておいてよ
vbaの良質なコードはすごく希少だし >>406
たまたま動いてるだけのコードも正しいと言い張るの? >>414
つか、いったい何が悔しかったの?
君ほどの実力者が。 >>413
どこに残せばいいの?
完成品はこれでいいかな。
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty, vbNull
IsNone = True
Case vbObject
IsNone = hoge Is Nothing
Case vbString
IsNone = Len(Trim(hoge)) = 0
Case Is >= vbArray
On Error Resume Next
IsNone = UBound(hoge) < LBound(hoge)
End Select
End Function
簡潔で美しいね。みんなの力の結晶だ。 >関数テンプレにのこしておいてよ
どこにあんだよ、そんなの
ここで知った人間で保存しておきたいって奴が保存しておけば良いだろ スレッドのテンプレに残しておいてほしいって事なんじゃないの。
でも残し始めたら際限無くなるし、コピペで済ませずに理論と意図を理解して同じものを一から書けるようになってほしいなぁ。 >>415
えっ?
なにか悔しいことでもあったの? w こんなコードテンプレに残したらますます初心者が初心者を惑わすスレに拍車がかかるなw
本当に仕事でエクセルマクロを必要としてる人には迷惑かけんなよw > 初心者が初心者を惑わすスレ
言い得て妙だww
いいんだよ、それで。
VBA使いはエンジニアじゃないから。 >>422
まだVBA使い≠エンジニアとか言ってるの?
エンジニアでもVBA使いは居るってのに どの言語の質問スレも初心者が初心者を惑わすスレ化してるのが悲しい。
「よくある質問と回答」レベルなら問題ないんだけど、ちょっと突っ込んだ質問になるととたんに雲行きが怪しくなる。
ある程度の実力を身につけたら2chじゃなくてちゃんとしたコミュニティか何かに参加するべきなんだろうけど、
だいたい見つからないし、見つけても2chほど気軽に質問投げられるような場所じゃなかったりするんだよな。 >>426
ネットの情報なんだから裏を取ればいいだけ
今時書いてあるキーワードでググれば調べるのもそんなに苦労しないしな
惑わされるより過疎化してまともな回答が少なくなってる方が問題だわ >>424
エンジニアでもVBA使いは居るけど、
VBA使いになりたいエンジニアはいない。 >>429
これな
いやいやだわ
javascriptのほうが楽しいし >>430
JavaScriptのほうが楽しい理由は? javascriptってvbaの次に底辺やんwww >>433
使ったことある人が多い言語って底辺扱いされやすいよね。
おそらく、C や Java の比じゃないと思うよ。>VBA
でも、Java は使う人が多くなりつつあるから、底辺扱いされるのは時間の問題かもね。 新興の言語って利用者全員が似たような習熟度だから意思疎通が図りやすいし、
どんなにクソみたいなコード書いても判断材料が無くて効率的なコードって言ってもらえるからな。 >>369
欠陥なんじゃなくて、馬鹿ほどvariantを使う法則なだけ 長い間SQL触ってたので、
SelectがVBAにもあったのを完全に忘れていた、という話。 複数の言語を使うとselectとswitchは妙に間違える
俺だけかねー? JavascriptにおけるjQuery的な
VBAのクラスってどっかにないのかな
Set class = New class
class.lastRowAdd(Range("a1"),array)
ってやったら最終行に配列の内容をぶっ込んでくれる
とか
よくある操作をパラメーター渡せばやってくれるような >>444
このコードは妄想クラスメソッドなのでエラーになるけど
もし、いろんな汎用処理を詰め込んだクラスなりを
誰か作ってたら欲しいなーと思いましたとさ、という話 >>445
そうじゃなくて1次元配列が出来上がるとか2次元配列が出来上がるとか
もちょっと具体的に
あと第二引数はなんだ? そこまで引っ張る話題でもなくね?と思うけど確かにどうしたいのかわからんのもあってちょっと聞きたくもあり 科学計算が爆速でできるVBAのフレームワークができれば、VBAの価値は一気に上がる。 データベースな表で
第一引数のセルから下に見ていって一番下に
第二引数の配列をズドンと書き込む
という想定
たしかにそこまで引っ張るネタでもないです >>450
ネタで言ってるなら申し訳ないが、それその通りに書くだけで良くね? >>452
そういう話ではない。
まあでもVBA用の色んな処理の検索はしてきたけど、アドイン化されてるものは全然見かけないなあ。
汎用的な機能を詰め込んだアドインってこれくらい?
http://software.opensquare.net/relaxtools/
>>443の求めるものとは違うんだろうけど。
結局は自作クラスってことになりそう。 >>451
お前の下らん雑談ネタのためにこのスレが有るわけじゃないんだyo あぁarrayは横向きの配列ってことか、なるほど
VBAで汎用ライブラリ作るとしたらどんな名前になるだろう
tyっと作ってみたくもあるな ブログ検索すれば色々出てくるから好きなのを使う。
製品的なやつが欲しいなら知らん 完成した関数テンプレにのこしておいてよ
vbaの良質なコードはすごく希少だしアドインってメンテナンス大変じゃないか?
用途としてはいろんな人に使わせる用だと思うんだけど誰かが使ってる最中に変更できないじゃん
やたらにバージョン上げると某ライブラリみたいな顛末になるし じゃあコピーしたもん編集して誰もいないときに上書きすればいいじゃん >>431
新しい昨日が追加されるところ
まだクソなのはクソだけどvbaは一切進歩せんからなあ >>460
> vbaは一切進歩せんからなあ
エンジニアのための言語じゃないからね。
Dim だの Set だの If Then だの、
うんざりするのはしょうがないとしても、
objFSO
なんていう変数を見た日にゃ、
ぶっ殺したくなるね。 >>463
継承もサポートしてないしね
だから初心者の入口としても不向き
マイクロソフト的にもお荷物だろうな
はよ.net framework対応してほしいわね そもそも継承が必要になるほどの大規模な開発をVBAでやる事自体が間違い定期。 まあ継承より配列周りの強化してほしいかな
わざわざ自分でコレクションもどき作ってるけどめんどいわ 初めてADOっての使ったけど、なんだこりゃ。
MSQueryと違って、列名が出ないじゃん。
いや、ヘッダのON・OFFで無理矢理出せるけど、
そうするとUnionした時に、レコードの途中に列名が出やがる。(列名扱いされないから?)
列名は、出力位置の上に、予め書いとかなきゃいけないの? >>467
コレクションもどきって何?
配列もどきのコレクションとは違う何かかな? フォームを作ってるとき、同種のパーツのオブジェクト配列が簡単に作れたら良いのにって思うわ >>470
For Each x In Userform.Controls
Select Case Typename(x)
Case "Label"
...
End Select
Next
みたいなのじゃなくて? >>471
VBだとフォームパーツの型のオブジェクト変数として配列変数が宣言できる
何かと便利 >>470みたいな需要は確かにありそうだ。
さっそくオレ様ライブラリに取り入れよう。 >>469
コレクションて値の出し入れできなかったりするじゃん?
値の追加、挿入、削除、入れ替え、ソートあたりメソッドにしたクラスだね
型は安全に出来ないけどなかなか便利
objectにも対応させたいけどやや面倒だから手を付けてない >>472
Forで1つずつ取る方法しかなかったわ。
CopyFromRecordsetみたいに一撃弾平なのはないのね。 >>475
コレクションもどきって表現はミスリーディングだな
コレクションの拡張クラスだそれは
アイテムのソートと入れ替えは便利そう >>477
for eachできないからコレクションもどきとした
中身はただの配列だし >>478
コレクションをラップしてるんじゃなくて中身が配列なのか
確かにそれだとコレクションもどきだな >>479
継承できればコレクションからゴニョゴニョした方がいいんだろうけど
どうでも良いけど値の入れ替えのメソッド名をRepracementにしてるんだけどなんかしっくりこないんだよね
なんかいいのないかな >>481
入れ替えで辞書ツール突っ込んだらそれでてきたからしゃーない 配列の話題になってから調べて初めて知ったけど
ArrayListをVBAで使えるんだね
一通りメソッドもそろってるみたいだし、どうかな
実際に使ってみたわけではないけど >>483
便利は便利だけど遅い
三桁四桁の配列なら大差無いだろうけどね
大抵はコレクションで事足りちゃうしね 使い勝手はArrayListのほうが便利そうだね
まぁ確かに自分も使ったことないけど ちゃんとしたやつがあるのかよwww
自作配列にArrayListって変数名付けたわwwww .netライブラリの話で思い出したけどコンストラクタに引数渡せないのクソ不便だよな
渡せるようになれば使えるライブラリも増えそうだが >コンストラクタに引数渡す場面ってある?
シートの名前ぐらいなら返り値の.nameを変えるけど、何とも思わん コンストラクタでしか初期化できない(他の初期化用メソッドを持たない)クラスがあれば困るけど、
そういうものって.Netにあるの? >>491
const
vbaでconstが必要な用途が良くわからんけど >>491
VBA から使うとは思えないけど Exception の Message はコンストラクタでしか設定できないよ
そもそも>>489はそういう話じゃないような気がするけど >>493
.netのクラス使えないのかな?って以前ググったときに
http://officetanaka.net/excel/vba/tips/tips98.htm
が引っかかって
えらい簡単に使えるんだなぁと思ったんだけど
思っただけで使ったことないし
細かいことも知らない…
ていうか、本当にいろいろ便利に使えるなら
ググるだけでバンバン情報引っかかっていいと思うんだけど
ArrayListのことくらいしか出てこんかった >>490
ブックをそのままラップしたクラスとか作りたいときにパス指定するためのメソッドわざわざ実装するのとかクソめんどくさいじゃん
結構引数指定したい場面あるよ
逆になんで引数渡せないのかという >>496
そういうのは諦めた
エクセルに限らず、IEやら何もかもインスタンス作成してから、プロパティを変更している
言語仕様を嘆いても始まらん 話の流れで思い出したけど
これ使ったことある人いる?
マクロをC#で書けますよっていうやつ
http://mokumokucsharp.hateblo.jp/entry/2016/07/13/140602
Visual Studio Codeとかいうのもインストして
サンプルは動くんだけど
インテリセンスがうまく効かんくて使い方がよくわからない それもそうだけどクラスを含むプロジェクトを参照しているモジュールからそのクラスのインスタンスを
直接Newで作れないのにも困ってる。
Create〜系の関数を書いて置き場所に迷う場合が特に。 仮にC#使いだったとしても、VBA覚えるわ。
VBAにある機能をどれくらいカバーしているのか。
99%以下ならイラネ。
ていうか、そもそもどういう仕様だろう。
C#で書いたのを、内部的にVBAに翻訳して標準モジュールに書き込むとかだったら笑う。 よく見たら、
全てのVBAコードを生まれる前に消し去りたいとか、凄いこと書いてる。
何かに憑りつかれてはいませんか。 機能よりも言語仕様で
if()then
とかやっちゃう ■ このスレッドは過去ログ倉庫に格納されています