Excel VBA 質問スレ Part78

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 5f2e-juJ7)2022/10/30(日) 13:43:16.31ID:6yf2E1Gz0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

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

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part77
https://mevius.5ch.net/test/read.cgi/tech/1658009255/

-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

0952デフォルトの名無しさん (スッップ Sd1f-88l+)2023/01/27(金) 09:46:51.11ID:HtuDNqBEd
全ての行に「Debug.Print TypeName(arrs)」を入れてみると何でダメかわかってくるかもね

0953デフォルトの名無しさん (ワッチョイ d3ce-Jpma)2023/01/27(金) 09:50:45.30ID:Gy/KHy720
>>951
Variant型は便利だけどVBAでは取り扱いが初心者には難しい方だと思う
昨日も変数の型のことで荒れてたけど、できるだけ適切な型を指定した方がバグになりにくい

そのまま動くようにするなら
Sub test()
  Dim arrs() As Variant
  ReDim arrs(200)
  Dim i As Long
  For i = 0 To 200
    arrs(i) = i
  Next i
End Sub

俺が推奨したい書き方は
Const arr_max = 200
Sub test()
  Dim arrs(arr_max) As Long
  Dim i As Long
  For i = 0 To arr_max
    arrs(i) = i
  Next i
End Sub

VBAじゃなくてもダメだろ

0955デフォルトの名無しさん (ワッチョイ ff02-qYbV)2023/01/27(金) 10:21:25.20ID:JeWwXD830
ありがとうございます。

>>954
JSなら。こんな感じ。
var arrs = [];
for (var i=0; i<200; i++) {
arrs[i] = i;
}

0956デフォルトの名無しさん (ワッチョイ ff02-qYbV)2023/01/27(金) 10:22:55.83ID:JeWwXD830
>>952,>>953
ありがとうございました。VBAの配列は癖が強いねえ。

0957デフォルトの名無しさん (JP 0Hff-88l+)2023/01/27(金) 10:49:30.02ID:PwZKt+DmH
古い言語だからね
仕方ないね

0958デフォルトの名無しさん (スッップ Sd1f-88l+)2023/01/27(金) 12:06:47.69ID:HtuDNqBEd
>>955のコードはarrsは配列として宣言するような代入してるけど
>>951は配列の宣言がどこにもないからね
癖というよりも単なる勘違いでしょ

0959デフォルトの名無しさん (アウアウウー Saa7-sGmE)2023/01/27(金) 15:35:27.15ID:nAK+7/AUa
0から200だと201回繰り返すのも注意

0960デフォルトの名無しさん (ワッチョイ ff02-qYbV)2023/01/27(金) 16:29:58.00ID:JeWwXD830
>>953
200個の要素数が確定されている場合ですかね。
将来配列の要素数が変わることがわかる場合、
どうなりますか。

うーん。
VBAで配列操作するより、セル関数でデータを加工していった方が早いし、
分かりやすい気がしてきた。

0961デフォルトの名無しさん (スッップ Sd1f-88l+)2023/01/27(金) 17:27:12.70ID:HtuDNqBEd
>>960
VB(VBA)の場合は配列の再定義するためのRedimというのが用意されている
Dim a(0 to 200) as long
Redim Preserve a(0 to 1000)
とすることで0から200までの値を保証して0から1000までの配列に拡張ができる
まあ正解なんて1つじゃないんだから自分にしっくりくる作り方でいいと思うけどね

あと細かいようだけど>>955の「for (var i=0; i<200; i++) {」は
VBの質問に合わせるなら「i<=200」が正しいんじゃない?

0962デフォルトの名無しさん (スプッッ Sd1f-aTb4)2023/01/27(金) 17:38:42.59ID:EY8clDJJd
>>960
DimRedimは先に回答した人がいるから

>VBAで配列操作するより、セル関数でデータを加工していった方が早いし、
>分かりやすい気がしてきた。

用途にもよるが分かりやすさとしては間違いなくそう
VBA分からないやつでもどんな操作をしているか分かるのはでかいし
特異なケースのテストもわりと少ない手間で試せる

データの成形入れ替え並び替えは全部関数でやって
そうすると関数の参照先シートを変更する度に重くなるから
マクロでは関数が入ったブックの呼び出しと
操作するデータを参照先シートにコピペする作業を任せる

こんなやり方もあり
一応配列格納のほうがいちいちセルの読み取りしない分速いことは速いが
VBAで書き出す手間とエラーチェックの手間と
仕事ならそれを誰かに引き継ぐことを考えると…って感じ

0963デフォルトの名無しさん (ワッチョイ ff02-qYbV)2023/01/27(金) 17:55:20.59ID:JeWwXD830
ありがとうございます。
そうですね。「i<=200」が正しいです。

要素数をいちいち定義したり再定義しないといけないのは
ちょっと不便ですね。自分でも他の方法ないか調べてみます。



データとして直接見えるというのが、セル関数の良さですね。
VBAの配列だと中のデータ見るのに手間かかる。


参考になりました。みなさんありがとうございました。

0964デフォルトの名無しさん (ワッチョイ ff42-JXhU)2023/01/27(金) 19:38:09.77ID:FOQwFQw10
別に要素数が不確定ならそれなりの組み方があるけどな

0965デフォルトの名無しさん (ワントンキン MM27-D/BS)2023/01/27(金) 20:25:55.36ID:uIWhZEdtM
相手にしたら負け

0966デフォルトの名無しさん (ワッチョイ cfda-88l+)2023/01/27(金) 21:37:57.80ID:DxN0bpvv0
勝ち負けの基準がわからない

0967デフォルトの名無しさん (ワントンキン MMe6-yaFQ)2023/01/28(土) 02:38:02.20ID:I1dsnIs2M
わかった気で勘違いしている馬鹿の間違いや馬鹿さ加減を指摘したら泥沼になるだけだから相手にしたらいかんということだよ
零細企業のアレとか

0968951 (ワッチョイ 9a02-5T4A)2023/01/28(土) 03:06:54.86ID:cCrz+GwL0
つまり、>>965を相手にしてはならんということすね。
ありがとう。

0969デフォルトの名無しさん (ワッチョイ 3619-GWjr)2023/01/28(土) 06:32:52.50ID:hxz/by/q0
>>963
まぁScripting.DictionaryかCollectionでも使えば?
二次元配列的な使い方をしたいならついでにクラスのお勉強もしておけばいい。
他にもRecordsetを使うという手もある。

0970デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 07:04:12.75ID:dWzZ2QT5r
>>967
結構、俺のこと好き?
匿名掲示板において個人を認識してもらえるのは書込み冥利に尽きるよ

愛情の反対は無関心だからな

0971デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 07:56:23.07ID:mBQ16TA8r
愛される零細おじさんでつ

自分の業務をEXCELでメニュー作ってボタン一つで飛ぶようにしてるんですが
例えばEXCELにみずほ銀行のアイコンを貼り付けて押せばみずほ銀行のEB画面に飛んだり
売掛金回収ならボタン押せば売掛金管理のファイルを読み込んだり
流石に他のソフトを起ち上げたりはVBAでも無理ですよね?
おっPythonとかなら出来るんですか?

0972デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 08:00:10.68ID:mBQ16TA8r
RPAツールを使えば良いのか。。

0973デフォルトの名無しさん (ワッチョイ 3619-GWjr)2023/01/28(土) 08:01:55.27ID:hxz/by/q0
まーた
RUBY信者の成りすましか・・・

0974デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 08:04:56.16ID:mBQ16TA8r
ん?
RUBYを調べれば良い?

0975デフォルトの名無しさん (オッペケ Sr3b-IFrW)2023/01/28(土) 08:20:41.12ID:KGu/MZwKr
shell

0976デフォルトの名無しさん (ワッチョイ a75f-cdcZ)2023/01/28(土) 10:13:10.69ID:yr1CASjB0
>>971
EB画面は知らんがスクレイピングじゃだめなのか?
売掛金のファイルがcsvならパワークエリで取り込めばいいと思う

0977デフォルトの名無しさん (ワッチョイ 5fda-2biX)2023/01/28(土) 10:23:25.23ID:/lutP43W0
ハイパーリンクを調べても、それじゃ無い って結論に至って質問してンのか?

0978デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 10:37:54.23ID:mBQ16TA8r
あ、書き方が悪かったか

愛される零細おじさんでつ

自分の業務をEXCELでメニュー作ってボタン一つで飛ぶようにしてるんですが
例えばEXCELにみずほ銀行のアイコンを貼り付けて押せばみずほ銀行のEB画面に飛んだり
売掛金回収ならボタン押せば売掛金管理のファイルを読み込んだり

以上はハイパーリンクやマクロ記録を使って実現出来てる
売掛金管理ファイルを呼び出した後は、更新ボタンを押すことでパワークエリを使った集計も実現出来てる(更新ボタンを押さたくても更新させる事は出来るがあえて更新前の数値を確認するためにそのようにしてる)

流石に他のソフトを起ち上げたりはVBAでも無理ですよね?
おっPythonとかなら出来るんですか?

0979デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 10:41:20.97ID:mBQ16TA8r
要するに販売管理のパッケージソフトや会計のパッケージソフトを起動させて全自動を追求したくなったという質問です

例えばEPSONの会計ソフトなら定番の資料は自動的に出力出来るのは知ってるが、今使ってるのは毎回、手作業でボタン押さないと出力出来ないんだよね

0980デフォルトの名無しさん (ワッチョイ 5fda-2biX)2023/01/28(土) 10:57:57.78ID:/lutP43W0
ファイルの意味判ってンのか? 基本のキが欠落してるような
そして、そんな奴が改悪し続けてるExcel Book 数年後に後任に引き継がれて「なんだよ、これ」に成り果てる
そもそも、上司に了解得ているのか?社内のコンプラどうなってんだ おれがコンプラか 社内規定の意味でのコンプラだが

0981デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 11:00:07.10ID:mBQ16TA8r
>>980
お前は毎回理解力が無いな

既に先人が中途半端な仕組みを作ってるからそこに出力を合わせる事を考えてる
このやり方は後任には引き継がない

前任者の手作業を教えるq

0982デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 11:01:11.80ID:mBQ16TA8r
>>977
この時点で読み違いしてるやん
会社でお荷物だろw

0983デフォルトの名無しさん (ワッチョイ 5fda-2biX)2023/01/28(土) 11:45:05.56ID:/lutP43W0
いけね、ついうっかり980踏んでた
無理だから安価指定しないけど、誰かお願いします

0984デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 11:46:26.88ID:mBQ16TA8r
>>983
分かった

0985デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 11:47:07.68ID:mBQ16TA8r
はい建てた
Excel VBA 質問スレ Part79
https://mevius.5ch.net/test/read.cgi/tech/1674874007/

0986デフォルトの名無しさん (ワッチョイ 0b01-hj3w)2023/01/28(土) 11:58:33.98ID:NqcfPhRT0
>>982
お前は他のソフトを立ち上げることとそのソフトのボタンを押すことの区別もついてない時点で>>977以上のお荷物だろ
就職してるかどうかは知らんがw

0987デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 12:00:37.97ID:XR4zA44Nr
>>986
は?
ボタンはEXCEL上で作った奴の話だぞ?
ソフトのアイコンクリックじゃないぞ?

0988デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 12:01:58.62ID:XR4zA44Nr
あ、ハイパーリンクでソフトの起動まで出来るのか
それは失礼しますた

0989デフォルトの名無しさん (ワッチョイ 0b01-hj3w)2023/01/28(土) 12:03:14.15ID:NqcfPhRT0
>>987
EPSONの会計ソフトの話だろ
> 例えばEPSONの会計ソフトなら定番の資料は自動的に出力出来るのは知ってるが、今使ってるのは毎回、手作業でボタン押さないと出力出来ないんだよね
そもそもExcelのボタンの話ならそのボタンに紐づいてるルーチン呼び出せばいいだけだし

0990デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 12:03:52.20ID:XR4zA44Nr
となると、そのソフトでダイレクトに帳票印刷のEXEファイルがあるならそれをリンクさせれば良いのか

分かったありがと

0991デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 12:05:06.01ID:XR4zA44Nr
>>989
いやEPSONは前職で使ってた奴
でも今のもその実行ファイルを直接起ち上げれば行けるね

0992デフォルトの名無しさん (ワッチョイ 0b01-hj3w)2023/01/28(土) 12:06:35.27ID:NqcfPhRT0
>>988
ハイパーリンクでなくても>>975が書いてるShell関数で任意のソフトを起動できる
起動だけならな
https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/shell-function
人をお荷物呼ばわりするレベルにないぞ

0993デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 12:06:36.37ID:XR4zA44Nr
こりゃEXCELだけでかなりの事は出来るな

0994デフォルトの名無しさん (ワッチョイ 0b01-hj3w)2023/01/28(土) 12:07:46.42ID:NqcfPhRT0
>>991
お前の前職なんて知らんがな
とにかくそう言うことをやりたかったんだろ
としか受け取れないわ

0995デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 12:09:07.22ID:XR4zA44Nr
でも一般のアプリケーションてその実行ファイルがどれか公開してる?
あ、アプリの動作を監視してるファイルを見れば良いのか?

0996デフォルトの名無しさん (ワッチョイ 0b01-hj3w)2023/01/28(土) 12:09:25.98ID:NqcfPhRT0
To: 各位

無能の働き者がワッチョイ無しで次スレ立てちまったんだがどうする?
ワッチョイありで立て直す?

0997デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 12:10:22.95ID:XR4zA44Nr
>>996
俺のAIが自動的に削除してたわw

0998デフォルトの名無しさん (ワッチョイ 0b01-hj3w)2023/01/28(土) 12:10:26.33ID:NqcfPhRT0
>>995
> でも一般のアプリケーションてその実行ファイルがどれか公開してる?
そんなことも調べられないならすっぱり諦めるなり人に頼むなりしなよ

0999デフォルトの名無しさん (ワッチョイ 9aa4-I2zm)2023/01/28(土) 12:12:38.73ID:UjlIZ1Ov0
Excel VBA 質問スレ Part79(ワッチョイあり)
http://mevius.5ch.net/test/read.cgi/tech/1674875532/

1000デフォルトの名無しさん (オッペケ Sr3b-O9ZV)2023/01/28(土) 12:13:39.19ID:XR4zA44Nr
>>998
タスクマネージャーの監視で良いのか?

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 89日 22時間 30分 23秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。