1 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 22:08:43.71 ID:jtngtgXU0.net] !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
89 名前:デフォルトの名無しさん mailto:sage [2021/03/30(火) 17:58:10.32 ID:0EHjDb6N0.net] 質問です 前はExcel2010の時はレジストリを維持って、VBAファイルだけはインスタンス起動が出来るようにするとか可能でしたが 2019にするとインスタンス起動ができなくなってました。 .xlsmファイルだけインスタンス起動するとか方法はないでしょうか
90 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 04:17:21.25 ID:1Kn3VVGI0.net] 右クリックして[新規] じゃだめなのか?
91 名前:76です。 [2021/03/31(水) 18:32:23.42 ID:Evr26ox50.net] 回答くださった皆さん本当に有難うございます。 これから回答いただいた対処法を全て1個1個試していこうと思います。 なお6秒に一回とは、エクセルのセルに株価をリアルタイムで 反映するソフトがあるのですが、それで株のアラート機能を VBAで自作で作っているので必要なのです。 ではでは。
92 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 20:42:46.87 .net] 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に記載したいのですが、どのようにすればよいでしょうか?
93 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 22:33:41.42 ID:GYCr8oLd0.net] 何言ってるのか判らんが 好きなようにやればいいよ
94 名前:デフォルトの名無しさん [2021/04/01(木) 00:43:47.27 ID:Qm9pGYRd0.net] >>91 「エクセルのセルに株価をリアルタイムで 反映するソフトがある」 こんな珍味なソフトウェアがあるのかw
95 名前:デフォルトの名無しさん [2021/04/01(木) 02:05:44.32 ID:GioFRFH30.net] >>94 楽天RSS 岡三RSS。 因みに株は難しく甘い世界ではないので安易にやらないようにしましょう。 ほとんどの人が負けます。
96 名前:デフォルトの名無しさん [2021/04/01(木) 03:02:30.23 ID:Qm9pGYRd0.net] 変な外国人が作ったんだろうなあ
97 名前:デフォルトの名無しさん mailto:sage [2021/04/01(木) 09:31:40.60 ID:JyQIT704d.net] 「珍味」ってそういう使い方する言葉だっけ
98 名前:デフォルトの名無しさん mailto:sage [2021/04/01(木) 10:40:32.36 ID:Jj+/G5yda.net] たぶん珍妙
99 名前:デフォルトの名無しさん mailto:sage [2021/04/01(木) 10:48:06.97 ID:jNbL4ETRd.net] ワークシートの一部を画像として保存する方法にChartObjectsのExportメソッドがあります が、罫線が一部消えてしまったりフォントが潰れたりして、画質が悪いのが気に入りません もっと高画質で範囲指定してスクショを保存する方法はないでしょうか?
100 名前:デフォルトの名無しさん [2021/04/01(木) 11:51:22.66 ID:tUMm1OA70.net] >>99 クリップボードを手作業で切り取る際、エクセルの倍率 (Ctrl+マウススクロールで変えれるあれ)を100%よりも大きい高倍率で 切り取った方が画質が良い。 従って、その画像を取得するマクロの直前に、 エクセルの画面の大きさを変えれるコードがあるので、 それを直前に入れ、それを切り取れば恐らく高画質のが出来るんじゃないかな。 最後は勿論ばい倍率をもとに戻すマクロを入れれば良いと思う。
101 名前:デフォルトの名無しさん [2021/04/01(木) 12:01:45.09 ID:fy6TS88x0.net] >>90 インスタンス起動ではないですよね
102 名前:デフォルトの名無しさん mailto:sage [2021/04/01(木) 15:56:27.00 ID:yB6nLlLi0.net] >>92 Ruby で作った。 正規表現の否定先読みなどを使えば、もっとスマートに書けるかも # ? は、直前のパターンの0〜1回の繰り返し。「https?」は、「http|https」と同じ意味 re = %r!(https?://)! #=> https?:\/\/ input_str = %w(https://a/b.html c https://x/y).join #=> "https://a/b.htmlchttps://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", "c", "https://x/y"]
103 名前:102 mailto:sage [2021/04/01(木) 16:01:13.59 ID:yB6nLlLi0.net] >>102 修正 >re = %r!(https?://)! #=> https?:\/\/ re = %r!https?://! #=> https?:\/\/ ( ) は、いらない
104 名前:デフォルトの名無しさん mailto:sage [2021/04/01(木) 16:53:17.71 ID:7y1pTd6e0.net] >>94 オプションのスマイルカーブをリアルタイムに描画するエクセルソフトとかもあるよ。
105 名前:デフォルトの名無しさん [2021/04/01(木) 17:08:13.22 ID:jznaQuthF.net] 外部からローカルのファイルを更新するなんてマルウェアみたいだな。
106 名前:デフォルトの名無しさん mailto:sage [2021/04/01(木) 21:32:16.81 ID:5T6IIfi20.net] >>95 配当なんてせいぜい数% そこから税金2割引かれる 値上がり益は株価が永遠に上がり続けない限り期待値はゼロで、儲かったら2割税金、損しても2割補填してもらえるなんてことはない つまり税金を考慮した期待値はマイナス
107 名前:デフォルトの名無しさん mailto:sage [2021/04/01(木) 23:13:35.12 ID:yB6nLlLi0.net] >損しても2割補填してもらえるなんてことはない 補填してもらえる。 何年か損失を繰り越ししていれば、儲かった時に相殺される 長年、銀行が税金を払わないのは繰越損失があるので、 その後、利益が出ても相殺されるから
108 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 20:32:20.64 ID:OjzTopDr0.net] >>107 永久保証ならな 3年でさようならなんだから期待値はマイナス
109 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 10:18:57.57 ID:0vCxCYiYa.net] 最近のはinternetexploreを許否するwebがあるからこまる スマホならともかくビジネスではまだ主流なのに
110 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 10:25:49.87 ID:RckTLwqyd.net] さすがワッチョイにIEを出す男は言うことが違う
111 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 10:59:03.48 ID:D2e+M4g2M.net] Web開発でIE対応が要件にないときにはむしろ意図的にIEで動かないようにするわ 勝手にIEで使われて文句言われるの最高にウザい
112 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 13:29:03.89 ID:XPTw6Pj4M.net] >>33 自己レスだがわかったわ WEBクエリでWEB内容をシートに書き出す その中から出来高とかのワードをfindで探して そのワードのn行後を取ってくる みたいな動作をしてるんだけど、 ヤフーファイナンスの仕様が変わって n行後の場所が変更になってた ETFだけは従来の場所だから 上記結果がゼロならば違う場所を 取ってくるようにした コピペプログラマだから 今回findとかOffsetを強制的に 学ばされて勉強になった
113 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 13:43:31.82 ID:LoNYZ+kpF.net] >>110 IEが拒否されるときは こっそりExcelシートでhtml をつくるだよ htmlならまず拒否されないから そーして、いつの間にかフォルダーが開いてる フォルダー御開帳よ
114 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 02:10:27.86 ID:7SFCjwlv0.net] ListViewのすべての項目を一発で削除する方法はありませんか? ListBoxならClearメソッドが使えるようなのですが
115 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 03:01:59.01 ID:OlWsfN+XM.net] >>114 ListView.ListItems.Clear
116 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 04:07:16.17 ID:hsI5tKvB0.net] 別ブックから別ブックへ値を持ってきたいときって、コピーか配列使うしかないですか? コピーペーストは処理重そうでスマートっぽくないし、配列は張り付ける範囲をちゃんと指定しなきゃダメなのがめんどくさそうなんですけど、いい方法ないですか?
117 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 06:20:04.03 ID:5jDGrLPha.net] コピーでいいやん
118 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 13:08:15.45 ID:X/c7fPAEM.net] >>116 コピー先ブック.コピー先シート.Range().Value = コピー元ブック.コピー元シート.Range().Value カッコ内はテキトーに
119 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 13:44:02.06 ID:7SFCjwlv0.net] >>115 ありがとうございます!うまくいきました すみませんがListViewについてもう一つ教えていただけないでしょうか MultiSelect=Trueのときの選択項目数をラベルに表示させたいと思っています リストが選択されるたびに表示を更新したいのですが、なにかいい方法はないでしょうか ItemClickイベントで項目数を数えようとしましたが、選択数分イベントが発生するため項目数が増えると重くなってしまいます ListBoxのChangeイベントのように複数選択しても一度しか発生しないイベントがあるといいのですが、無さそうなので困っています
120 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 17:46:13.14 ID:JgvM3WMx0.net] >>116 コピー元もコピー先もシートを変数に入れておけば変数シート.セルで指定は少しスマートにできる
121 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 18:49:59.93 ID:hsI5tKvB0.net] >>116 です >>118 さんのいった通りrangeにvalueをつけてあげればrange.value =range.valueでうまく値をいれることができました まだオブジェクトがうまく理解できていなかったです もっと勉強したいと思います ありがとうございました!
122 名前:デフォルトの名無しさん mailto:sage [2021/04/05(月) 04:34:52.29 ID:3N8BM4zS0.net] セルには0.9って入力してあるのに VBAのcellsでそれを取得すると1と認識されるんですが 勝手に小数点以下を切り捨てないようにするにはどうしたらいいですか?
123 名前:デフォルトの名無しさん mailto:sage [2021/04/05(月) 07:04:34.80 ID:FxhyQ6l10.net] Currency型の変数に代入する
124 名前:デフォルトの名無しさん mailto:sage [2021/04/05(月) 07:43:12.07 ID:CnxjloBy0.net] >>123 そだね ただCurrency型は小数点4桁までしか扱えないから 上記みたいに小数点1桁だったらいいけど 5桁以上扱ったり
125 名前:掛けたり割ったりする場合はDoubleの方がいいかな ただ、Double型の場合は 浮動小数点あつかいでIEEE754規格だから 変に丸められちゃうことがあるんでかけ算割り算行う時は 一度整数にして計算してやる必要があるけど まぁ使い所でどの型使うのか分けて使うのがいいかもね [] [ここ壊れてます]
126 名前:デフォルトの名無しさん mailto:sage [2021/04/05(月) 12:36:23.48 ID:3N8BM4zS0.net] >>123 >>124 ありがとうございます。integer型にしてました
127 名前:デフォルトの名無しさん mailto:sage [2021/04/05(月) 17:42:39.68 ID:GNHugBRe0.net] >>122 0.9の小数点以下を切り捨てたら 0 じゃね
128 名前:デフォルトの名無しさん mailto:sage [2021/04/05(月) 18:04:06.91 ID:34gLfvfqa.net] 別にInteger使う理由もないしlongにしちゃえばとも思う
129 名前:デフォルトの名無しさん mailto:sage [2021/04/05(月) 19:09:20.57 ID:IFZcDQ1J0.net] >>126 たしかに
130 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 06:08:10.23 ID:KMOOpCjWa.net] 型を指定すると遅くなるから できるだけ指定なしがよいよ マクロらしさを生かそう
131 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 07:02:52.46 ID:Au4GybQm0.net] >>129 メンテが遅くなるからだめ
132 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 10:21:14.29 ID:e+L9SfjT0.net] >>129 おいおいw いくら質問スレで初心者だらけだからって 適当なことを教えてはいけない 指定しなかった型には自動的にVariant型が割り当てられて 本来Integer型だったりLong型で済むものに莫大なメモリを割り当てるし当然処理速度も遅くなる VBAは比較的型の扱いが雑でも何とかなる方ではあるが 頭にプログラムの頭にOption Explicit付けといて型は明示的に設定する癖をつけておいた方がいい
133 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 11:09:39.71 ID:jDDsYkyr0.net] 複数の多次元配列をプロシージャに参照渡しするときはどう書けばいいですか こう書くとスルーされます。 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
134 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 12:45:54.77 ID:e+L9SfjT0.net] >>132 うん、まあ 引数の型をVariantにしているからでしょうなぁ 何故Variantにすると値渡しになるのかは分からんけど ちゃんと変数宣言のところで StringとかIntegerとかの配列型宣言をして 呼び出される関数の引数にも それに見合った型にすれば参照渡しされるんじゃない? 試してみて
135 名前:132 mailto:sage [2021/04/06(火) 14:36:15.96 ID:jDDsYkyr0.net] >133 知らなかったです。ありがとうございます
136 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 14:39:05.93 ID:7PISA/BhM.net] >>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 って書けばいいだけだと思う
137 名前:132 mailto:sage [2021/04/06(火) 19:30:17.02 ID:jDDsYkyr0.net] >>135 最初はそれでやっていたのですが、同じくスルーされてました このサブプロシージャ内でブレークポイントを設定しても止まらなかったので、サブプロシージャがスルーされていると思っていたのですが、 サブプロシージャを外しても止まらず、別のファイルに書き換えたら動くようになりました。
138 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 19:51:59.72 ID:JmeclF78d.net] ブレークポイントで止まらないのはおかしい 根本的に別のとこで間違ってる
139 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 20:36:50.07 ID:DMwNdxSba.net] うむ、おかしい
140 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 22:23:14.18 ID:kxv5hjcy0.net] 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
141 名前:デフォルトの名無しさん [2021/04/07(水) 19:30:33.27 ID:aMJgToSe0.net] 全部省略すれば勝手にByRefだと思ってけど違うの? SheetCreate ara, arb, arc Sub SheetCreate(ara, arb, arc) End Sub
142 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 20:03:43.34 ID:rHsSD320H.net] >>140 その認識は半分正しいけど半分は場合によるので間違い とくに配列を渡す場合はややこしい
143 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 20:42:25.04 ID:Vn8Hoh2Q0.net] 配列・オブ・カリビアン
144 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 20:47:54.61 ID:nkaFkhSP0.net] >>141 不思議なんだよねー 配列変数だとByrefにしてもVariantで渡すと値渡しになることがある よしんばVariantが値型だとしても値型の参照渡しで渡るのは参照渡しになるはずなのに何で?
145 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 15:04:36.48 ID:6DaO6dJm0.net] 色々しらべたよ まず、VBAやってる人はByValとByRefくらいしか気にしない人多いけど、 そもそも変数には参照型と値型というのがあって値型は値そのものが変数に入っているけど 参照型というのは実体が入っているんじゃなくて実体の入っている場所の情報が入っているんだよ。 オブジェクトの類が参照型で、StringやIntegerなんかが値型。 参照渡し、値渡しとこの参照型、値型という組み合わせで何が渡るか決まるんだけど 参照型の参照渡し; 引数の入っているアドレス(場所)を見に行って、その引数の中に入っているアドレスに入っているものを見に行くから、 内容を変更すると関数で呼ぶ前のものも変更されるよ 値型の参照渡し; 引数の入っているアドレスをコピーしてそのアドレスが指してるところの値を見に行くから、 内容を変更すると関数で呼ぶ前のものも変更されるよ 参照型の値渡し: 引数の入ってる値をコピーするけど、その引数の中には実体の入ってるアドレスが入ってて、そっちを見に行くから 内容を変更すると関数で呼ぶ前のものも変更されるよ 値型の値渡し 引数の入ってる値をコピーして、そのコピーした値の内容も値そのものが入っているから 内容を変更しても関数を呼ぶ前のものは変更されないよ まずこれが大前提ね
146 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 15:20:56.67 ID:6DaO6dJm0.net] 本題に入るね。 配列変数でもその辺は基本変わらないけど、 何故か値渡しにしようとすると構文エラーになるんだ そんなときは呼び出し先の引数をVariant型に変えてあげればいいって話だけど、 Variant型にしても参照型のものは参照が見られるから内容を変えれば関数を呼び出す前の内容も変わるんだよね。 variant型の配列を作って値型のものと参照型のものを違う要素に入れてそれを引き数に値渡しで設定してあげると 参照型のものを入れた部分は変更すると関数呼び出す前のものにも反映され、値型の部分は変更が反映されない。 思ったよりお利口さんだったよ。 結論を言うと 何で配列でキチンと型設定して値渡ししようとすると構文エラーで落ちるんじゃマイクロソフトのボケが!! と言うところに落ち着いたよ
147 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 17:10:39.89 ID:OX80XKzVM.net] うろ覚えで申し訳ないんだけど、引数をByVal TestAry() As Longとかにすれば値渡し出来なかったっけ?
148 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 17:27:48.87 ID:6DaO6dJm0.net] >>146 呼び出し元に設定した変数もしくはリテラル値が型的にあっている、 もしくは暗黙の変換が行われる型ならそもそも設定しているものが値型。 そうでなければエラーになると思う。
149 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 17:47:34.27 ID:vZ3ddDF70.net] 質問場所間違ってたら言ってください iPhone用Excelで仕事の日報を書いてるのですが 時間を書き込んで→を押して数字を書き込むと 前のセルに書き込んだ数字 例えば8:00と書き込んで→を、次に16:00と記入しようと1を押すと8:00:001ってなってしまいます これってならなくする方法ありますか?
150 名前:デフォルトの名無しさん [2021/04/08(木) 18:07:25.00 ID:BiHFumMw0.net] >>148 死ね
151 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 18:07:51.70 ID:6DaO6dJm0.net] >>148 iPhoneは持ってるんだけどPC側しか365のアカウント持ってないんだ。ごめんね。 だけどググってみたら書式設定は出来るみたいだから数字にしたいセルの部分をそう書式設定すればいいんじゃないかな? あと、一応EXCEL関連のスレはここに有ったけど Excel友の会 https://egg.5ch.net/test/read.cgi/software/1223040168/ 何か過疎ってるどころか最後の書き込みが去年の10月だから機能していないね。ここのスレでEXCELのこと聞くのは ここのスレの住人がみんなOKすれば大丈夫だと思うけど 今まで随分色んなことあったから難しいかも知れないよ。
152 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 19:22:03.89 ID:wZLPNhcm0.net] こんなマクロの使い方もあるようで。 https://anond.hatelabo.jp/20210408000218
153 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 20:16:35.28 ID:JmFnD0edM.net] 要素数の限界ってどれくらいなの? 多次元配列で一次元あたり数千とかにしたらメモリ不足のエラーになった
154 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 20:37:06.14 ID:eomKGQCU0.net] 多次元はめっちゃメモリ食うからなるべくやるなと言われている
155 名前:デフォルトの名無しさん [2021/04/08(木) 22:20:43.27 ID:xay8Megr0.net] タスクマネージャでも眺めながら色々試してみては 物理メモリだけじゃないだろうけど、なんぼか目安にはなるだろう
156 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 23:36:50.07 ID:zGFXp+zdH.net] 64bit版なら配列変数1個あたり4GBまで 32bit版は2GBまで つまりデータの型によって要素数の上限は違う
157 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 00:36:31.60 ID:J+L5UjPE0.net] >>153-155 ありがとう タスクマネージャ見ても余裕だったんで理由を知りたかった 次元数2次元までにしといた方が無難だね
158 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 17:10:54.57 ID:v0s3XxNT0.net] >>156 そうだね あくまで俺の経験則だけど 2次元から3次元にしたとき何でも一挙に難しくなる気がする 元々簡単な作りのものしか扱わないならいいけど VBAではないけど以前東大生が3次元で配列の制御を行うロジックを作って 自分でもよく分からなくなってしまったというのを見たことがあるし ゲーム作るときも画面表示するだけで 三角関数はもとより行列やアフィン変換とか 理解してないとまともに出来ない メモリ食うのも理由のひとつかも知れないけど 3次元には出来れば手を出さない方がいいと思う
159 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 19:26:47.90 ID:o5ukQupNM.net] >>157 ちなみに今回使おうとしたのは3次元配列なんだけど、3次元配列にした理由は同じような2次元配列に順番にアクセスしたかったから こういう場合は2次元配列を複数用意すればいいのかな? 3次元配列にした方がスマートに記述できると思ったんだけど
160 名前:デフォルトの名無しさん [2021/04/09(金) 19:41:20.17 ID:H0DC02Cp0.net] 行、列、シートで、3次元 配列で重くなるならセルに入れてしまうという手も
161 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 21:04:50.47 ID:v0s3XxNT0.net] >>159 シートを余計に食うけど場合によってはそれもひとつの有効手段だよね。 あまり見せたくなければVerryHiddenとかにしてしまえばいい訳だし。 >>158 使い処によると思うよ。使い方が単純でスピードが速い方がいいならそれでいいと思う。 ただ、これはあくまで「俺が」なんだけど実はあまり配列が好きじゃないんだ。 だからと言うわけでもないんだけどある程度大きなプログラムを組むときは 配列を使うこともあるにはあるけど、2次元配列の代わりにプロパティだけのエンティティクラス作って それをコレクションやディクショナリに詰め込んで使ったり、 レコードセットを使ったりすることもあるし、 3次元では上記したような仕組みのものやそういった仕組みを持つクラスを作って、 それをまたコレクションやディクショナリにいれたりするように作ったりとか。 何でこんなまどろっこしいことするのかと言えば、要素と言うか項目やレコードの追加や データ抽出が楽なんだよね。 シート足していいと言うなら先程の>>159 の人の案も有りだと思う。 削除系は使えないけどシートにはその気になればSQLが投げられるから 抽出や計算、変換、加工とかする必要があるならかなり楽に作れることもあるからね。
162 名前:デフォルトの名無しさん [2021/04/09(金) 21:29:44.17 ID:H0DC02Cp0.net] 三次元配列は単純に頭がしんどい 三次元空間の様にそれぞれの次元が同じ重みを持っているなら仕方ないけど、 それ意外なら行列の二次元+シート一次元、のように分けたほうがスッキリすると思う
163 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 21:34:45.69 ID:VGCoQhdKa.net] 省略したら値渡しでしよ 再帰かけるときには値渡しにしないと、いろいろ都合がある
164 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 21:37:45.95 ID:VGCoQhdKa.net] >>161 賛成、エクセルのシート使うよね
165 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 21:50:51.12 ID:v0s3XxNT0.net] >>162 これな 実はVB.Netの場合は省略するとByVal(値渡し)で 旧VB6やVBAの場合は省略するとByRef(参照渡し)で 両方やってる人はよく間違えるんだよね。 再起の場合は確かにどれを反映させてどれを反映させないか結構大事になるけど、 まぁ基本デフォルト使わないで明示的に書くだろうからあまり気にしなくてもいいかもね。
166 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 00:28:07.23 ID:xAikY8XJ0.net] みんなありがとう >>160 VBAは基本の参考書を読んで一通り分かったつもり でもクラスは上級者すぎて分からないや 一応自作のオブジェクトという理解でいる 色々案を考えてくれてありがとう、もう少し勉強してからそのあたりも試してみる
167 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 06:57:57.98 ID:+Fv9eRvVa.net] シートに書き出すととピポットにできるから ピポットなら何重にも次元が増やせるし 処理もはやい ピポットとvbaを組み合わせると、 けっこうはやい
168 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 08:02:59.36 ID:GLiDRYw80.net] >>165 頑張って クラスはObject指向言語だと必須だけどVBAでは無理して知ってる必要もないから気が向いたときに覚えればいいと思うよ とは言ってもクラス自体はそんなに難しいものじゃないんだけどね。よく、ひとつの纏まった機能を他のモジュールに書くよね。 あれを標準モジュールの変わりにクラスモジュールに書けばクラスの出来上がり。 後は他のオブジェクト使うときと同じようにNewして変数に入れて、変数名.メソッド名、変数名.プロパティ名とか書けば使えるよ。 どっちかっていうと考え方と使いどころに慣れるまでがちょっと大変かもね。 それ以上の多態性とかデザインパターンとかの知識を身につけるころには他の言語やってるだろうから 今そんなに深く考えることもないと思うよ。
169 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 09:30:59.12 ID:ASUPMck3M.net] >>165 VBAの範疇ならクラスは忘れてもいいと思う コンストラクタに引数も持てないし継承もできないから普通にユーザー定義型と操作ルーチンをモジュールにまとめるのとたいして変わらんし
170 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 10:08:24.05 ID:+Fv9eRvVa.net] エクセルというクラスを使いこなせば ビジネスなら十分 エクセル以上のobject作るのは無理だから なんつてセカンドオニオンでした
171 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 15:51:59.07 ID:duTza7EGd.net] 自分もクラスで挫折して今はユーザー定義型で幸せです
172 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 16:02:42.86 ID:4ha6UGTxp.net] 自分もユーザー定義にした途端お金が入って彼女が出来ました。今ではとっても幸せです。
173 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 17:05:30.13 ID:eY7Q/L5k0.net] そうかい
174 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 20:22:47.19 ID:mgDf3XRg0.net] >>170 プロパティとかコンストラクタとかあとは鯛焼きの型とかいきなり説明しだすから分かりにくいんだよな
175 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 20:23:09.87 ID:mgDf3XRg0.net] 最初はクラス内の変数と関数だけでプロシージャ内のコードがこれだけ簡潔書けるようになります程度でいいのに
176 名前:デフォルトの名無しさん [2021/04/10(土) 20:31:08.56 ID:u4vdYafN0.net] EXCELvbaで、クラスってどういう時に使うのでしょうか ゲームのように細かいオブジェクトが多数ある状態なら分かりますが、 表の状態になったデータだと、今ひとつピント来ないです 社員classや顧客classを作るのでしょうか
177 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 20:42:21.31 ID:r9QO1mE4M.net] 無理に使う必要は無い。 「使わなくては!」と閃く状況が来るときまで。
178 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 21:10:26.00 ID:2jN52YXT0.net] >>175 よく使うけど毎回書くのが面倒な処理がある時 DB接続とかUIAutomationとか長げぇよってやつ
179 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 21:22:16.81 ID:GLiDRYw80.net] >>175 どう使うかを決めるのも自分。 だからクラスそのものより 考え方や使いどころに慣れるまで そっちの方が大変だって言ったんだよ。 まぁ表であればあくまで俺であれば、 項目をプロパティにして 1レコードをクラスにして、 それをコレクションやディクショナリに 登録して使うよ。前記したけどね。
180 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 22:23:34.34 ID:duTza7EGd.net] オレ知ってる! クラスってニューして使うんだよな!
181 名前:デフォルトの名無しさん [2021/04/10(土) 23:22:47.33 ID:kj/emQZa0.net] エクセルでガントチャートを作りたく極力簡単な方法を探しています。 (手順が少なく、エクセル苦手でも理解しやすい) 自力で探したところ ttps://excel-master.net/cells-worksheets-control/gantt-chart-3/ の「条件付き書式でガントチャートをつくる」が一番簡単な気がしましたが より簡単な方法があったらご教授いただきたく。 windows板で尋ねようかと思いましたがエクセル専用スレが無いため 詳しい人が多そうなこのスレにお邪魔しました。
182 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 23:41:30.33 ID:KgXo78Rva.net] 要望は何回もやり直したほうがよいよ さいしょは相手も自分もよくわかってないから Ver3ぐらいでようやく完成する
183 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 00:00:57.05 ID:0+LhiyyI0.net] >>180 あ、これ、俺は苦手だわ WBS作ろうとするとどうしても 簡単に作ることより分かり易くする方に 力入れちゃうから多分そのリンク先に 載ってることよりややこしい数式にしてしまう ま、WBSなんて基本、予定線と実績線、 あと遅れそうになった時のワーニング色と 遅れた時のアラート色、 あと遅延リカバリ用の枠付けとくくらいだから 大したもんじゃないからまぁ頑張って。 こういうの作るときにもっと大事なのは 見積もりとそれに対するする人員と期間の 配分だから、そっちも任されているなら そっちに作業の80%くらい割り振って 考えた方がいいよ。
184 名前:デフォルトの名無しさん [2021/04/11(日) 02:17:20.23 ID:x6o0gjqGd.net] 馬鹿ばっかのスレ
185 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 02:27:18.88 ID:C7VIYXjZa.net] ガントチャートだとあんまり工程管理にならないんだよ やってみるとわかるけど 8割がた遅延する、というか遅れてないと進捗がわからないだよ 1、そもそもスタートしていなかった? これがいちばんおおい 2、深刻で致命的なもんだいが、見つかるとはいちばん最後 だから
186 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 10:19:59.88 ID:Gib6KHmfM.net] >>180 そのガントチャートで問題ないならそれが一番簡単だと思う ただ>>184 が言うような日程管理をしたいならもうちょい作り込むなり専用アプリを使ったほうがいい
187 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 11:13:40.17 ID:udnt6yH0p.net] 質問です 今後このスレ こう言ったEXCELのとか 旧VB6とか許容すんの? 古参なら今までどういったことが 有ったか覚えていると思うけど
188 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 11:43:22.55 ID:TwIBijR2M.net] 質問者はワークシートでの作り方はある程度想像がつくけどVBAの知識がある人ならよりスマートな方法を知っているかもしれないと考えてここで聞いたんだろうし、 それに対してワークシートの機能でできることはVBA使うよりワークシートの機能でやった方がいいってのは極めて妥当で健全な回答だろう そんなことでいちいちスレ違い警察さんが出動しなくていいよ
189 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 12:04:02.09 ID:0+LhiyyI0.net] >>187 そう 許容するのね?