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 コンストラクタでしか初期化できない(他の初期化用メソッドを持たない)クラスがあれば困るけど、
そういうものって.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
とかやっちゃう 重複した行を削除したいのですが、ググってみると
重複した下の行を削除するプログラムが殆どです。
上の行を消すプログラムはないでしょうか? >>500
なんでこんな馬鹿なのに偉そうにできるんだろう >>506
だって、要は、VBA使いこなせないからC#でとか言ってるわけだろ。
VBAに心の底から辟易って、使う人の能力の問題を、何で言語のせいにしてるのか。 質問です。
Excel2007ですけど、複数のオートシェイプをグループ化せずに同時にカットできますか?
オートシェイプを選択してSelection.Cutメソッドを実行すると、なぜかセルがテカテカするのです。
ShapaRangeオブジェクトにはCutメソッドが無いみたいですし。
とりあえずSendKeys "^x"で対処してるけどなんだかなあ、という状況です。 RangeのUnion、初期値がNothingのときエラーになるのが残念だ Officeが入っていればどのPCでも動く、というVBAの最大の利点を犠牲にしてまでC#で書く意味はないね。
自己満以外の何ものでもない。
幸せになるのは自分だけ。 自分の仕事が楽になるならいいんじゃないか
共有するやつは別 VBAって基本、かならず自動でコンパイルされた上で実行されるんですか?
[デバッグ]-[コンパイル]ってやらずに実行するとえらく遅いんですが。 >>512
コード資産が共有できない(自分の中でも)、というプログラマにあるまじき行為。 >>495
> http://officetanaka.net/excel/vba/tips/tips98.htm
> が引っかかって
> えらい簡単に使えるんだなぁと思ったんだけど
これは知らなかったわ、教えてくれてありがとう
> ていうか、本当にいろいろ便利に使えるなら
> ググるだけでバンバン情報引っかかっていいと思うんだけど
> ArrayListのことくらいしか出てこんかった
ちょっとググったらCOM経由で動くみたいね(CreateObject で作成するんだから当たり前か)
http://qiita.com/mima_ita/items/efcd1a6ea86f09047984 >>498
これ使うぐらいならPowerShell使う >>515
環境の問題なら、自分のなかでは使い続けられるんじゃね? >>518
既存のVBAコードに、C#で書いたプロシージャを呼び出すコードを追加することはできないよね。
VBAで書いたWinのExcelマクロはMacのExcelでも使えるけど、C#で書いたらMacでは使えないよね。 VBAはもう言語仕様をアップデートするつもりはないんだろうけど
せめてIDEくらいはもうちょっと便利にして欲しい
>>516
つまり相互運用の登録がされているライブラリは使えるってことか
でもいちいち自分でdll作ってまでは使わないかなぁ… >>508
コードや実行環境、ファイルサイズなどを見ないと何とも言えない
それから、セルがテカテカするとかいう感覚的な表現はなるべく避けるように >>522
dllを作るってどういう状況で必要になるのかよく分からんよな。
別途用意する必要があるって事は他人に使わせるのに難があるし、
VSTO使えるならVSで他の言語使った方が早い場面が多いだろうし、
自作のdllが必要になるような処理をVBAに求める場面というのが想像出来ない。 「Macだと」とか「プログラマとして」とかちょっとこのスレの想定ユーザーからはかけ離れてるんじゃないか? >>507
いや、vbaがクソ言語なのは避けようのない事実だろ
C♯erがわざわざ新しく覚える時間が無駄というのは分かるよ
オブジェクト指向にドップリしてたら使いにくいことこの上ないと思うし VBAをクソクソ言っている人たちはどういう立場なんだろうな。
クソだと思うなら近づかなければいいのに。
なんか他の言語でもメインで使い始めた途端にクソクソ言いそう。 作ったものを他人と共有しようとすると限界が低い。でも自分一人ツールと割り切れば相当なことができる。
Officeソフトにそれ以上求めてもしょうがないでしょ。 VBAは手軽さを重視してるんだから、高度な機能がないって意見は的外れなんだよ >>529
ん?
アマチュアの人かな?
お仕事ならクソだろうが使わざる得ない状況なんていくらでもあると思うが >>532
VBA言語をクソって言っちゃうくらいなのにVBAでお仕事取っちゃうの?
もう少し仕事は選んだ方がいいんじゃないか。 >>526
うん、そういうこと。
ExcelマクロをC#で書くような人は、このスレの想定ユーザーからはかけ離れてるよね、ってこと。 クソだけどofficeのマクロ言語はこれしかないから仕方なく使うしか無いだろ
プログラム言語としては時代遅れの化石なのはさすがに共通認識だと思ってたわ
現状くそなのもそうだし、これから先進化することも決してないこともクソ
あと、手軽さと高度な機能は別に共存できるでしょ >>536
それは別にかけ離れてはいないだろ
Macだとかプロのプログラマはかけ離れている プログラマとしてって言いだしたのって(オッペケ Sr1b-QbI6)だな
自演までして何がやりたいんだか・・・ >>527
> オブジェクト指向にドップリしてたら使いにくいことこの上ないと思うし
俺は逆だと思うよ
オブジェクト指向をよく知ってたほうが、VBAを使いこなせる
・クラスモジュールを使いこなす
・いわゆる「インタフェース継承」を使いこなす
・WithEventsを使いこなす
大抵の奴は「クラスモジュールっていつ使うんですか」レベルだから >>540
俺の言いたいことを一ミリも汲んでくれてないなw
そりゃオブジェクト指向的なプログラミングを知ってれば非オブジェクト指向言語でも構造的に自然と書くようになる
それとこれとは別の話
機能がないからわざわざ自分で作らにゃいかんから不便だって話をしてる この手の下らんやり取りはこれまでもあったし、これからもウンザリするほど続くんだろうなぁ┐(´д`)┌ヤレヤレ >>539みたいに、自演自演て騒ぐ奴をしばしば見かけるけど、彼は何がしたいの?
つか、そもそもここは自演ができないスレなんだよね?
こういうのはスルーしたほうがよいのでしょうか。 >>541
オブジェクト指向と機能は別の概念だけどな
機能は言語がなんであっても追加出来るだろうし
オブジェクト指向は言語に関する概念だから >>541
オブジェクト指向の一切を封じられてるから使いづらいというのなら、それはそうでもないってことさ
機能が足りないというんなら、先人が作ったライブラリでも探せば?
https://github.com/rubberduck203/VBEX とか >>540
自作クラスってどういう時に使うの?
excelが思いっきりオブジェクトだから、それに対する手続き的な操作しかしないわ >>548
状態を持ったモノを扱いたいときじゃね?
状態を持たないんだったら関数の組み合わせで表現するのは簡単だ。 >>534
言語で仕事選べるとか無職の発送は素晴らしいな w >>549
状態を持つ⇒オブジェクトを使う
対偶は
オブジェクトを使わない⇒状態を持たない
対偶は必ず真とはいえなくない? >>548
ログクラスとか作ってたな
書き込むシートと書き込む行を別々に管理するのは嫌だったから
でも継承もできないしコンストラクタの引数も持てない状況ではあまり使いやすくならないし結局クラスはほとんど使わない
そもそも俺がずっと保守するわけにもいかんから >>547
オブジェクト指向言語は「オブジェクト指向的な設計が可能な言語」の事だから、
言語によってオブジェクト指向が決まるわけではないし、言語に対する概念というと違うと思うなぁ。
>>550
募集要項に何の言語が出来るかとか普通書いてないか?
Javaで募集かけたけどC#での開発がメインですみたいなカオスな職場もあんまりないだろ。 >>544
オブジェクト指向をサポートしてるかって話だよ
なんとなく分かるべ
>>546
ことさ、じゃなくてさ
俺はそういうところがクソだと言ってるの
クソはクソでも使わなきゃいから使うだけで
ライター、チャッカマン、バーナーが他所であるのにマッチでも火をおこせるしこれはこれで良いもんだぞって言ってるようなもん >>552
ログはfunctionだなぁ
コンストラクタ使えないと、わざわざNewしてクラス無いメソッド呼び出してって二度手間じゃね。
functionならいつでもどこでも一行で済む >>551
⇒(ならば)とは言ってないけどな
まあ、オブジェクトを使わない⇒状態を持たせづらい(グローバル変数を使うはめになる)
あくまでVBAでの話だよ >>549
例えば、具体的にどういう時に使うの?
状態って言っても初期値とかExcelから拾ってくるから、それをわざわざclassにほーり込むのもなー >>553
オブジェクト指向言語は
オブジェクト指向設計したものを
そのまま実装し易い言語じゃないかな
言語の概念でもあると思うけどな
オブジェクト指向言語じゃなくても実装できるのは確かだけど
それならVBAでもオブジェクト指向設計を実装できるんじゃないかな >>557
初期値より途中の経緯を記憶しておかないと次の計算ができないものとか?
「ワークシートに書き出す」じゃ再利用性に欠ける >>559
だから具体的にどんなことをするんだよw
ゲームとかはナシでね
ちと思いつかない >>556
グローバル変数を使わなくても状態を表現できるんじゃね?
例えば再帰関数みたいに状態を引数にするとか >>553
> オブジェクト指向言語は「オブジェクト指向的な設計が可能な言語」の事だから
そんなことを言い出したらアセンブリ言語でもオブジェクト指向は可能だよ
そういう極端な話をしたい訳じゃないんだと思うよ
> >>550
> 募集要項に何の言語が出来るかとか普通書いてないか?
ああ、そういう働き方してるひとなのね
もっとでっかい案件レベルのつもりだったから話が噛み合わないのも無理ないな >>555
書き込み行はどうやって覚えてるの?
複数のログを扱うとか面倒じゃね? >>558
> それならVBAでもオブジェクト指向設計を実装できるんじゃないかな
関数ポインタがないから継承とか無理じゃね? 状態を持つ必要がある入出力関係が
独立に多数ある場合は
クラスを使うと比較的実装が簡単になるのかな? >>563
ログはlogシート一つ、3列
時間 / タイプ / 内容
7/26 20:00 log 作業開始
7/26 20:05 success 作業成功
7/26 20:07 error err.discriptionの内容
7/26 20:10 log 作業終了
で、書き込む時に毎回A列の最終行を取得し、そこに記録してる
覚える必要はないと思う 表の検索とかsqlでやる人もいるんだろうけど自分としてはクラスにしちゃうのがしっくりくるわ
配列の操作もクラスにしてると楽
あと、似たような処理で操作する対象が違うメソッドなんかは同じ名前にしても問題ないところとかも地味に便利だよ
関数だと命名に困ることがよくある >>560
さあ?いろいろあるでしょ
数値を放り込むとその度に回数をカウントアップし、最大値・最小値、合計、時刻を記録する、とか。
これくらいだったらワークシートでもできるけど、そういう対象が数多くなるとオブジェクト配列でやりたくなる。
どのワークシートのどこに?とか考える必要なくなるしエクセル以外のOfficeでも使えるし。 >>564
一般的な形では難しいかもしれないけど
サブクラスに相当する関数から
スーパークラスに相当する関数を呼べばいいんじゃね?
逆にスーパークラスに相当する関数に
スイッチみたいな引数を付けて
サブクラスに相当する関数に分岐するとか >>567
SQLを使うのって速度的な理由。
自作クラスでSQL以上のスピードが出るなら、
みんなそうするわ。 >>558
VBAで出来ないと思っているならオブジェクト指向を何か勘違いしているからオブジェクト指向設計の本を読むといいよ。
他の言語みたいな書き方が出来ないだけで、VBAでもオブジェクト指向プログラミングは普通に出来るから。 >>570
まあ、あんまり大きなデータは扱わんからな
別に検索する形式が決まってるなら内部的にsqlで値抜き出してもいいわけだし
データの塊をオブジェクトとして扱っちゃったほうが何かまとまり感あってしっくり来るって感じかな >>571
できるできないの話じゃないんだって
あとオーバーライドはちょっと厳しくないか
どうやって実装する? >>564
AddressOf あるし使おうと思えば使える >>573
自身のメンバとして基底クラスを宣言して、基底クラスに自身を登録して、
基底クラスのメソッドを実行すると基底クラス側で自身の特定のメソッドが呼ばれるとかかな。 >>574
アドレス取るのはいいけどどうやって使うつもり? >>511
officeも何もなくてもc#書けるけど。
コンパイラ初めからあるから。 vbaでオブジェクト指向とか中級者がやることだな。
初心者よりタチ悪いこともある。 >>571
VBAと言う言語にクラスとかオブジェクト指向の概念が入っている
つまりオブジェクト指向の概念は言語にもつながる
と言う主張
一方でオブジェクト指向は設計にのみ関わる概念と言う主張もある
オブジェクト指向の概念を取り入れた言語でオブジェクト指向設計したものを実現するのと
オブジェクト指向の概念がない言語で実現するのでは
生産性とかに差が生じるだろう >>581
上級者はvbaは大人しく手続き型的にやるよ。
オブジェクト指向しようとして、これできないかなーあれできないかなーとか悩むだけ無駄。 >>584
各シートの統計情報を取りたい時はどうする?
例えば、セルを更新した回数、最大値、最小値、平均値
を各シート毎に知りたい時
後から分散とか標準偏差とかも知りたくなったらどうする? Youtuberヒカルが月収を明らかに!!おはよう朝日です出演
https://www.youtube.com/watch?v=RLZGrqQnnZc
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
https://www.youtube.com/watch?v=asF2wQ2xhjY&t=61s
ユーチューバーの儲けのカラクリを徹底検証!
https://www.youtube.com/watch?v=FUSb4erJSXE&t=504s
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
https://www.youtube.com/watch?v=Y7DAQ0RKilM&t=326s
誰も言わないなら俺がYouTuberのギャラ相場を教えます
https://www.youtube.com/watch?v=E4q-vaQh2EQ&t=118s
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
https://www.youtube.com/watch?v=Fr0WXXZRMSQ
最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいい
顔出したくないならラファエルみたいに仮面かぶればいい
手っ取り早く視聴数稼ぐには有名ユーチューバーへの物申す系動画がオススメ >>587
クラスってオブジェクト指向じゃないの?
上級者的に手続き型でやらないの? >>582
> なぜ?
> 逆にスーパークラスに相当する関数に
> スイッチみたいな引数を付けて
> サブクラスに相当する関数に分岐するとか
サブクラスを増やす度にスーパークラスに手を入れるつもりなの?
真顔で言ってるなら単なるアホだろ w
> で、どうするの?
無理じゃね?
って書いてあるんだが... ■ このスレッドは過去ログ倉庫に格納されています