!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
Excel VBA 質問スレ Part70
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ b6da-6NWR)
2021/03/18(木) 22:08:43.71ID:jtngtgXU0718デフォルトの名無しさん (ワッチョイ be8e-wmZf)
2021/05/08(土) 01:17:43.20ID:xwL6HEYY0719デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 01:46:00.09ID:PaQQNn710 >>718
どれもこう、誰も使わなくなってから「あ、そういやなくなってたんだ〜。D言語(だぶりゅー)なんてあったな〜」程度だけど、
rubyに関してはこの狂信者だか超アンチが一強で荒らし回っていて強制終了させている
終わり目の言語に止めをさすとか、こんなん後にも先にもないだろうw
どれもこう、誰も使わなくなってから「あ、そういやなくなってたんだ〜。D言語(だぶりゅー)なんてあったな〜」程度だけど、
rubyに関してはこの狂信者だか超アンチが一強で荒らし回っていて強制終了させている
終わり目の言語に止めをさすとか、こんなん後にも先にもないだろうw
720デフォルトの名無しさん (ワッチョイ be8e-wmZf)
2021/05/08(土) 05:21:49.11ID:xwL6HEYY0 >>719
そういう意味なら納得
そういう意味なら納得
721デフォルトの名無しさん (アウウィフ FF1f-gUNg)
2021/05/08(土) 08:40:58.17ID:Wz5DhM+2F >>710
ありがとうございます。
ふとした疑問なんですが、基本データベースからの
処理が多い場合は、vbaよりもsql勉強した方がいいのでしょうか。
今vbaを一生懸命勉強している最中ですが、効率の悪いのかなって思ってしまって
ありがとうございます。
ふとした疑問なんですが、基本データベースからの
処理が多い場合は、vbaよりもsql勉強した方がいいのでしょうか。
今vbaを一生懸命勉強している最中ですが、効率の悪いのかなって思ってしまって
722デフォルトの名無しさん (ワッチョイ 2ae6-YEtS)
2021/05/08(土) 08:47:24.17ID:YWSmrfQq0 Excel Access使うならVBAは必須
データベース使うならSQLは必須
当たり前のことですね
データベース使うならSQLは必須
当たり前のことですね
723デフォルトの名無しさん (ワントンキン MMda-1ORs)
2021/05/08(土) 09:07:14.40ID:L4NnuIXtM 何するにしてもVBAは別に必須ではない
データ処理やプログラミングをするほぼ全ての人にとってSQLは必須
データ処理やプログラミングをするほぼ全ての人にとってSQLは必須
724デフォルトの名無しさん (アウウィフ FF1f-gUNg)
2021/05/08(土) 09:40:04.43ID:Wz5DhM+2F 初歩的な質問ばかりですみませんでした(-_-;)
私自身パソコンが苦手なので、せめてvbaを身に着けようと思いましたが・・・
vba sql どちらも難しそうですネ
私自身パソコンが苦手なので、せめてvbaを身に着けようと思いましたが・・・
vba sql どちらも難しそうですネ
725デフォルトの名無しさん (ワッチョイ 6a4f-sv8/)
2021/05/08(土) 09:58:17.60ID:Z/jAVLJW0 >>721
>ふとした疑問なんですが、基本データベースからの
>処理が多い場合は、vbaよりもsql勉強した方がいいのでしょうか。
それはそうなんだけど
あくまで俺の場合はだけど
SQLをまともに勉強した記憶がない。
まぁ必要にかられたとき
必要な分だけ調べて覚えれば
基本部分は十分追いつけるものって
ことなんだろうな
>ふとした疑問なんですが、基本データベースからの
>処理が多い場合は、vbaよりもsql勉強した方がいいのでしょうか。
それはそうなんだけど
あくまで俺の場合はだけど
SQLをまともに勉強した記憶がない。
まぁ必要にかられたとき
必要な分だけ調べて覚えれば
基本部分は十分追いつけるものって
ことなんだろうな
726デフォルトの名無しさん (アウウィフ FF1f-gUNg)
2021/05/08(土) 10:18:13.28ID:Wz5DhM+2F vbaってどれくらいできたら、まあまあ使える人になりますか"(-""-)"
私は下のやつでもう混乱しています・・・これは基本なんですかね?
Sub ()
Dim i As Long
Dim ixR As Long
Dim ixC As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Worksheets("練習15")
Set ws2 = Worksheets("練習15_回答")
ws2.Range("A1").CurrentRegion.Offset(1, 1).ClearContents
With ws1
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
ixC = 2
Do Until ws2.Cells(1, ixC) = .Cells(i, 1)
ixC = ixC + 1
Loop
ixR = 2
Do Until ws2.Cells(ixR, 1) = .Cells(i, 2)
ixR = ixR + 1
Loop
ws2.Cells(ixR, ixC) = ws2.Cells(ixR, ixC) + .Cells(i, 3)
Next
End With
End Sub
私は下のやつでもう混乱しています・・・これは基本なんですかね?
Sub ()
Dim i As Long
Dim ixR As Long
Dim ixC As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Worksheets("練習15")
Set ws2 = Worksheets("練習15_回答")
ws2.Range("A1").CurrentRegion.Offset(1, 1).ClearContents
With ws1
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
ixC = 2
Do Until ws2.Cells(1, ixC) = .Cells(i, 1)
ixC = ixC + 1
Loop
ixR = 2
Do Until ws2.Cells(ixR, 1) = .Cells(i, 2)
ixR = ixR + 1
Loop
ws2.Cells(ixR, ixC) = ws2.Cells(ixR, ixC) + .Cells(i, 3)
Next
End With
End Sub
727デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 10:19:00.10ID:PaQQNn710 >>724
事務作業で死ぬほど役に立つのはvba。事務だけじゃなく営業でもちょっとした所で使えるなら、事務作業はほぼゼロになるだろう
sqlは使うべき時が来れば、その時に勉強すれば良い。その時に使うのはselectとjoinのはずだ
事務作業で死ぬほど役に立つのはvba。事務だけじゃなく営業でもちょっとした所で使えるなら、事務作業はほぼゼロになるだろう
sqlは使うべき時が来れば、その時に勉強すれば良い。その時に使うのはselectとjoinのはずだ
728デフォルトの名無しさん (アウウィフ FF1f-gUNg)
2021/05/08(土) 10:23:23.79ID:Wz5DhM+2F >>727
なりほど( *´艸`)
私は事務ですけど、正直vbaもsqlも使わなくても力技でどうにかなってきました。
関数とピポットで・・・
でも時短でvbaしようと思ってやってるんですが、どっちがいいか正直よくわかってません。
勉強しないと
なりほど( *´艸`)
私は事務ですけど、正直vbaもsqlも使わなくても力技でどうにかなってきました。
関数とピポットで・・・
でも時短でvbaしようと思ってやってるんですが、どっちがいいか正直よくわかってません。
勉強しないと
729デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 10:23:26.16ID:PaQQNn710 >>726
読みづらいし色々詰め込みすぎ。個人的にも使わないものが多い
・宣言(dim〜)
・with
・do until
はそうそう使わない
>For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
も
>最終行=Cells(.Rows.Count, 1).End(xlUp).Row
>For i = 2 To .最終行
と分けたほうが読みやすい
for、if、setが使えれば大体良いと思う
読みづらいし色々詰め込みすぎ。個人的にも使わないものが多い
・宣言(dim〜)
・with
・do until
はそうそう使わない
>For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
も
>最終行=Cells(.Rows.Count, 1).End(xlUp).Row
>For i = 2 To .最終行
と分けたほうが読みやすい
for、if、setが使えれば大体良いと思う
730デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 10:25:26.96ID:PaQQNn710 >>728
毎回同じピボットを作っているなら、ピボットをvbaでボタン一つで作ってみるとか
普段やってることを自動化するとすぐに覚えられるよ
※ただ、ピボットマクロはかなり大変なのマクロの記録を全力で使ったほうが良い
毎回同じピボットを作っているなら、ピボットをvbaでボタン一つで作ってみるとか
普段やってることを自動化するとすぐに覚えられるよ
※ただ、ピボットマクロはかなり大変なのマクロの記録を全力で使ったほうが良い
731デフォルトの名無しさん (テテンテンテン MMe6-1ORs)
2021/05/08(土) 10:25:49.52ID:7sae8zS6M 質問者は現に今使うべき時に来ているのに何を言っているのか
実際SQLで一瞬でできることを知らないままVBAで>>726みたいな暗号を延々血反吐吐きながら垂れ流してる可哀想なVBAerは多いし、質問者もここでSQLを使えと言われていなければそうなっていただろう
SQLはVBAよりずっと簡単だから、あまりVBAを使い込む前にSQLは一通りやった方がいい
実際SQLで一瞬でできることを知らないままVBAで>>726みたいな暗号を延々血反吐吐きながら垂れ流してる可哀想なVBAerは多いし、質問者もここでSQLを使えと言われていなければそうなっていただろう
SQLはVBAよりずっと簡単だから、あまりVBAを使い込む前にSQLは一通りやった方がいい
732デフォルトの名無しさん (アウウィフ FF1f-gUNg)
2021/05/08(土) 10:26:05.17ID:Wz5DhM+2F733デフォルトの名無しさん (アウウィフ FF1f-gUNg)
2021/05/08(土) 10:29:56.46ID:Wz5DhM+2F734デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 10:30:50.49ID:PaQQNn710735デフォルトの名無しさん (ワッチョイ 7eda-jjtP)
2021/05/08(土) 11:21:40.14ID:SHLAkmOY0 前から気になっていたんだけどセルを1つ選んで右クリックして挿入や削除するときのメニューで
セルの削除なのに「ファイルの削除」って表示されるの俺だけ?
セルの削除なのに「ファイルの削除」って表示されるの俺だけ?
736デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 11:36:39.10ID:PaQQNn710 >>735
yes
yes
737デフォルトの名無しさん (ワッチョイ 6a01-wt3T)
2021/05/08(土) 11:50:01.75ID:zkiV4DEW0 >>732
> 私が使ってるサイトdimは全部に使ってました・・・
それで正しい
今時コードの先頭にOption Explicitが入ってないサイトは無視していいレベル
ID:PaQQNn710はレベルの低いドヤ顔爺だから話半分に受け流しておけばいい
> 私が使ってるサイトdimは全部に使ってました・・・
それで正しい
今時コードの先頭にOption Explicitが入ってないサイトは無視していいレベル
ID:PaQQNn710はレベルの低いドヤ顔爺だから話半分に受け流しておけばいい
738デフォルトの名無しさん (ブーイモ MMd6-gxHo)
2021/05/08(土) 12:39:16.21ID:wIqzNMvOM ここはドヤ顔爺の巣窟ですよ。
子供は他所で遊んだ方が良いですよ。
子供は他所で遊んだ方が良いですよ。
739デフォルトの名無しさん (ワッチョイ 2301-gUNg)
2021/05/08(土) 13:17:27.11ID:SUb7u/UA0 私の勉強方法が合っているのか分からなくなってきました( *´艸`)
740デフォルトの名無しさん (ワッチョイ 2301-gUNg)
2021/05/08(土) 13:18:27.12ID:SUb7u/UA0 ID変わっちゃったけどdimのモノです・・・
741デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 13:36:12.98ID:75Tkj6otd >>740
dimもwithもdo untilも安心して使っていいよ
ただ必ずしも関数の最初にdimをまとめておく必要はないのでiとかは必要になったときに宣言するのでも大丈夫
あとws1みたいな連番の変数よりは目的を具体的に表した変数名の方が良い
dimもwithもdo untilも安心して使っていいよ
ただ必ずしも関数の最初にdimをまとめておく必要はないのでiとかは必要になったときに宣言するのでも大丈夫
あとws1みたいな連番の変数よりは目的を具体的に表した変数名の方が良い
742デフォルトの名無しさん (ワッチョイ 2301-gUNg)
2021/05/08(土) 13:49:53.06ID:SUb7u/UA0743デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 14:01:23.31ID:75Tkj6otd >>742
綺麗か綺麗でないかって尺度だとなんともだけど丁寧に書こうとしてるのは伝わるので応援したい
パフォーマンスとか考えるともう少し良くできそうなのと、個人的には関数を小さく分けた方が見通しが良くなるかもしれない(ちょっと曖昧な表現になってすまない)
綺麗か綺麗でないかって尺度だとなんともだけど丁寧に書こうとしてるのは伝わるので応援したい
パフォーマンスとか考えるともう少し良くできそうなのと、個人的には関数を小さく分けた方が見通しが良くなるかもしれない(ちょっと曖昧な表現になってすまない)
744デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 14:50:38.57ID:PaQQNn710 俺ならこうなるかなぁ
ただ書いてて思ったけど、index(match(),match())で済むような?
Sub () foo
Set 元シート = Worksheets("練習15")
Set 転記先シート = Worksheets("練習15_回答")
転記先シート.Range("A1:B2").ClearContents
For i = 2 To 元シート.Cells(元シート.Rows.Count, 1).End(xlUp).Row
転記列 = 2
Do Until 転記先シート.Cells(1, 転記列) = 元シート.Cells(i, 1)
転記列 = 転記列 + 1
Loop
転記行 = 2
Do Until 転記先シート.Cells(転記行, 1) = 元シート.Cells(i, 2)
転記行 = 転記行 + 1
Loop
転記先シート.Cells(転記行, 転記列) = 転記先シート.Cells(転記行, 転記列) + 元シート.Cells(i, 3)
Next
End Sub
ただ書いてて思ったけど、index(match(),match())で済むような?
Sub () foo
Set 元シート = Worksheets("練習15")
Set 転記先シート = Worksheets("練習15_回答")
転記先シート.Range("A1:B2").ClearContents
For i = 2 To 元シート.Cells(元シート.Rows.Count, 1).End(xlUp).Row
転記列 = 2
Do Until 転記先シート.Cells(1, 転記列) = 元シート.Cells(i, 1)
転記列 = 転記列 + 1
Loop
転記行 = 2
Do Until 転記先シート.Cells(転記行, 1) = 元シート.Cells(i, 2)
転記行 = 転記行 + 1
Loop
転記先シート.Cells(転記行, 転記列) = 転記先シート.Cells(転記行, 転記列) + 元シート.Cells(i, 3)
Next
End Sub
745デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 14:53:21.72ID:PaQQNn710 間違えた、こうか
Sub () foo
Set 元シート = Worksheets("練習15")
Set 転記先シート = Worksheets("練習15_回答")
転記先シート.Range("A1:B2").ClearContents
For i = 2 To 元シート.Cells(元シート.Rows.Count, 1).End(xlUp).Row
列 = 2
Do Until 転記先シート.Cells(1, 列) = 元シート.Cells(i, 1)
列 = 列 + 1
Loop
行 = 2
Do Until 転記先シート.Cells(行, 1) = 元シート.Cells(i, 2)
行 = 行 + 1
Loop
転記先シート.Cells(行, 列) = 転記先シート.Cells(行, 列) + 元シート.Cells(i, 3)
Next
End Sub
>742
慣れてない感じは凄い伝わる
コードは後で見直してすぐに内容が分かるように書いたほうが良い。コメントを入れまくるんだ
Sub () foo
Set 元シート = Worksheets("練習15")
Set 転記先シート = Worksheets("練習15_回答")
転記先シート.Range("A1:B2").ClearContents
For i = 2 To 元シート.Cells(元シート.Rows.Count, 1).End(xlUp).Row
列 = 2
Do Until 転記先シート.Cells(1, 列) = 元シート.Cells(i, 1)
列 = 列 + 1
Loop
行 = 2
Do Until 転記先シート.Cells(行, 1) = 元シート.Cells(i, 2)
行 = 行 + 1
Loop
転記先シート.Cells(行, 列) = 転記先シート.Cells(行, 列) + 元シート.Cells(i, 3)
Next
End Sub
>742
慣れてない感じは凄い伝わる
コードは後で見直してすぐに内容が分かるように書いたほうが良い。コメントを入れまくるんだ
746デフォルトの名無しさん (ワッチョイ 2301-gUNg)
2021/05/08(土) 15:03:51.26ID:SUb7u/UA0 みなさんご丁寧にありがとうございます_(._.)_
vbaを使う人はみなさん頭がいいですね・・・自信ないなーww
sql含めてやってみます。。
vbaを使う人はみなさん頭がいいですね・・・自信ないなーww
sql含めてやってみます。。
747デフォルトの名無しさん (ワッチョイ 6a01-wt3T)
2021/05/08(土) 15:07:11.21ID:zkiV4DEW0748デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 15:13:57.96ID:75Tkj6otd 入れまくれってのは程度にもよるけど読み返すときの手がかりとしてのコメントは残しておいた方がいい
749デフォルトの名無しさん (ワッチョイ be8e-gIfd)
2021/05/08(土) 15:16:34.30ID:xwL6HEYY0 ID変える、しつこく何度も質問する、わざとらしいへりくだり
いつものあいつだろうが
いつものあいつだろうが
750デフォルトの名無しさん (ワッチョイ 2301-gUNg)
2021/05/08(土) 15:26:39.50ID:SUb7u/UA0751デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/08(土) 17:03:41.13ID:6tENHryO0 >>729
VB6の開発プロジェクトやってたけど
どのソースコードでもdimもwithもdo untilも当然のように使ってたぞ
お前が使わないってだけじゃないの?
あとOption Explicitつけないのはバグの原因になるから推奨できない。
VB6の開発プロジェクトやってたけど
どのソースコードでもdimもwithもdo untilも当然のように使ってたぞ
お前が使わないってだけじゃないの?
あとOption Explicitつけないのはバグの原因になるから推奨できない。
752デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 18:11:49.59ID:jYvDj1vcd VBScript(WSH)はDimないし使わないのも自然だけどVBAはありがたくOption ExplicitもDimも使うな
753デフォルトの名無しさん (ワッチョイ 9f5f-Fl7F)
2021/05/08(土) 18:14:06.32ID:IhtMBIEH0 俺は変数宣言するけどoption付けない事も多いな
自分だけのちょんプロとか
自分だけのちょんプロとか
754デフォルトの名無しさん (スッップ Sd8a-HO9V)
2021/05/08(土) 19:23:35.24ID:vdqKmiMMd >>750
この文章でモロバレ
この文章でモロバレ
755デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb)
2021/05/08(土) 20:01:04.28ID:+76Iryda0 With使わないのは、C#に採用されなかったように最近の流れだからまあいい
Doも、ループはWhileに統一しろってルールならまあいい
Dim使わんってどういうことだ?
まさか変数の宣言しないってことじゃないよな
Option Explicitなんて自分で書くことまずないが、真っ先に変更するオプションじゃないのか
Doも、ループはWhileに統一しろってルールならまあいい
Dim使わんってどういうことだ?
まさか変数の宣言しないってことじゃないよな
Option Explicitなんて自分で書くことまずないが、真っ先に変更するオプションじゃないのか
756デフォルトの名無しさん (ワッチョイ ca3d-ZHNQ)
2021/05/08(土) 20:07:27.25ID:cJeFkg/00 変数の宣言しないと型違いのエラーとか検知しづらくなるし、
コードの中で比較が出てきた時に自作関数の結果か変数の値かどっちと比較してるのかわかりづらくなったり…
とにかく色々エラー回避とかメンテナンス性とか考えて変数宣言しないのはナシよりのナシかと
コードの中で比較が出てきた時に自作関数の結果か変数の値かどっちと比較してるのかわかりづらくなったり…
とにかく色々エラー回避とかメンテナンス性とか考えて変数宣言しないのはナシよりのナシかと
757デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/08(土) 20:35:45.94ID:QG+os5rrH 基礎ができてなくて、型の使い分けがわからなくて全部Variantで書いてる人
758デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 21:04:16.49ID:PaQQNn710 >>755
しない
以下でエラーが起きないって時点で俺はアホらしくなって宣言をやめた
Sub foo()
Dim a As String
Dim b As Long
a = "1"
b = 2
Debug.Print a + b '3が出るぞ良かったな
End Sub
しない
以下でエラーが起きないって時点で俺はアホらしくなって宣言をやめた
Sub foo()
Dim a As String
Dim b As Long
a = "1"
b = 2
Debug.Print a + b '3が出るぞ良かったな
End Sub
759デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 21:06:38.67ID:PaQQNn710 宣言しないと何ができなくなるのか、何を間違えるのかが分からん
760デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/08(土) 21:30:00.76ID:6tENHryO0 >>758
それは暗黙の型変換が行われるから。
変数の宣言をしたほうがいいのは以下のような場合にエラーにできるから。
public sub foo()
hensu = 1
Debug.Print hansu + 1
end sub
2が出力されることを期待しているが、この場合1が出力される。(変数名の打ち間違い)
それは暗黙の型変換が行われるから。
変数の宣言をしたほうがいいのは以下のような場合にエラーにできるから。
public sub foo()
hensu = 1
Debug.Print hansu + 1
end sub
2が出力されることを期待しているが、この場合1が出力される。(変数名の打ち間違い)
761デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/08(土) 21:36:40.65ID:6tENHryO0 VB6やVBAは型が弱いので、変数名の先頭にintやlng、str等をつけてデータ型がわかるようにするのが一般的だと思ってる。
この場合だと
Dim intHensu As Integer
の宣言を入れておくべき。
この場合だと
Dim intHensu As Integer
の宣言を入れておくべき。
762デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 21:37:56.47ID:PaQQNn710763デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 21:39:48.07ID:PaQQNn710 >>761
変数名見れば何入ってるか分からないか?
変数名見れば何入ってるか分からないか?
764デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/08(土) 21:43:37.13ID:6tENHryO0 >>763
ごめん一般的といったのは、自分がそう思ってただけなので、実際はそうじゃないかも。
ごめん一般的といったのは、自分がそう思ってただけなので、実際はそうじゃないかも。
765デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 21:45:17.15ID:jYvDj1vcd 何でもかんでもVariant型だと余計にメモリ食ったり速度面で劣るんじゃなかったっけか
766デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/08(土) 21:52:57.44ID:QG+os5rrH 簡単なマクロならメモリも速度もほとんど気にしなくていい
そういうのが気になってきてから速くする方法を勉強してもいいと思う
そういうのが気になってきてから速くする方法を勉強してもいいと思う
767デフォルトの名無しさん (ワッチョイ ca3d-wPc9)
2021/05/08(土) 21:55:44.85ID:cJeFkg/00 文字列 String
整数 Long
小数以下も必要 Single
日付 Date
Setが必要なもの Object
なんでも Variant
初心者ならこれくらいの使い分け出来てたら十分だから宣言はして
整数 Long
小数以下も必要 Single
日付 Date
Setが必要なもの Object
なんでも Variant
初心者ならこれくらいの使い分け出来てたら十分だから宣言はして
768デフォルトの名無しさん (アウアウウー Sa1f-ymZB)
2021/05/08(土) 21:57:26.01ID:L/dDaofga 大量のデータをがばっと取るときはsql
とってきたデータをチマチマ加工したいときはVBA
二刀流がべだー
とってきたデータをチマチマ加工したいときはVBA
二刀流がべだー
769デフォルトの名無しさん (アウアウウー Sa1f-ymZB)
2021/05/08(土) 22:02:54.21ID:L/dDaofga 変数宣言でいちばん重要なのは
パブリック変数なのか
プライベート変数なのかだよ
型はそんなに気にしなくてよいから
3文字以下ならプライベート、パブリックなら5文字以上にする
パブリック変数なのか
プライベート変数なのかだよ
型はそんなに気にしなくてよいから
3文字以下ならプライベート、パブリックなら5文字以上にする
770デフォルトの名無しさん (ワッチョイ 6a4f-sv8/)
2021/05/08(土) 22:18:22.12ID:Z/jAVLJW0 >>769
いや、そもそも
外部とのやり取りはプロパティで行わないと
ブレイクポイント等仕掛けて
どこから呼ばれたか分かり辛くなることを考えると
変数をPublicで宣言する機会はまず無くなるだろう。
もちろんこのプロパティと言うのは概念的なものを含めて
Javaの様に関数と同じ様に設定することも含めるけど。
そうすればパブリック、プライベートの
判断のために変数名の考慮を行う必要も無くなる。
良かったな。
いや、そもそも
外部とのやり取りはプロパティで行わないと
ブレイクポイント等仕掛けて
どこから呼ばれたか分かり辛くなることを考えると
変数をPublicで宣言する機会はまず無くなるだろう。
もちろんこのプロパティと言うのは概念的なものを含めて
Javaの様に関数と同じ様に設定することも含めるけど。
そうすればパブリック、プライベートの
判断のために変数名の考慮を行う必要も無くなる。
良かったな。
771デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 22:31:52.03ID:PaQQNn710772デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb)
2021/05/08(土) 23:54:10.02ID:+76Iryda0773デフォルトの名無しさん (ワッチョイ 6bac-91/Y)
2021/05/09(日) 00:48:39.55ID:vQpWnC+C0774デフォルトの名無しさん (ワッチョイ 7eda-K+t/)
2021/05/09(日) 01:41:49.82ID:SiihAWPs0 variantにすると型間違いでエラーがでないので
やはり推奨できない
やはり推奨できない
775デフォルトの名無しさん (ワッチョイ 2e02-X9JK)
2021/05/09(日) 02:15:37.67ID:vzYu7ze/0 知恵を貸してください
ある可変長2次元配列のデータについて
各列のデータから1つずつ抽出した文字列の組み合わせを出力したいと考えています
例えばArray(2,2)のデータが以下だとします
Array(0,0)="いちご"
Array(0,1)="みかん"
Array(0,2)=""
Array(1,0)="あまい"
Array(1,1)="すっぱい"
Array(1,2)="にがい"
Array(2,0)="100円"
Array(2,1)="200円"
Array(2,2)=""
この場合
「いちご,あまい,100円」「いちご,あまい,200円」「みかん,すっぱい,100円」
などの
空白を除く2*3*2=12通りの組み合わせ全てを抽出したいのです
(抽出先はシートでも配列でも何でも良いです)
そして実際にはこの配列をArray(x,y)とすると
xとyは1以上の自然数で不定です
配列の行数が固定長であれば各行において行の数だけFor文でループの中にループを入れれば良いのでしょうが
配列の行数が1以上の不定数の場合にどうすれば良いか思い付きません
vbaというよりアルゴリズムの問題かも知れませんが
良い方法はあるのでしょうか
ある可変長2次元配列のデータについて
各列のデータから1つずつ抽出した文字列の組み合わせを出力したいと考えています
例えばArray(2,2)のデータが以下だとします
Array(0,0)="いちご"
Array(0,1)="みかん"
Array(0,2)=""
Array(1,0)="あまい"
Array(1,1)="すっぱい"
Array(1,2)="にがい"
Array(2,0)="100円"
Array(2,1)="200円"
Array(2,2)=""
この場合
「いちご,あまい,100円」「いちご,あまい,200円」「みかん,すっぱい,100円」
などの
空白を除く2*3*2=12通りの組み合わせ全てを抽出したいのです
(抽出先はシートでも配列でも何でも良いです)
そして実際にはこの配列をArray(x,y)とすると
xとyは1以上の自然数で不定です
配列の行数が固定長であれば各行において行の数だけFor文でループの中にループを入れれば良いのでしょうが
配列の行数が1以上の不定数の場合にどうすれば良いか思い付きません
vbaというよりアルゴリズムの問題かも知れませんが
良い方法はあるのでしょうか
776デフォルトの名無しさん (ワッチョイ be8e-gIfd)
2021/05/09(日) 02:26:22.29ID:qbmXU1K50 はい、いつものあいつ
777デフォルトの名無しさん (ワッチョイ eada-K+t/)
2021/05/09(日) 04:53:38.03ID:yBvaHslb0778デフォルトの名無しさん (ワッチョイ 9f5f-c52j)
2021/05/09(日) 06:11:50.07ID:Gu7b6Am40 相手しない相手しない
779デフォルトの名無しさん (アウアウウー Sa1f-ymZB)
2021/05/09(日) 08:20:21.39ID:nRlrfZeFa ワークシートをグローバル変数みたいなつかい方をする
うむ、よくある
うむ、よくある
780デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/09(日) 09:19:54.62ID:TBZcO69u0 uboundで現在の配列の最大要素番号調べて、そこまでループとかじゃないの?
そもそも配列なんて自分はあんまり使わない。redim preserveって確かかなり遅かった気がする。
そもそも配列なんて自分はあんまり使わない。redim preserveって確かかなり遅かった気がする。
781デフォルトの名無しさん (ブーイモ MMd6-O8Br)
2021/05/09(日) 09:44:03.47ID:1mWvM4p1M ReDim Preserveは1番ケツの次元しか可変に出来ねぇのがとても残念
782デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/09(日) 09:48:20.73ID:HdQWbOvH0 >>775
Sub foo()
Dim array1() As String
ReDim Preserve array1(3, 3)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(0, 2) = ""
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
array1(2, 2) = ""
For Each dim1 In array1
If dim1 <> "" Then
Debug.Print dim1
End If
Next
End Sub
vbaの動的配列は本当にめんどくさいな
Sub foo()
Dim array1() As String
ReDim Preserve array1(3, 3)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(0, 2) = ""
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
array1(2, 2) = ""
For Each dim1 In array1
If dim1 <> "" Then
Debug.Print dim1
End If
Next
End Sub
vbaの動的配列は本当にめんどくさいな
783デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/09(日) 10:05:56.73ID:Nzaho5/SH 行数、列数はUBound関数で調べられる
2次元配列の場合は
UBound(array1, 1)
UBound(array1, 2)
で、それぞれの次元の大きさが取得できる
2番目のパラメータが対象となる次元
あと、多次元配列に一気に代入するにはarray関数を次元と同じ数だけ入れ子にする方法がある
array1 = Array( _
Array("いちご", "みかん", ""), _
Array("あまい", "すっぱい", "にがい"), _
Array("100円", "200円", ""))
2次元配列の場合は
UBound(array1, 1)
UBound(array1, 2)
で、それぞれの次元の大きさが取得できる
2番目のパラメータが対象となる次元
あと、多次元配列に一気に代入するにはarray関数を次元と同じ数だけ入れ子にする方法がある
array1 = Array( _
Array("いちご", "みかん", ""), _
Array("あまい", "すっぱい", "にがい"), _
Array("100円", "200円", ""))
784デフォルトの名無しさん (ワッチョイ 2e02-X9JK)
2021/05/09(日) 10:13:55.83ID:vzYu7ze/0 ありがとうございます
ReDim Preserveの配列再定義は知っているのですが
例えば>>782のようだと
「いちご」
「みかん」
「あまい」
……
「200円」
のような2+3+2の7個出力されるだけですよね
「いちご,あまい,100円」
「いちご,あまい,200円」
「いちご,すっぱい,100円」
……
「みかん,にがい,200円」
のような2*3*2の12個を出力したいのです
行数が固定なら例えばArray(2,x)のように列数が不定でも
For i=0 To UBound Array(0,x)
For j=0 To UBound Array(1,x)
For k=0 To UBound Array(2,x)
Debug.Print Array(0,i)& "," & Array(1,i)& "," & Array(2,i)
Next
Next
Next
のようにして空白部分の例外処理を適当に入れれば良いのは分かりますが
行数が不定なので分からないというお話です
ReDim Preserveの配列再定義は知っているのですが
例えば>>782のようだと
「いちご」
「みかん」
「あまい」
……
「200円」
のような2+3+2の7個出力されるだけですよね
「いちご,あまい,100円」
「いちご,あまい,200円」
「いちご,すっぱい,100円」
……
「みかん,にがい,200円」
のような2*3*2の12個を出力したいのです
行数が固定なら例えばArray(2,x)のように列数が不定でも
For i=0 To UBound Array(0,x)
For j=0 To UBound Array(1,x)
For k=0 To UBound Array(2,x)
Debug.Print Array(0,i)& "," & Array(1,i)& "," & Array(2,i)
Next
Next
Next
のようにして空白部分の例外処理を適当に入れれば良いのは分かりますが
行数が不定なので分からないというお話です
785デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/09(日) 10:14:00.97ID:Nzaho5/SH >>775
2次元配列の要素数が不明の場合こういう書き方もできる
For i = 0 To UBound(array1)
For j = 0 To UBound(array1(i))
Debug.Print array1(i)(j)
Next j
Next i
2次元配列の要素数が不明の場合こういう書き方もできる
For i = 0 To UBound(array1)
For j = 0 To UBound(array1(i))
Debug.Print array1(i)(j)
Next j
Next i
786デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/09(日) 10:14:31.62ID:HdQWbOvH0 >>782は全然違うわ、スマン
787デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/09(日) 10:50:20.26ID:Nzaho5/SH788デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/09(日) 11:38:04.63ID:TBZcO69u0789デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/09(日) 11:47:23.05ID:Nzaho5/SH とりあえずもう一つ突っ込みたい
Preserveは不要だしパラメータも(3, 3)じゃない
ReDim array1(2, 2) が正解
>>788
ネストの深さが不定の時は再帰でやるのが一番自然だと思うよ
Preserveは不要だしパラメータも(3, 3)じゃない
ReDim array1(2, 2) が正解
>>788
ネストの深さが不定の時は再帰でやるのが一番自然だと思うよ
790デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/09(日) 11:59:36.87ID:TBZcO69u0 ごめんちょっと動作検証してたら、Uboundのとこxとyが逆だった。
Ifの中に書いてるのが、Ubound(ary1)
でForの中に書いてるのが
Ubound(ary1, 2)
ですね。
Ifの中に書いてるのが、Ubound(ary1)
でForの中に書いてるのが
Ubound(ary1, 2)
ですね。
791デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/09(日) 12:09:11.80ID:TBZcO69u0792デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/09(日) 12:10:40.52ID:Nzaho5/SH やってることは同じだけど画像だと入力が面倒だろうし、俺もほとんど同時に作っちゃってたんで貼らして
Option Explicit
Sub foo()
Dim array1() As String
ReDim array1(2, 2)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(0, 2) = ""
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
array1(2, 2) = ""
Call recloop(array1, 0, "")
End Sub
Sub recloop(array1, row1, str)
Dim col1
If row1 < UBound(array1, 2) Then
For col1 = 0 To UBound(array1, 2)
If array1(row1, col1) <> "" Then Call recloop(array1, row1 + 1, str & array1(row1, col1) & ",")
Next
Else
For col1 = 0 To UBound(array1, 2)
If array1(row1, col1) <> "" Then Debug.Print str & array1(row1, col1)
Next
End If
End Sub
Option Explicit
Sub foo()
Dim array1() As String
ReDim array1(2, 2)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(0, 2) = ""
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
array1(2, 2) = ""
Call recloop(array1, 0, "")
End Sub
Sub recloop(array1, row1, str)
Dim col1
If row1 < UBound(array1, 2) Then
For col1 = 0 To UBound(array1, 2)
If array1(row1, col1) <> "" Then Call recloop(array1, row1 + 1, str & array1(row1, col1) & ",")
Next
Else
For col1 = 0 To UBound(array1, 2)
If array1(row1, col1) <> "" Then Debug.Print str & array1(row1, col1)
Next
End If
End Sub
793デフォルトの名無しさん (ワッチョイ 2e02-X9JK)
2021/05/09(日) 12:23:48.39ID:vzYu7ze/0 ありがとうございます
再帰関数の知識は持っていたのですが
自身で再帰関数を使用したことは無かったため盲点でした
このように使用するのですね
助かりました参考にさせて頂きます
再帰関数の知識は持っていたのですが
自身で再帰関数を使用したことは無かったため盲点でした
このように使用するのですね
助かりました参考にさせて頂きます
794デフォルトの名無しさん (ワッチョイ 6a01-wt3T)
2021/05/09(日) 13:41:59.08ID:WHUEfE6G0 >>779
グローバル変数と言うよりストレージみたいなもんだと思ってる
グローバル変数と言うよりストレージみたいなもんだと思ってる
795デフォルトの名無しさん (ブーイモ MMd6-O8Br)
2021/05/09(日) 21:06:29.88ID:o10D8BaNM ReDim使うのって要素数に変数使うときじゃなかった?
数が決まってるならDim array(0 to 2, 0 to 2) As Stringで良いんだよね?
数が決まってるならDim array(0 to 2, 0 to 2) As Stringで良いんだよね?
796デフォルトの名無しさん (ワッチョイ 2a05-M0W8)
2021/05/09(日) 21:07:35.90ID:OCR3m9+L0 >>737
あなたに禿同!
あなたに禿同!
797デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/09(日) 21:47:13.65ID:HdQWbOvH0 >795
動的配列と静的配列の違いだよ
「変数」でもなければ「数が決まってる」でもなく、「後で変更するかどうか」が違う所
動的配列と静的配列の違いだよ
「変数」でもなければ「数が決まってる」でもなく、「後で変更するかどうか」が違う所
798デフォルトの名無しさん (スプッッ Sd22-jjtP)
2021/05/10(月) 01:12:41.56ID:8FNokcfwd 再帰を使わない方法でやってみた
「r行c列」の配列を「c桁のr進数」とみなしてる。とりあえず動いたけどバグあるかも
Sub Macro5()
Dim array1() As String
ReDim array1(2, 2)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
row0 = UBound(array1, 1)
col0 = UBound(array1, 2) + 1
For n = 0 To (row0 + 1) ^ col0 - 1
nn = n
s = ""
For row1 = row0 To 0 Step -1
col1 = nn Mod (row0 + 1)
nn = nn \ (row0 + 1)
If array1(row1, col1) = "" Then
s = ""
Exit For
Else
s = array1(row1, col1) & s
If row1 Then s = "," & s
End If
Next
If s <> "" Then Debug.Print s
Next
End Sub
「r行c列」の配列を「c桁のr進数」とみなしてる。とりあえず動いたけどバグあるかも
Sub Macro5()
Dim array1() As String
ReDim array1(2, 2)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
row0 = UBound(array1, 1)
col0 = UBound(array1, 2) + 1
For n = 0 To (row0 + 1) ^ col0 - 1
nn = n
s = ""
For row1 = row0 To 0 Step -1
col1 = nn Mod (row0 + 1)
nn = nn \ (row0 + 1)
If array1(row1, col1) = "" Then
s = ""
Exit For
Else
s = array1(row1, col1) & s
If row1 Then s = "," & s
End If
Next
If s <> "" Then Debug.Print s
Next
End Sub
799デフォルトの名無しさん (アウアウエー Sae2-Qnne)
2021/05/10(月) 20:50:28.57ID:6x/72ii/a そもそもの疑問で、なぜVBAは初心者向けとか言われるのでしょうか。
こんなに小難しいチマチマしたこも書かなきゃいけないのに。
全然わからん。
こんなに小難しいチマチマしたこも書かなきゃいけないのに。
全然わからん。
800デフォルトの名無しさん (ワッチョイ d35f-d7su)
2021/05/10(月) 20:50:49.81ID:GwFlyMni0 >>761
俺もハンガリアン使ってるわ
俺もハンガリアン使ってるわ
801デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/10(月) 20:53:01.66ID:2ArSfNqX0 >>775
総当りってよく考えればパワークエリでクロス結合すれば一発だろって思ったら、パワークエリにクロス結合が無かった・・・
https://www.shegolab.jp/entry/excel-macro-cross-join
accessだとアホみたいなクエリで即完成
https://i.imgur.com/moHa3bx.png
総当りってよく考えればパワークエリでクロス結合すれば一発だろって思ったら、パワークエリにクロス結合が無かった・・・
https://www.shegolab.jp/entry/excel-macro-cross-join
accessだとアホみたいなクエリで即完成
https://i.imgur.com/moHa3bx.png
802デフォルトの名無しさん (ワンミングク MMda-rYak)
2021/05/10(月) 20:55:51.32ID:/NuMOBBIM >>799
昔はプログラミングはもっと敷居が高かったんだよ
その中では、Excelさえあれば使えてUIはExcelのワークシートをそのまま利用できるという手軽さは初心者には魅力的だった
その頃の名残だね
今ではPowerAppsとかGASとかSalesforceとかもっと簡単で強力な選択肢は色々あるし、
プログラミングの勉強ならPythonとかJavaScriptの方が初学者には敷居が低い
昔はプログラミングはもっと敷居が高かったんだよ
その中では、Excelさえあれば使えてUIはExcelのワークシートをそのまま利用できるという手軽さは初心者には魅力的だった
その頃の名残だね
今ではPowerAppsとかGASとかSalesforceとかもっと簡単で強力な選択肢は色々あるし、
プログラミングの勉強ならPythonとかJavaScriptの方が初学者には敷居が低い
803デフォルトの名無しさん (ワッチョイ 2ae6-YEtS)
2021/05/10(月) 20:57:55.19ID:vb1TGTCB0 ハンガリアンより#%&$の方が分かりやすいよな
804デフォルトの名無しさん (アウアウエー Sae2-Qnne)
2021/05/10(月) 21:06:13.53ID:6x/72ii/a805デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/10(月) 21:09:38.66ID:2ArSfNqX0 vbaは本当に楽。forとif覚えるだけで仕事がはかどりまくり
Cはメモリの知識やらヘッダやら本当に覚える事が多かった上に超便利なワークシートってもんもない
Cはメモリの知識やらヘッダやら本当に覚える事が多かった上に超便利なワークシートってもんもない
806デフォルトの名無しさん (ワッチョイ 6a63-DjaX)
2021/05/10(月) 21:10:42.65ID:aMiH/GVN0 まったくな
807デフォルトの名無しさん (ワッチョイ 2ae6-YEtS)
2021/05/10(月) 21:13:02.21ID:vb1TGTCB0 沢山の似たようなライブラリが公開されていて
いろいろな方法でやりたいことが実現できる
それはそれはいい時代になりました
でも、コレがやりたければコウ書け!
まどろっこしいが他に道は無い!
ってのも初心者にはいいものですよ
いろいろな方法でやりたいことが実現できる
それはそれはいい時代になりました
でも、コレがやりたければコウ書け!
まどろっこしいが他に道は無い!
ってのも初心者にはいいものですよ
808デフォルトの名無しさん (ワッチョイ 6aad-M0W8)
2021/05/10(月) 21:46:59.07ID:WQl4RFpm0 条件付き書式や文字の縮小機能まであって、CopyFromRecordsetの異様な速さ
(もちろんシート関数やオートフィルタの速さも異様でしょう)
VSでは無理だし、自作も当然無理
Excel部署の人だって、1人では無理でしょう
(もちろんシート関数やオートフィルタの速さも異様でしょう)
VSでは無理だし、自作も当然無理
Excel部署の人だって、1人では無理でしょう
809デフォルトの名無しさん (ワッチョイ 6aad-M0W8)
2021/05/10(月) 21:59:47.57ID:WQl4RFpm0 でも.NETに比べれば、メモリを意識するよ
参照渡しとかMidで打刻とか
結果、値渡しの.NETの方が速いけどw(初期の.NETはVBAの方が速かったが)
参照渡しとかMidで打刻とか
結果、値渡しの.NETの方が速いけどw(初期の.NETはVBAの方が速かったが)
810デフォルトの名無しさん (ワッチョイ 732c-C7Xb)
2021/05/10(月) 22:34:57.25ID:ViCp850r0 VBA は、シェルスクリプトと同じ。
ちょっとした事しかできない
それを知らない香具師が、複雑なプログラミング用途に使って、
結局保守できなくて、Ruby の10倍ぐらいのコストが掛かる
ちょっとしたナイフで、マグロをさばいたりするのと同じ。
道具・用途のミスマッチ
だから、ウェブ系の会社は、プログラミング言語は適材適所で選択しますって言う。
道具・用途を合わせる。
言語を固定化しない
頭が柔軟。
先に道具を選択しない。
用途から道具を選ぶ
実社会では、ほとんどこればっかり
ちょっとした事しかできない
それを知らない香具師が、複雑なプログラミング用途に使って、
結局保守できなくて、Ruby の10倍ぐらいのコストが掛かる
ちょっとしたナイフで、マグロをさばいたりするのと同じ。
道具・用途のミスマッチ
だから、ウェブ系の会社は、プログラミング言語は適材適所で選択しますって言う。
道具・用途を合わせる。
言語を固定化しない
頭が柔軟。
先に道具を選択しない。
用途から道具を選ぶ
実社会では、ほとんどこればっかり
811デフォルトの名無しさん (ワッチョイ 8f63-/N+h)
2021/05/10(月) 23:04:34.19ID:E9+bgpxg0 ExcelのAPIが優秀なのであってVBA自体は微塵も良くない
812デフォルトの名無しさん (ワッチョイ be8e-gIfd)
2021/05/10(月) 23:09:51.84ID:W7s1RH430813デフォルトの名無しさん (ワッチョイ 6aad-M0W8)
2021/05/11(火) 00:42:36.92ID:OkNnulfr0 先に道具を選択しないと言いながら、道具ありきの叩きw
オープン系は外から機能を持って来るのが特徴なので、言語自体の機能は不要
なんでも呼べるシンプルなシェルのようなもの、オープン系の起点としてふさわしい
大量データの組合せならSQL ServerにBULK INSERTしてCROSS JOINするのが最速のはず
でもそのクエリを投げるのはVBAで十分で、結果の表示はExcelのCopyFromRecordsetが最速のはず
オープン系は外から機能を持って来るのが特徴なので、言語自体の機能は不要
なんでも呼べるシンプルなシェルのようなもの、オープン系の起点としてふさわしい
大量データの組合せならSQL ServerにBULK INSERTしてCROSS JOINするのが最速のはず
でもそのクエリを投げるのはVBAで十分で、結果の表示はExcelのCopyFromRecordsetが最速のはず
814デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/11(火) 01:44:32.13ID:hzo0csgz0815デフォルトの名無しさん (ワッチョイ 6a01-wt3T)
2021/05/11(火) 05:27:49.58ID:/SA0DWk40 >>814
クエリってAccess VBAで動的に生成できるんだぜ
クエリってAccess VBAで動的に生成できるんだぜ
816デフォルトの名無しさん (スッップ Sd8a-V+d8)
2021/05/11(火) 07:53:09.78ID:FeyzCVkSd >>815
そんなん知ってるが、結局VBAかよw
そんなん知ってるが、結局VBAかよw
817デフォルトの名無しさん (ワッチョイ 6a01-wt3T)
2021/05/11(火) 09:04:47.57ID:/SA0DWk40818デフォルトの名無しさん (ワッチョイ 6aad-C7Xb)
2021/05/11(火) 11:31:41.06ID:OkNnulfr0 無償のSQL Serverがあるのに、わざわざ有償で低性能のAccessを使う理由は、初級者であること以外にないですよ
でもExcelはいろんな点で他では追い付けない性能があるので、初級者でなくても使う理由がある
AccessのグリッドもVS等の普通のグリッドとは違い、非同期のリピーターコントロールでできていて、
大量件数でも先頭から順次描画し、全行をメモリに持たないため、高速になるとのこと
その点では、VSより性能がいい(あと子要素の帳票フォームの簡潔さ)
そのかわり常に大量のイベントが走るため、不安定になりやすい
(DBとしてはなんちゃってなので、業者はADP等でSQL Serverと連携して使う)
その速度をさらに超えるのがExcel(特定の使い方で)
イベントが少ないので、不安定になりにくい(Delphiもその点が良かった)
イベントはブック単位で代表できるため、ソースも統合管理しやすい
でもExcelはいろんな点で他では追い付けない性能があるので、初級者でなくても使う理由がある
AccessのグリッドもVS等の普通のグリッドとは違い、非同期のリピーターコントロールでできていて、
大量件数でも先頭から順次描画し、全行をメモリに持たないため、高速になるとのこと
その点では、VSより性能がいい(あと子要素の帳票フォームの簡潔さ)
そのかわり常に大量のイベントが走るため、不安定になりやすい
(DBとしてはなんちゃってなので、業者はADP等でSQL Serverと連携して使う)
その速度をさらに超えるのがExcel(特定の使い方で)
イベントが少ないので、不安定になりにくい(Delphiもその点が良かった)
イベントはブック単位で代表できるため、ソースも統合管理しやすい
■ このスレッドは過去ログ倉庫に格納されています
