Excel VBA 質問スレ Part70

■ このスレッドは過去ログ倉庫に格納されています
2021/03/18(木) 22:08:43.71ID:jtngtgXU0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ

※前スレ
Excel VBA 質問スレ Part69
https://mevius.5ch.net/test/read.cgi/tech/1607786543/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/03/31(水) 20:42:46.87
sheet1のA1には
https://www.jma.go.jp/英数字

A3からA10000には、それぞれ異なるURLが記載されています

B1には
https://maps.gsi.go.jp/index_m.htmlhttps://www.mlit.go.jp/river/toukei_chousa/kasen/jiten/nihon_kawa/0305_edogawa/0305_edogawa_00.htmlhttps://www.jice.or.jp/knowledge/japan/commentary03
みたいなURLが繋がっている文字列があります

B2からB10000には、上の様なURLが繋がっている文字列があります

A1からA3は
https://www.jma.go.jp/英数字

B1
https://maps.gsi.go.jp/index_m.html

B2
https://www.mlit.go.jp/river/toukei_chousa/kasen/jiten/nihon_kawa/0305_edogawa/0305_edogawa_00.html

B3
https://www.jice.or.jp/knowledge/japan/commentary03


みたいにB列にあるセル内を分解して、分解した分だけA列にA1の文字列を補う処理
以降B10000までを処理して
sheet2に記載したいのですが、どのようにすればよいでしょうか?
2021/03/31(水) 22:33:41.42ID:GYCr8oLd0
何言ってるのか判らんが
好きなようにやればいいよ
94デフォルトの名無しさん (ワッチョイ 655f-j37g)
垢版 |
2021/04/01(木) 00:43:47.27ID:Qm9pGYRd0
>>91
「エクセルのセルに株価をリアルタイムで
反映するソフトがある」

こんな珍味なソフトウェアがあるのかw
95デフォルトの名無しさん (ワッチョイ b163-VcSF)
垢版 |
2021/04/01(木) 02:05:44.32ID:GioFRFH30
>>94
楽天RSS 岡三RSS。
因みに株は難しく甘い世界ではないので安易にやらないようにしましょう。
ほとんどの人が負けます。
96デフォルトの名無しさん (ワッチョイ 655f-j37g)
垢版 |
2021/04/01(木) 03:02:30.23ID:Qm9pGYRd0
変な外国人が作ったんだろうなあ
2021/04/01(木) 09:31:40.60ID:JyQIT704d
「珍味」ってそういう使い方する言葉だっけ
2021/04/01(木) 10:40:32.36ID:Jj+/G5yda
たぶん珍妙
2021/04/01(木) 10:48:06.97ID:jNbL4ETRd
ワークシートの一部を画像として保存する方法にChartObjectsのExportメソッドがあります
が、罫線が一部消えてしまったりフォントが潰れたりして、画質が悪いのが気に入りません
もっと高画質で範囲指定してスクショを保存する方法はないでしょうか?
100デフォルトの名無しさん (ワッチョイ 6963-VcSF)
垢版 |
2021/04/01(木) 11:51:22.66ID:tUMm1OA70
>>99
クリップボードを手作業で切り取る際、エクセルの倍率
(Ctrl+マウススクロールで変えれるあれ)を100%よりも大きい高倍率で
切り取った方が画質が良い。
従って、その画像を取得するマクロの直前に、
エクセルの画面の大きさを変えれるコードがあるので、
それを直前に入れ、それを切り取れば恐らく高画質のが出来るんじゃないかな。
最後は勿論ばい倍率をもとに戻すマクロを入れれば良いと思う。
101デフォルトの名無しさん (ワッチョイ 62ee-Bi/r)
垢版 |
2021/04/01(木) 12:01:45.09ID:fy6TS88x0
>>90
インスタンス起動ではないですよね
2021/04/01(木) 15:56:27.00ID:yB6nLlLi0
>>92
Ruby で作った。
正規表現の否定先読みなどを使えば、もっとスマートに書けるかも

# ? は、直前のパターンの0〜1回の繰り返し。「https?」は、「http|https」と同じ意味
re = %r!(https?://)! #=> https?:\/\/

input_str = %w(https://a/b.html http://c https://x/y).join
#=> "https://a/b.htmlhttp://chttps://x/y";

pos = input_str.size # 文字列の末尾の位置

results = [ ]

# 文字列の末尾から、一致させていく
while pos = input_str.rindex( re, pos )

# 一致した位置から末尾までを削除して、それを配列の先頭に追加していく
results.unshift input_str.slice!( pos..-1 )
end

p results #=> ["https://a/b.html";, "http://c";, "https://x/y";]
2021/04/01(木) 16:01:13.59ID:yB6nLlLi0
>>102
修正
>re = %r!(https?://)! #=> https?:\/\/
re = %r!https?://! #=> https?:\/\/

( ) は、いらない
2021/04/01(木) 16:53:17.71ID:7y1pTd6e0
>>94
オプションのスマイルカーブをリアルタイムに描画するエクセルソフトとかもあるよ。
105デフォルトの名無しさん (ワイーワ2 FF1a-j37g)
垢版 |
2021/04/01(木) 17:08:13.22ID:jznaQuthF
外部からローカルのファイルを更新するなんてマルウェアみたいだな。
2021/04/01(木) 21:32:16.81ID:5T6IIfi20
>>95
配当なんてせいぜい数%
そこから税金2割引かれる
値上がり益は株価が永遠に上がり続けない限り期待値はゼロで、儲かったら2割税金、損しても2割補填してもらえるなんてことはない
つまり税金を考慮した期待値はマイナス
2021/04/01(木) 23:13:35.12ID:yB6nLlLi0
>損しても2割補填してもらえるなんてことはない

補填してもらえる。
何年か損失を繰り越ししていれば、儲かった時に相殺される

長年、銀行が税金を払わないのは繰越損失があるので、
その後、利益が出ても相殺されるから
2021/04/02(金) 20:32:20.64ID:OjzTopDr0
>>107
永久保証ならな
3年でさようならなんだから期待値はマイナス
2021/04/03(土) 10:18:57.57ID:0vCxCYiYa
最近のはinternetexploreを許否するwebがあるからこまる
スマホならともかくビジネスではまだ主流なのに
2021/04/03(土) 10:25:49.87ID:RckTLwqyd
さすがワッチョイにIEを出す男は言うことが違う
2021/04/03(土) 10:59:03.48ID:D2e+M4g2M
Web開発でIE対応が要件にないときにはむしろ意図的にIEで動かないようにするわ
勝手にIEで使われて文句言われるの最高にウザい
2021/04/03(土) 13:29:03.89ID:XPTw6Pj4M
>>33
自己レスだがわかったわ
WEBクエリでWEB内容をシートに書き出す
その中から出来高とかのワードをfindで探して
そのワードのn行後を取ってくる
みたいな動作をしてるんだけど、
ヤフーファイナンスの仕様が変わって
n行後の場所が変更になってた

ETFだけは従来の場所だから
上記結果がゼロならば違う場所を
取ってくるようにした

コピペプログラマだから
今回findとかOffsetを強制的に
学ばされて勉強になった
2021/04/03(土) 13:43:31.82ID:LoNYZ+kpF
>>110
IEが拒否されるときは
こっそりExcelシートでhtml をつくるだよ
htmlならまず拒否されないから

そーして、いつの間にかフォルダーが開いてる
フォルダー御開帳よ
2021/04/04(日) 02:10:27.86ID:7SFCjwlv0
ListViewのすべての項目を一発で削除する方法はありませんか?
ListBoxならClearメソッドが使えるようなのですが
2021/04/04(日) 03:01:59.01ID:OlWsfN+XM
>>114
ListView.ListItems.Clear
2021/04/04(日) 04:07:16.17ID:hsI5tKvB0
別ブックから別ブックへ値を持ってきたいときって、コピーか配列使うしかないですか?
コピーペーストは処理重そうでスマートっぽくないし、配列は張り付ける範囲をちゃんと指定しなきゃダメなのがめんどくさそうなんですけど、いい方法ないですか?
2021/04/04(日) 06:20:04.03ID:5jDGrLPha
コピーでいいやん
2021/04/04(日) 13:08:15.45ID:X/c7fPAEM
>>116
コピー先ブック.コピー先シート.Range().Value = コピー元ブック.コピー元シート.Range().Value
カッコ内はテキトーに
2021/04/04(日) 13:44:02.06ID:7SFCjwlv0
>>115
ありがとうございます!うまくいきました
すみませんがListViewについてもう一つ教えていただけないでしょうか

MultiSelect=Trueのときの選択項目数をラベルに表示させたいと思っています
リストが選択されるたびに表示を更新したいのですが、なにかいい方法はないでしょうか

ItemClickイベントで項目数を数えようとしましたが、選択数分イベントが発生するため項目数が増えると重くなってしまいます
ListBoxのChangeイベントのように複数選択しても一度しか発生しないイベントがあるといいのですが、無さそうなので困っています
2021/04/04(日) 17:46:13.14ID:JgvM3WMx0
>>116
コピー元もコピー先もシートを変数に入れておけば変数シート.セルで指定は少しスマートにできる
2021/04/04(日) 18:49:59.93ID:hsI5tKvB0
>>116です
>>118さんのいった通りrangeにvalueをつけてあげればrange.value =range.valueでうまく値をいれることができました
まだオブジェクトがうまく理解できていなかったです
もっと勉強したいと思います
ありがとうございました!
2021/04/05(月) 04:34:52.29ID:3N8BM4zS0
セルには0.9って入力してあるのに
VBAのcellsでそれを取得すると1と認識されるんですが
勝手に小数点以下を切り捨てないようにするにはどうしたらいいですか?
2021/04/05(月) 07:04:34.80ID:FxhyQ6l10
Currency型の変数に代入する
2021/04/05(月) 07:43:12.07ID:CnxjloBy0
>>123
そだね
ただCurrency型は小数点4桁までしか扱えないから
上記みたいに小数点1桁だったらいいけど
5桁以上扱ったり掛けたり割ったりする場合はDoubleの方がいいかな

ただ、Double型の場合は
浮動小数点あつかいでIEEE754規格だから
変に丸められちゃうことがあるんでかけ算割り算行う時は
一度整数にして計算してやる必要があるけど

まぁ使い所でどの型使うのか分けて使うのがいいかもね
2021/04/05(月) 12:36:23.48ID:3N8BM4zS0
>>123
>>124
ありがとうございます。integer型にしてました
2021/04/05(月) 17:42:39.68ID:GNHugBRe0
>>122
0.9の小数点以下を切り捨てたら 0 じゃね 
2021/04/05(月) 18:04:06.91ID:34gLfvfqa
別にInteger使う理由もないしlongにしちゃえばとも思う
2021/04/05(月) 19:09:20.57ID:IFZcDQ1J0
>>126
たしかに
2021/04/06(火) 06:08:10.23ID:KMOOpCjWa
型を指定すると遅くなるから
できるだけ指定なしがよいよ
マクロらしさを生かそう
2021/04/06(火) 07:02:52.46ID:Au4GybQm0
>>129
メンテが遅くなるからだめ
2021/04/06(火) 10:21:14.29ID:e+L9SfjT0
>>129
おいおいw
いくら質問スレで初心者だらけだからって
適当なことを教えてはいけない

指定しなかった型には自動的にVariant型が割り当てられて
本来Integer型だったりLong型で済むものに莫大なメモリを割り当てるし当然処理速度も遅くなる

VBAは比較的型の扱いが雑でも何とかなる方ではあるが
頭にプログラムの頭にOption Explicit付けといて型は明示的に設定する癖をつけておいた方がいい
2021/04/06(火) 11:09:39.71ID:jDDsYkyr0
複数の多次元配列をプロシージャに参照渡しするときはどう書けばいいですか
こう書くとスルーされます。

Sub Smple()
Dim ara(2,4) As Variant, arb(85,3) As Variant, arc As Variant)
・・・略
Call SheetCreate(ara(),arb(),arc())
End Sub
Sub SheetCreate(ByRef ara As Variant, ByRef arb As Variant, ByRef As arc As Variant)
・・・略
End Sub
2021/04/06(火) 12:45:54.77ID:e+L9SfjT0
>>132
うん、まあ
引数の型をVariantにしているからでしょうなぁ
何故Variantにすると値渡しになるのかは分からんけど

ちゃんと変数宣言のところで
StringとかIntegerとかの配列型宣言をして
呼び出される関数の引数にも
それに見合った型にすれば参照渡しされるんじゃない?
試してみて
2021/04/06(火) 14:36:15.96ID:jDDsYkyr0
>133
知らなかったです。ありがとうございます
2021/04/06(火) 14:39:05.93ID:7PISA/BhM
>>132
普通に
Sub Smple()
Dim ara(2,4) As Variant, arb(85,3) As Variant, arc As Variant
・・・略
Call SheetCreate(ara, arb, arc)
End Sub
Sub SheetCreate(ara As Variant, arb As Variant, arc As Variant)
・・・略
End Sub
って書けばいいだけだと思う
2021/04/06(火) 19:30:17.02ID:jDDsYkyr0
>>135
最初はそれでやっていたのですが、同じくスルーされてました
このサブプロシージャ内でブレークポイントを設定しても止まらなかったので、サブプロシージャがスルーされていると思っていたのですが、
サブプロシージャを外しても止まらず、別のファイルに書き換えたら動くようになりました。
2021/04/06(火) 19:51:59.72ID:JmeclF78d
ブレークポイントで止まらないのはおかしい
根本的に別のとこで間違ってる
2021/04/06(火) 20:36:50.07ID:DMwNdxSba
うむ、おかしい
2021/04/06(火) 22:23:14.18ID:kxv5hjcy0
Sub Smple()
Dim ara(2, 4) As Variant, arb(85, 3) As Variant, arc As Variant
Call SheetCreate(ara, arb, arc)
End Sub
Sub SheetCreate(ByRef ara() As Variant, ByRef arb() As Variant, ByRef arc As Variant)
End Sub
140デフォルトの名無しさん (ワッチョイ e5da-jIYQ)
垢版 |
2021/04/07(水) 19:30:33.27ID:aMJgToSe0
全部省略すれば勝手にByRefだと思ってけど違うの?

SheetCreate ara, arb, arc

Sub SheetCreate(ara, arb, arc)

End Sub
2021/04/07(水) 20:03:43.34ID:rHsSD320H
>>140
その認識は半分正しいけど半分は場合によるので間違い
とくに配列を渡す場合はややこしい
2021/04/07(水) 20:42:25.04ID:Vn8Hoh2Q0
配列・オブ・カリビアン
2021/04/07(水) 20:47:54.61ID:nkaFkhSP0
>>141
不思議なんだよねー
配列変数だとByrefにしてもVariantで渡すと値渡しになることがある
よしんばVariantが値型だとしても値型の参照渡しで渡るのは参照渡しになるはずなのに何で?
2021/04/08(木) 15:04:36.48ID:6DaO6dJm0
色々しらべたよ
まず、VBAやってる人はByValとByRefくらいしか気にしない人多いけど、
そもそも変数には参照型と値型というのがあって値型は値そのものが変数に入っているけど
参照型というのは実体が入っているんじゃなくて実体の入っている場所の情報が入っているんだよ。
オブジェクトの類が参照型で、StringやIntegerなんかが値型。
参照渡し、値渡しとこの参照型、値型という組み合わせで何が渡るか決まるんだけど

参照型の参照渡し;
引数の入っているアドレス(場所)を見に行って、その引数の中に入っているアドレスに入っているものを見に行くから、
内容を変更すると関数で呼ぶ前のものも変更されるよ

値型の参照渡し;
引数の入っているアドレスをコピーしてそのアドレスが指してるところの値を見に行くから、
内容を変更すると関数で呼ぶ前のものも変更されるよ

参照型の値渡し:
引数の入ってる値をコピーするけど、その引数の中には実体の入ってるアドレスが入ってて、そっちを見に行くから
内容を変更すると関数で呼ぶ前のものも変更されるよ

値型の値渡し
引数の入ってる値をコピーして、そのコピーした値の内容も値そのものが入っているから
内容を変更しても関数を呼ぶ前のものは変更されないよ

まずこれが大前提ね
2021/04/08(木) 15:20:56.67ID:6DaO6dJm0
本題に入るね。
配列変数でもその辺は基本変わらないけど、
何故か値渡しにしようとすると構文エラーになるんだ
そんなときは呼び出し先の引数をVariant型に変えてあげればいいって話だけど、
Variant型にしても参照型のものは参照が見られるから内容を変えれば関数を呼び出す前の内容も変わるんだよね。

variant型の配列を作って値型のものと参照型のものを違う要素に入れてそれを引き数に値渡しで設定してあげると
参照型のものを入れた部分は変更すると関数呼び出す前のものにも反映され、値型の部分は変更が反映されない。
思ったよりお利口さんだったよ。

結論を言うと
何で配列でキチンと型設定して値渡ししようとすると構文エラーで落ちるんじゃマイクロソフトのボケが!!
と言うところに落ち着いたよ
2021/04/08(木) 17:10:39.89ID:OX80XKzVM
うろ覚えで申し訳ないんだけど、引数をByVal TestAry() As Longとかにすれば値渡し出来なかったっけ?
2021/04/08(木) 17:27:48.87ID:6DaO6dJm0
>>146
呼び出し元に設定した変数もしくはリテラル値が型的にあっている、
もしくは暗黙の変換が行われる型ならそもそも設定しているものが値型。
そうでなければエラーになると思う。
2021/04/08(木) 17:47:34.27ID:vZ3ddDF70
質問場所間違ってたら言ってください
iPhone用Excelで仕事の日報を書いてるのですが
時間を書き込んで→を押して数字を書き込むと
前のセルに書き込んだ数字
例えば8:00と書き込んで→を、次に16:00と記入しようと1を押すと8:00:001ってなってしまいます
これってならなくする方法ありますか?
149デフォルトの名無しさん (ワッチョイ 558e-tazQ)
垢版 |
2021/04/08(木) 18:07:25.00ID:BiHFumMw0
>>148
死ね
2021/04/08(木) 18:07:51.70ID:6DaO6dJm0
>>148
iPhoneは持ってるんだけどPC側しか365のアカウント持ってないんだ。ごめんね。
だけどググってみたら書式設定は出来るみたいだから数字にしたいセルの部分をそう書式設定すればいいんじゃないかな?

あと、一応EXCEL関連のスレはここに有ったけど
Excel友の会
https://egg.5ch.net/test/read.cgi/software/1223040168/

何か過疎ってるどころか最後の書き込みが去年の10月だから機能していないね。ここのスレでEXCELのこと聞くのは
ここのスレの住人がみんなOKすれば大丈夫だと思うけど
今まで随分色んなことあったから難しいかも知れないよ。
2021/04/08(木) 19:22:03.89ID:wZLPNhcm0
こんなマクロの使い方もあるようで。
https://anond.hatelabo.jp/20210408000218
2021/04/08(木) 20:16:35.28ID:JmFnD0edM
要素数の限界ってどれくらいなの?
多次元配列で一次元あたり数千とかにしたらメモリ不足のエラーになった
2021/04/08(木) 20:37:06.14ID:eomKGQCU0
多次元はめっちゃメモリ食うからなるべくやるなと言われている
154デフォルトの名無しさん (ワッチョイ 2368-8vo5)
垢版 |
2021/04/08(木) 22:20:43.27ID:xay8Megr0
タスクマネージャでも眺めながら色々試してみては
物理メモリだけじゃないだろうけど、なんぼか目安にはなるだろう
2021/04/08(木) 23:36:50.07ID:zGFXp+zdH
64bit版なら配列変数1個あたり4GBまで
32bit版は2GBまで
つまりデータの型によって要素数の上限は違う
2021/04/09(金) 00:36:31.60ID:J+L5UjPE0
>>153-155
ありがとう
タスクマネージャ見ても余裕だったんで理由を知りたかった
次元数2次元までにしといた方が無難だね
2021/04/09(金) 17:10:54.57ID:v0s3XxNT0
>>156
そうだね
あくまで俺の経験則だけど
2次元から3次元にしたとき何でも一挙に難しくなる気がする
元々簡単な作りのものしか扱わないならいいけど
VBAではないけど以前東大生が3次元で配列の制御を行うロジックを作って
自分でもよく分からなくなってしまったというのを見たことがあるし
ゲーム作るときも画面表示するだけで
三角関数はもとより行列やアフィン変換とか
理解してないとまともに出来ない
メモリ食うのも理由のひとつかも知れないけど
3次元には出来れば手を出さない方がいいと思う
2021/04/09(金) 19:26:47.90ID:o5ukQupNM
>>157
ちなみに今回使おうとしたのは3次元配列なんだけど、3次元配列にした理由は同じような2次元配列に順番にアクセスしたかったから
こういう場合は2次元配列を複数用意すればいいのかな?
3次元配列にした方がスマートに記述できると思ったんだけど
159デフォルトの名無しさん (ワッチョイ 6268-/CMm)
垢版 |
2021/04/09(金) 19:41:20.17ID:H0DC02Cp0
行、列、シートで、3次元
配列で重くなるならセルに入れてしまうという手も
2021/04/09(金) 21:04:50.47ID:v0s3XxNT0
>>159
シートを余計に食うけど場合によってはそれもひとつの有効手段だよね。
あまり見せたくなければVerryHiddenとかにしてしまえばいい訳だし。

>>158
使い処によると思うよ。使い方が単純でスピードが速い方がいいならそれでいいと思う。
ただ、これはあくまで「俺が」なんだけど実はあまり配列が好きじゃないんだ。
だからと言うわけでもないんだけどある程度大きなプログラムを組むときは
配列を使うこともあるにはあるけど、2次元配列の代わりにプロパティだけのエンティティクラス作って
それをコレクションやディクショナリに詰め込んで使ったり、
レコードセットを使ったりすることもあるし、
3次元では上記したような仕組みのものやそういった仕組みを持つクラスを作って、
それをまたコレクションやディクショナリにいれたりするように作ったりとか。
何でこんなまどろっこしいことするのかと言えば、要素と言うか項目やレコードの追加や
データ抽出が楽なんだよね。

シート足していいと言うなら先程の>>159の人の案も有りだと思う。
削除系は使えないけどシートにはその気になればSQLが投げられるから
抽出や計算、変換、加工とかする必要があるならかなり楽に作れることもあるからね。
161デフォルトの名無しさん (ワッチョイ 6268-/CMm)
垢版 |
2021/04/09(金) 21:29:44.17ID:H0DC02Cp0
三次元配列は単純に頭がしんどい
三次元空間の様にそれぞれの次元が同じ重みを持っているなら仕方ないけど、
それ意外なら行列の二次元+シート一次元、のように分けたほうがスッキリすると思う
2021/04/09(金) 21:34:45.69ID:VGCoQhdKa
省略したら値渡しでしよ
再帰かけるときには値渡しにしないと、いろいろ都合がある
2021/04/09(金) 21:37:45.95ID:VGCoQhdKa
>>161
賛成、エクセルのシート使うよね
2021/04/09(金) 21:50:51.12ID:v0s3XxNT0
>>162
これな
実はVB.Netの場合は省略するとByVal(値渡し)で
旧VB6やVBAの場合は省略するとByRef(参照渡し)で
両方やってる人はよく間違えるんだよね。

再起の場合は確かにどれを反映させてどれを反映させないか結構大事になるけど、
まぁ基本デフォルト使わないで明示的に書くだろうからあまり気にしなくてもいいかもね。
2021/04/10(土) 00:28:07.23ID:xAikY8XJ0
みんなありがとう
>>160
VBAは基本の参考書を読んで一通り分かったつもり
でもクラスは上級者すぎて分からないや
一応自作のオブジェクトという理解でいる
色々案を考えてくれてありがとう、もう少し勉強してからそのあたりも試してみる
2021/04/10(土) 06:57:57.98ID:+Fv9eRvVa
シートに書き出すととピポットにできるから
ピポットなら何重にも次元が増やせるし
処理もはやい
ピポットとvbaを組み合わせると、
けっこうはやい
2021/04/10(土) 08:02:59.36ID:GLiDRYw80
>>165
頑張って
クラスはObject指向言語だと必須だけどVBAでは無理して知ってる必要もないから気が向いたときに覚えればいいと思うよ

とは言ってもクラス自体はそんなに難しいものじゃないんだけどね。よく、ひとつの纏まった機能を他のモジュールに書くよね。
あれを標準モジュールの変わりにクラスモジュールに書けばクラスの出来上がり。
後は他のオブジェクト使うときと同じようにNewして変数に入れて、変数名.メソッド名、変数名.プロパティ名とか書けば使えるよ。

どっちかっていうと考え方と使いどころに慣れるまでがちょっと大変かもね。
それ以上の多態性とかデザインパターンとかの知識を身につけるころには他の言語やってるだろうから
今そんなに深く考えることもないと思うよ。
2021/04/10(土) 09:30:59.12ID:ASUPMck3M
>>165
VBAの範疇ならクラスは忘れてもいいと思う
コンストラクタに引数も持てないし継承もできないから普通にユーザー定義型と操作ルーチンをモジュールにまとめるのとたいして変わらんし
2021/04/10(土) 10:08:24.05ID:+Fv9eRvVa
エクセルというクラスを使いこなせば
ビジネスなら十分
エクセル以上のobject作るのは無理だから

なんつてセカンドオニオンでした
2021/04/10(土) 15:51:59.07ID:duTza7EGd
自分もクラスで挫折して今はユーザー定義型で幸せです
2021/04/10(土) 16:02:42.86ID:4ha6UGTxp
自分もユーザー定義にした途端お金が入って彼女が出来ました。今ではとっても幸せです。
2021/04/10(土) 17:05:30.13ID:eY7Q/L5k0
そうかい
2021/04/10(土) 20:22:47.19ID:mgDf3XRg0
>>170
プロパティとかコンストラクタとかあとは鯛焼きの型とかいきなり説明しだすから分かりにくいんだよな
2021/04/10(土) 20:23:09.87ID:mgDf3XRg0
最初はクラス内の変数と関数だけでプロシージャ内のコードがこれだけ簡潔書けるようになります程度でいいのに
175デフォルトの名無しさん (ワッチョイ 6268-/CMm)
垢版 |
2021/04/10(土) 20:31:08.56ID:u4vdYafN0
EXCELvbaで、クラスってどういう時に使うのでしょうか
ゲームのように細かいオブジェクトが多数ある状態なら分かりますが、
表の状態になったデータだと、今ひとつピント来ないです
社員classや顧客classを作るのでしょうか
2021/04/10(土) 20:42:21.31ID:r9QO1mE4M
無理に使う必要は無い。
「使わなくては!」と閃く状況が来るときまで。
2021/04/10(土) 21:10:26.00ID:2jN52YXT0
>>175
よく使うけど毎回書くのが面倒な処理がある時
DB接続とかUIAutomationとか長げぇよってやつ
2021/04/10(土) 21:22:16.81ID:GLiDRYw80
>>175
どう使うかを決めるのも自分。
だからクラスそのものより
考え方や使いどころに慣れるまで
そっちの方が大変だって言ったんだよ。

まぁ表であればあくまで俺であれば、
項目をプロパティにして
1レコードをクラスにして、
それをコレクションやディクショナリに
登録して使うよ。前記したけどね。
2021/04/10(土) 22:23:34.34ID:duTza7EGd
オレ知ってる!
クラスってニューして使うんだよな!
180デフォルトの名無しさん (ワッチョイ 0663-uh6b)
垢版 |
2021/04/10(土) 23:22:47.33ID:kj/emQZa0
エクセルでガントチャートを作りたく極力簡単な方法を探しています。
(手順が少なく、エクセル苦手でも理解しやすい)

自力で探したところ
ttps://excel-master.net/cells-worksheets-control/gantt-chart-3/
の「条件付き書式でガントチャートをつくる」が一番簡単な気がしましたが
より簡単な方法があったらご教授いただきたく。

windows板で尋ねようかと思いましたがエクセル専用スレが無いため
詳しい人が多そうなこのスレにお邪魔しました。
2021/04/10(土) 23:41:30.33ID:KgXo78Rva
要望は何回もやり直したほうがよいよ
さいしょは相手も自分もよくわかってないから
Ver3ぐらいでようやく完成する
2021/04/11(日) 00:00:57.05ID:0+LhiyyI0
>>180
あ、これ、俺は苦手だわ
WBS作ろうとするとどうしても
簡単に作ることより分かり易くする方に
力入れちゃうから多分そのリンク先に
載ってることよりややこしい数式にしてしまう

ま、WBSなんて基本、予定線と実績線、
あと遅れそうになった時のワーニング色と
遅れた時のアラート色、
あと遅延リカバリ用の枠付けとくくらいだから
大したもんじゃないからまぁ頑張って。

こういうの作るときにもっと大事なのは
見積もりとそれに対するする人員と期間の
配分だから、そっちも任されているなら
そっちに作業の80%くらい割り振って
考えた方がいいよ。
183デフォルトの名無しさん (スッップ Sd02-N28a)
垢版 |
2021/04/11(日) 02:17:20.23ID:x6o0gjqGd
馬鹿ばっかのスレ
2021/04/11(日) 02:27:18.88ID:C7VIYXjZa
ガントチャートだとあんまり工程管理にならないんだよ
やってみるとわかるけど
8割がた遅延する、というか遅れてないと進捗がわからないだよ
1、そもそもスタートしていなかった?
これがいちばんおおい
2、深刻で致命的なもんだいが、見つかるとはいちばん最後
だから
2021/04/11(日) 10:19:59.88ID:Gib6KHmfM
>>180
そのガントチャートで問題ないならそれが一番簡単だと思う
ただ>>184が言うような日程管理をしたいならもうちょい作り込むなり専用アプリを使ったほうがいい
2021/04/11(日) 11:13:40.17ID:udnt6yH0p
質問です

今後このスレ
こう言ったEXCELのとか
旧VB6とか許容すんの?

古参なら今までどういったことが
有ったか覚えていると思うけど
2021/04/11(日) 11:43:22.55ID:TwIBijR2M
質問者はワークシートでの作り方はある程度想像がつくけどVBAの知識がある人ならよりスマートな方法を知っているかもしれないと考えてここで聞いたんだろうし、
それに対してワークシートの機能でできることはVBA使うよりワークシートの機能でやった方がいいってのは極めて妥当で健全な回答だろう
そんなことでいちいちスレ違い警察さんが出動しなくていいよ
2021/04/11(日) 12:04:02.09ID:0+LhiyyI0
>>187
そう

許容するのね?
189デフォルトの名無しさん (ワッチョイ ebcd-AcCi)
垢版 |
2021/04/11(日) 12:41:42.70ID:WBicdlML0
excelのOnTime関数をPowerPointで使うこと出来ないよね?同じ機能を持った関数ってある?
2021/04/11(日) 12:55:23.83ID:0+LhiyyI0
>>189
無いからAPIで行うらしい
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1396587403
2021/04/11(日) 13:01:24.60ID:J2w1eWX20
Excelから呼び出せないのか
起動中のソフトを検索するワード関数をExcelから呼び出してるの見かけたことあるけど
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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