Excel VBA 質問スレ Part59at TECH
Excel VBA 質問スレ Part59 - 暇つぶし2ch657:デフォルトの名無しさん
19/03/05 21:26:50.63 WmyrgrGT0.net
オレンジの部分がIE.Busy = Trueという風に教科書通りになっていないのですがこれで大丈夫なのでしょうか
上手いことちゃんとなっているか調べようとやってみましたが私には難しかったです
そして水色の部分なのですが、フレーム数を取得してその数だけ念の為回しておくという感じでしょうか
フレームがいくつかあると取得のたびにIE.BusyがTrue,Falseに切り替わると聞いたのでそのためで合っていますか
それよりもさっき調べて出てきた
'完全にドキュメントが読み込まれるまで待機する
Do Until IE.document.ReadyState = "complete"
DoEvents
Loop
ではダメなのでしょうか、別物でしょうか
ざっとみておかしい部分はありますか?
図々しくすみません
URLリンク(i.imgur.com)

658:デフォルトの名無しさん
19/03/05 21:32:38.87 WmyrgrGT0.net
どういうマクロかと言うと、IEを開いてリンクボタンをいくつか押して文字を引っ張ってきてIEを閉じるというのを何度か繰り返すものです。
リンク先を正しく閉じられていないまま次の回転に入っていることが稀にあるのです

659:デフォルトの名無しさん
19/03/05 21:58:09.97 yUBkGE+g0.net
>>646
別物だな
>>646はvbaオブジェクトのプロパティ
WebBrowserControl.ReadyState
URLリンク(docs.microsoft.com)
>>647はwebのapi
Document.readyState
URLリンク(developer.mozilla.org)
どっちが信用できるかは分からない
どちらにしてもIEオブジェクトがどこまでwebの技術に対応してるか分からない。難しい
かなり雑な解決策としては、
>リンク先を正しく閉じられていないまま次の回転に入っている
とりあえず必ず開いていると仮定して、最初に閉じる処理を噛ませばいいだけな気もする
あと個人的にだけど、untilはあんまり好きじゃない。「否定の否定」が出て来ないように注意した方が良い。あれは読みづらくなる
とりあえず応急処置として、併用してみてはどうかな。うまくいくかどうかはわからない
Do While IE.Busy Or _
IE.readyState <> READYSTATE_COMPLETE Or _
IE.document.readyState <> "complete"
DoEvents
Loop

660:デフォルトの名無しさん
19/03/05 23:41:58.62 b71Efr460.net
IE11からreadystateもbusyも使えなくなったとかどこかで見た
利用出来ないという意味ではなくて使い物にならないという意味で
なので移動後に表示されるタブ見つけたら、とか移動後に表示される文字列を見つけたらという条件で対処してるわ

661:デフォルトの名無しさん
19/03/05 23:46:48.59 yUBkGE+g0.net
ここでもIEかよ・・・

662:デフォルトの名無しさん
19/03/05 23:57:28.83 AE45wcOz0.net
逮捕されないように気をつけろ

663:デフォルトの名無しさん
19/03/06 00:08:19.97 qZfNBEKA0.net
>>646
・ IE.Busy = Trueという風に教科書通りになっていない
「if A then B」自体が既に「AがTrueならB」っていう意味だから、更に「= True」は冗長
・ フレーム数を取得してその数だけ念の為回しておくという感じでしょうか
作者はそのつもりだったんだろうけど、Whileの条件が真になった瞬間に全ループが終わるだろうから無意味
その後何かがFalseになってもEnd Subになる
・完全にドキュメントが読み込まれるまで待機する
偶にIEの受信が終わってもDocumentが読み込み終わってない時があるから、付けたほうがいい
フレームの件も、フレーム毎にdocument.ReadyStateを待つことで解決できる(ことが多い)
>>649
VBAは短絡評価出来ないから、IE.documentが取得できないとreadyStateプロパティが見れずに参照エラーが起きるよ
先にIEを待ってから、安全策としてdocument.readyStateも確認すると安定してDOMが使える

664:デフォルトの名無しさん
19/03/06 00:12:35.24 M8vFX/4l0.net
csvを読み込む手法はいくつかありますが以下のような場合どの方法が最適でしょうか
1行1レコードになっていない(セル内改行あり)
csvが複数ありそれをすべて読み込んで集計処理がしたい
普段はデータインポートやopenで1行づつ読み込んでいましたが1行≠1レコードだと難しいのかと考えています

665:デフォルトの名無しさん
19/03/06 00:17:18.56 0oqXehnm0.net
>>649
長文でわかりにくい環境にも関わらず教えて下さってありがとうございます
参考にして、これから開きたいリンク先のウィンドウタイトルと同じタイトルを持ったウィンドウがすでにあれば閉じるという風に書いてみます
下の方に書いてくれたコードも試してみます
本当にありがとうございました
また下らない質問者したらすみません
>>650
会社のパソコンが古いのでしばらくは大丈夫そうです
ですが重要なことなので覚えておきますありがとうございます

666:デフォルトの名無しさん
19/03/06 00:29:35.50 qZfNBEKA0.net
>>655
既存のウインドウを触るのは初心者にとっては結構大事だよ
閉じれてないのはQuitメソッドの前に次の処理が入ってしまってるだけだと思うから、
処理が終わったと思われる場所に自分でコードを挿入したらどうだろう

667:デフォルトの名無しさん
19/03/06 00:33:49.27 qZfNBEKA0.net
>>654
改行が含まれてるセルは""で括られてるという認識でいいなら、
丸ごと文字列として読み込んだ後に正規表現で""内の改行を全部改行コードに書き換えるのが良いと思う

668:デフォルトの名無しさん
19/03/06 00:36:57.21 qZfNBEKA0.net
>>657訂正
改行を全部改行コードに書き換える

改行コードを全部書き換える

669:デフォルトの名無しさん
19/03/06 00:54:59.22 jXlQSKwgr.net
>>657
試してないので想像ですが1ファイル数mb程あるので一括読み込みで取得出来るんでしょうか…?
変数に入るのか、pc動作的にどうなのかが気になりますが…一度試してみます

670:デフォルトの名無しさん
19/03/06 01:00:18.09 wqRC+Uom0.net
>>654
replace(str,vbcrlf,"うんこ")

671:デフォルトの名無しさん
19/03/06 01:08:03.42 qZfNBEKA0.net
>>659
文字列型に格納すればいいと思います
確か数Gbぐらい格納できたはず

672:デフォルトの名無しさん
19/03/06 07:35:28.45 3ub5rlP9H.net
IEってBusy以外にステータスも見てないとループ抜けちゃわなかったっけ

673:デフォルトの名無しさん
19/03/06 07:51:07.24 9ZQV49QQM.net
抜けた気がする
要素がありませんってよく怒られた

674:デフォルトの名無しさん
19/03/06 08:14:30.41 OZZFIuGOd.net
両方見てても抜ける時が有る。
滅多に無いけど。
例えばClickで遷移する場合に、抜けてからBusyになることがあった。
Submitに比べてClickは単純に文字通りClickするだけなので遷移しないページも有るから必ずBusyになると想定されていないと想像してる。
それ以降Clickの時は最初にSleepを入れるようにしてる。

675:デフォルトの名無しさん
19/03/06 08:20:35.12 OZZFIuGOd.net
>>654
別に方法は色々あると思うけど1行ずつ読み込んでも良いんじゃない?
1行ずつでも条件に合うまで1レコードとしなければ良い。
1レコードの最後にも改行は有るんだろ。
もし1行ずつ読むなら1レコード内に複数改行が有る可能性を考慮すること。

676:デフォルトの名無しさん
19/03/06 08:57:22.69 Uli2bEJM0.net
>>654
Ruby では、列をダブルクオートで囲むと、その中にカンマや改行を含める事もできる。
他の仕様も含め、詳しくはRFC4180を参照
require 'csv'
p CSV.parse_line( "a,\"あ\nい\"" )
# => ["a", "あ\nい"]
\n は改行
列区切りはカンマで、外側の"~" は文字列を表すための囲み。
内側の\"~\" は、"~"内での"~"を表すため、\ でエスケープしている。列囲みを表す
a の部分は、\"~\"で囲まなくてもよい

677:デフォルトの名無しさん
19/03/06 09:17:24.17 R/1sU7PR0.net
rubyって・・・
もう完全に終わってる言語なんだからそんなもの勧めないでよ

678:デフォルトの名無しさん
19/03/06 09:47:16.43 HGc0sPl8M.net
Twitterで紹介されてたこれ一度試してみたけど機能してたよ
URLリンク(www.excelspeedup.com)

679:デフォルトの名無しさん
19/03/06 11:28:25.04 p4qnJjw30.net
下記リンク先のページ下部にあるユーザ定義関数がVBAとして正しく書けてるかチェックして貰えませんか
URLリンク(peltiertech.com)

680:デフォルトの名無しさん
19/03/06 11:39:12.31 R/1sU7PR0.net
>>669
どういう計算をしてるかは知らんけど、コード上は問題ない

681:デフォルトの名無しさん
19/03/06 15:05:39.78 p4qnJjw30.net
多分スレチだろうと思いますが、>>669をLibreoffice最新版に実装したところ戻り値に=LOESS(x,y,z,n)で指定したyの配列がそのまま表示されたのでコードどこか間違ってるか仕様変更したのを俺が見落としてるのかなと思って聞きました
ありがとうございました

682:デフォルトの名無しさん
19/03/06 15:12:15.84 n2VNtnMC0.net
>>666
市ね

683:デフォルトの名無しさん
19/03/06 21:16:11.63 qNVr+Lwh0.net
指定した列以外の列を削除する方法を模索しています。
たとえば、ABCDE列の1行目にそれぞれ
あ い う え お
と入っていて、
"あ"と"う"と"お"以外の列を削除し、
あ う お
というよにしたく、
このようなプログラミングをしたのですが意図するように動作しません。
ド素人と罵られること承知で質問に参りました。
論理式自体考え方がおかしいものとも思っています。
どなたかお力添えいただけないでしょうか?
Sub 不要列削除()
Dim i As Long
For i = 1 To 50
If Cells(1, i).Value <> "あ" Or Cells(1, i).Value <> "う" Or Cells(1, i).Value <> "お" Then
Columns(i).Delete
End If
Next
End Sub

684:デフォルトの名無しさん
19/03/06 21:30:16.04 o9MkSJEKa.net
>>673
ifの条件がおかしい

685:デフォルトの名無しさん
19/03/06 21:31:48.30 LIhekGiK0.net
表示形式が混在したセルを見た目通りのまま表示形式が文字列の別のセルにコピーするいい方法ありませんか
例えばA1~A3を、この見た目のまま表示形式が文字列のB1~B3にコピーしたい場合
  A
1 $1,000
2 2019/1/1
3 9:30

 Dim buf() As Variant
 buf = Range("A1:A3").Value
 Range("B1:B3").Formula = buf '←そのまま入れてみる
B1~B3は 3/6/2019、0.836111111、\10,000.00 になる

 Dim buf() As Variant
 Dim buf2(1 to 3, 1 to 1) As String
 buf = Range("A1:A3").Value
 For i = 1 to 3
  buf2(i, 1) = buf(i, 1) '←文字列型にして入れてみる
 Next
 Range("B1:B3").Formula = buf2
B1~B3は 2019/03/06、0.836111111111111、10000 になる
①②どちらも書式が勝手に変わります
ちなみにセル範囲を配列に直接つっこまず、文字列型の配列に1セルずつ buf = Range(i, j).Text みたいな感じで入れてからセルに貼り付けると希望の結果になりますがめちゃくちゃ時間がかかります(大量データに使いたいので)
他にやり方があれば教えてください

686:675
19/03/06 21:34:55.08 LIhekGiK0.net
例のA列は↓の間違いです、すいません
1 2019/3/6
2 20:04
3 \10,000

687:デフォルトの名無しさん
19/03/06 21:37:03.61 o9MkSJEKa.net
画面表示を止めても遅い?

688:デフォルトの名無しさん
19/03/06 21:54:06.80 ZuXoITq7x.net
>>673
列インデックスで加算ループをしている途中で列削除をしてるから、削除した回数分だけ参照参照列の位置がおかしくなるのでは
例えば2列目を削除した後にループ処理の最初の処理に戻ると、�


689:氓ノi=3として.Cells(1,3)とセルアクセスしたときに見ることになるのは本来D1に位置していたセルになる 列削除した分インデックスがずれるので こうやって減算ループにするのが正解の一つかと Sub 不要列削除() Dim i As Long For i = 5 To 1 Step -1 If Cells(1, i).Value <> "あ" Or Cells(1, i).Value <> "う" Or Cells(1, i).Value <> "お" Then Columns(i).Delete End If Next End Sub あるいは、列削除した場合にはEnd Ifの手前でiから1を引いてインデックス調整するようにしたりか



690:デフォルトの名無しさん
19/03/06 21:56:07.90 ZuXoITq7x.net
>>673
改めて見たらIfの条件もおかしいね
And条件にしないと

691:デフォルトの名無しさん
19/03/06 22:13:28.72 0dxLNo3Q0.net
馬鹿過ぎるのが問題

692:デフォルトの名無しさん
19/03/06 22:23:00.33 R/1sU7PR0.net
>>675
textプロパティ
Sub foo()
Range("c1").Value = Range("a1").Text
End Sub
範囲で代入は出来なかったので、適当にforeachで回してくれ
Range("c1:d2").Value = Range("a1:b2").Text

693:デフォルトの名無しさん
19/03/06 22:36:44.70 LIhekGiK0.net
>>677
止めた状態で遅いです
>>681
セルに直接入力していくと更に遅くなると思います

694:デフォルトの名無しさん
19/03/06 22:56:49.85 xGO4PHc60.net
CSVで書き出せばTEXTが得られるぞ

695:デフォルトの名無しさん
19/03/06 23:08:59.57 R/1sU7PR0.net
>>682
あぁtext使ったって書いてたね、ゴメン
配列でも無理なら高速化はどうだろうか
URLリンク(15g.jp)
高速化でも配列でも重いなら、
もうアクセス辺りに移行した方がいいかも

696:デフォルトの名無しさん
19/03/06 23:09:20.80 R/1sU7PR0.net
>>683
csvは勝手に変換されるのが鬼門すぎる

697:675
19/03/06 23:48:56.32 LIhekGiK0.net
やっぱりTextプロパティ使う以外無理そうですかね…

698:デフォルトの名無しさん
19/03/07 00:01:59.48 UepKFInK0.net
後は>>683かな
住所の"1-1-1"みたいなものがなければ行けると思う。
後はダメ元でgoogleスプレッドシートに移植してマクロ組んで見るとか

699:デフォルトの名無しさん
19/03/07 00:20:00.91 UmWyYgm40.net
>>686
textの取得だけループでまわして、
二次元配列に直して代入するとかは?

700:デフォルトの名無しさん
19/03/07 00:26:34.58 bl5ieqXF0.net
>>688
遅いって書いてあるだろ。もっと上をお望みなんだよ

701:デフォルトの名無しさん
19/03/07 00:44:39.67 UmWyYgm40.net
>>689
直接入力が遅いって言ってるから、入力だけ一括でやれば?と思ったんだが

702:675
19/03/07 00:46:43.69 zt2fCEgu0.net
>>687
他のファイルは使えない状況なんです…
>>688
その処理がすごく時間がかかるので他の手段を探していました
諦めます
今回の事でRangeのValueやFormulaみたいにTextも配列に入れられるようにしてくれと心から思いました
色々考えてくれたみなさんありがとうございました
もしいい方法思い付いたらいつでも待ってます

703:デフォルトの名無しさん
19/03/07 01:15:09.98 UmWyYgm40.net
描写と計算止めてCopyメソッドで10万行×30列を列ごとにコピペしたら一瞬で終わったが・・・
っていうかこれ以上増やそうとするとリソース不足でエクセルが悲鳴を上げるし、どういうデータをコピーしたいんだろ

704:デフォルトの名無しさん
19/03/07 01:18:31.96 UmWyYgm40.net
あ、書式変わるのか・・・上のレスは忘れてください

705:デフォルトの名無しさん
19/03/07 02:33:57.63 cMWEbvvB0.net
コピーしてテキストとして貼り付けじゃダメなのか?

706:デフォルトの名無しさん
19/03/07 02:58:39.40 Wb+CU65ma.net
早い遅いは個人の感覚でしかないとおもう

707:デフォルトの名無しさん
19/03/07 07:14:54.02 RImgiSgC0.net
>>691
>>684 の Application.ScreenUpdating = False
は効かないのか。 画面描画が止められるよ。やってないから適当なこと言ってるかもしらんが
画面描画以外で時間がかかるってどんなだよ。 ちょっと想像できんがなあ
なんでだろう

708:デフォルトの名無しさん
19/03/07 07:24:21.94 ldY6B6U1d.net
>>691
valueで配列コピペした後に、セルに対してそれぞれ書式設定を手動もしくはマクロですれば?
書式は列ごとくらいは揃ってると思うし。
それもバラバラってことだと、そもそも集計の仕方が悪過ぎる。

709:デフォルトの名無しさん
19/03/07 07:28:16.03 IFVQ3Zq/0.net
>>674 >>678
ありがとうございます!
意図するようになりました。
-1で減らしていく発想は本当になかったのでいい勉強になりました。
このたびは本当にありかございました。

710:デフォルトの名無しさん
19/03/07 07:44:13.43 ldY6B6U1d.net
>>696
684じゃないけど、複雑に関数組んだりとか遅い関数が大量に入っててかつデータ数がエクセル上限近くで再計算に時間がかかるとか、あとセル上で反復計算やソルバー使ってたりするとある。
ただ684は書式がバラバラなセルを扱ってる時点で、複雑な計算をしてるとは思えないけど。

711:デフォルトの名無しさん
19/03/07 07:52:53.03 RImgiSgC0.net
>>699
>>675をもう一度見て来いよ。 これだぞ。そんなややこしいことしている話ではないと思うが
>表示形式が混在したセルを見た目通りのまま表示形式が文字列の別のセルにコピーするいい方法ありませんか

712:675
19/03/07 08:38:04.86 QURDMn8Xd.net
再描画等定番の部分は止めています
セル数は100万ぐらい、列数、行数分回してTextプロパティを1セルずつ配列に入れる処理だけです
シートへの貼り付け処理ではなくこの取得部分に時間がかかります
同じ回数回す②や、Format関数、worksheetfunction.textを使った場合その半分以下の時間ですが望みの結果を得る方法はわかりませんでした…

713:デフォルトの名無しさん
19/03/07 10:57:17.39 QGzmAmpt0.net
コピーした後NumberFormatで整えればええんちゃうん?
Dim buf() As Variant
buf = Range("A1:A3").Value
Range("B1:B3").Formula = buf
Range("b1").NumberFormat = "yyyy/m/d"
Range("b2").NumberFormat = "h:mm"
Range("b3").NumberFormat = "[$\-ja-JP]#,##0;-[$\-ja-JP]#,##0"
データが多すぎて無理?

714:デフォルトの名無しさん
19/03/07 10:58:23.63 QGzmAmpt0.net
アー、見た目が同じまま、「文字列」なのか・・・
すんません無視してください

715:デフォルトの名無しさん
19/03/07 11:39:04.19 OUaGUe4hM.net
>>675
A1:A3をコピーしてメモ帳とかに貼り付け
全選択してコピーしてB1:B3に貼り付けでできた
VBAだけで完結させる方法は知らん

716:デフォルトの名無しさん
19/03/07 12:41:45.56 g1Ak82VsF.net
勘違いしてる奴が多いが、自動計算を止めたり描画を止めるのは初心者が速度アップのためにやる方法で、>>675のように速度アップの為に考えて組まれている場合には効果が無い。
上級者はこういう場合に描画止めたりしないよ。
考えずに組んで面倒くさい場合にやる奴はいるかもしれんけど。

717:675
19/03/07 12:42:12.66 QURDMn8Xd.net
>>702
あとからNumberformatを適用させるんでなく配列に入れる時点で適用させる手を考えたんですが、
適用させるのにworksheetfunction.textを使うと書式に「マイナス値は[赤]」みたいな色設定があるとなぜか1004エラーが出るし、Format関数使うと表示形式が標準の時なぜか値が「標準」という文字列になってしまいます
速度的にはtextプロパティ使うよりずっと速いんですが…もう訳がわからない

718:デフォルトの名無しさん
19/03/07 12:46:54.74 g1Ak82VsF.net
>>675
他に方法があるか探る時間が無いので何とも言えんが、DB処理にするか、マルチプロセスで上手いことすれば早くなると思う。

719:デフォルトの名無しさん
19/03/07 12:50:28.91 g1Ak82VsF.net
よく考えたらDB処理は駄目な気がする。
表示部分を扱え無さそうだ。

720:デフォルトの名無しさん
19/03/07 18:02:24.90 6oCjCAip0.net
メモ帳にコピペすると書式が全部消えて見た目通りの文字列になる
メモ帳アプリの実体はエディットコントロールそのものだから、ユーザーフォームにエディットコントロールを貼っただけの作業場所を作って、そこ経由でコピペしてみたら?

721:デフォルトの名無しさん
19/03/07 18:03:18.10 hp531q160.net
UserForm1にTextBox1とCommandButton1、TextBox2とCommandButton2の計4つが配置され
UserForm2には入力フォームが配置されています。
CommandButton1からUserForm2を呼び出した時は、TextBox1に記入
CommandButton2からUserForm2を呼び出した時は、TextBox2に記入
させるには、どうすれば良いですか?

722:デフォルトの名無しさん
19/03/07 18:34:04.34 rXPjoswtF.net
>>709
これ、本当?
だったらクリップボード弄って高速化できるかもしれない。

723:デフォルトの名無しさん
19/03/07 18:34:43.55 qs1KmWLa0.net
複雑な処理でデータ量が多いなら遅くても仕方ないんじゃね?
どうせエクセルだし、専門職じゃないし、大した会社じゃないし、給料安いし

724:デフォルトの名無しさん
19/03/07 19:03:35.19 qo/Sl71gx.net
>>710
やり方はいくつもある
一番簡単な方法を書くと、
Userform1側の各ボタンのクリックイベント内に、任意のセルや標準モジュール上のPublic変数等にコマンドボタンのオブジェクト名をコピーする処理を書く(Me.ActiveControl.Nameでフォーム上でフォーカスされているコントロールオブジェクトの名前を取れるのでこれを使う)
Userform2側のイベントコードではそのコピーされたボタン名を読み取って書き込み先のテキストボックスを判定するようにする

725:デフォルトの名無しさん
19/03/07 19:11:06.28 ximLdO0ya.net
>>710
コマンドボタンのクリックイベントプロシージャで、グローバル変数に呼び出したボタン番号を格納→ユーザーフォーム2のコンストラクタでグローバル変数で分岐させる方法
もしくはコマンドボタンのクリックイベントプロシージャでユーザーフォーム2のマルチページコントロールのプロパティを変更する(value=1,2)方法もある

726:675
19/03/07 21:34:32.55 zt2fCEgu0.net
セル範囲をコピーしてクリップボードから直接二次元配列に入れるようにしたら何十秒もかかってたのが0.5秒になりました
ただ、クリップボードから切り出す時にうっかりセルの値に手を加えてしまわないかが心配です
単純にVbCrLfで行を区切って、VbTabで列を区切ってるんですがそれで問題ないんでしょうか?

727:デフォルトの名無しさん
19/03/07 22:48:37.99 6oCjCAip0.net
>>715
セル内改行を使ってなければそれで大丈夫

728:デフォルトの名無しさん
19/03/08 00:03:05.83 +kJkkfKW0.net
>>716
セル内改行入れてみたら…またこんな落とし穴が…

729:デフォルトの名無しさん
19/03/08 02:12:12.40 k3BFo3Xw0.net
>>713
>>714
プロジェクトが大きくなるにつれグローバル変数は神経を使うので
極力さけたかったのですが
Form1.ActiveControl.Name、でいけそうですね

730:デフォルトの名無しさん
19/03/08 03:08:04.26 Tjqa7GxLa.net
システムの大規模化が想定されるならユーザーフォームでユーザーフォームを呼び出すのは危険w
ユーザーフォーム間の依存性を高めてしまうw
ここはユーザーフォームを呼び出すクラスを作った方がいいw
クラスを介して情報を渡せば安全だし再利用性も高まるw

731:デフォルトの名無しさん
19/03/08 08:00:14.88 IUpgvQZO0.net
やっぱりuserformからuserform呼ぶのってよくないのか
こういうのってクラスモジュール使えるんだろうなって思ってたんだけど
余り使ったことなかたんで、ちゃんと勉強してみよう
参考書ぽちってきたわ
JavaとかC#を多少触ってきたからオブジェクト指向の概念は分かってるんだけど
VBAでの効果的な使い方をマスターしたいわ

732:デフォルトの名無しさん
19/03/08 08:01:46.46 aYiBhvGax.net
引数付きコンストラクタすら簡単に実装できない言語で呼び出し用クラス作る方がきついと感じてしまうね、個人的には

733:デフォルトの名無しさん
19/03/08 08:08:56.71 IUpgvQZO0.net
普通のコンストラクタには引数渡せないんだ
まぁその辺の限界も含めて一度勉強しておいたほうがいいとは思ってる
できることと出来ないことを知った上で、クラスを使う選択肢を持つことができればいいかなって

734:デフォルトの名無しさん
19/03/08 08:15:50.67 nNie5CZRM.net
VBAでクラスとか言ってるのはたいてい知ったかだからスルーしていい
VB.NETとかC#知ってたらストレスしかたまらん

735:デフォルトの名無しさん
19/03/08 08:23:55.15 URVXf1I+a.net
そもそもVBAにクラスが欲しくなるような規模の要件を押し付けている時点で業務設計が破綻してる

736:デフォルトの名無しさん
19/03/08 08:24:18.53 wvJFI7ubd.net
こういう場合にクラス使うの?
何か違うと思うんだが。
VBAでも見た瞬間にクラス使おうと思う場合もあるんだが、そういうことは少ないな。>>323のような話なら見た瞬間にクラスだなと思うんだけどね。

737:デフォルトの名無しさん
19/03/08 08:43:43.11 URVXf1I+a.net
>>725
ワークシート上でデータが常に単なる二次元の表として見えているために、
その行をエンティティとして見るような発想になりにくいんだろうね
別にそれが悪いとは思わないが

738:デフォルトの名無しさん
19/03/08 08:55:03.19 GpWg6Xx2M.net
逆にいうと、ワークシート上で人間が無理なく扱えるようなデータ構造にならざるを得ないから、
生え抜きのVBerが作りがちな酷いDB設計になりにくい
そういう良い意味でデータ構造に無理が利かないので、クラスでデータ構造を抽象化したくなるケースが少ないのだと思われる

739:デフォルトの名無しさん
19/03/08 12:25:06.22 3iX4ejeoF.net
DBとして扱うならクラス使うことも考えるよ。
でも、DBとして扱うことも多くない。
DBならAccessにしちまうんで。

740:デフォルトの名無しさん
19/03/08 16:46:49.91 YR0R2o1EM.net
いまAccessを使う理由って何?
無料版のSQL Server のスペックの方が上だろう。
移行が大変だから?

741:デフォルトの名無しさん
19/03/08 16:53:49.99 84JrbWWM0.net
エンジンだけで比べてる頭の不自由な人かな?

742:デフォルトの名無しさん
19/03/08 16:53:54.67 GpWg6Xx2M.net
フォーム中心のまともなデータベースアプリが比較的簡単に作れるという点では意味がある
まあ今ならPowerApps使えばいいと思うけど

743:デフォルトの名無しさん
19/03/08 17:59:29.39 uRP/bscvx.net
PowerApps使うならPowerShellかJScript使わないとな
まぁVBAは要らんわ

744:デフォルトの名無しさん
19/03/08 18:55:16.76 aTSUMsKkd.net
???
会社のPCに既にAccessがインストールされているのにもかかわらず、
Excelで扱うような程度のものをDBとして扱いたい時に、SQL Serverインストールはじめちゃう人?
全てにおいてセンスねーわ。

745:デフォルトの名無しさん
19/03/08 18:56:25.33 aTSUMsKkd.net
まだSQLiteの方が理解出来るわ。

746:デフォルトの名無しさん
19/03/08 19:18:32.09 rErY3KdLM.net
>>733
正直君の意見はよくわからん
Management Studioすごく便利だよ
それにExcel からADOやODBCでつつく際のIFは大して変わらないんだからSQL Serverの方がパフォーマンスいいじゃん

747:デフォルトの名無しさん
19/03/08 19:24:33.31 +kJkkfKW0.net
うちの会社そういうの入れる時はそれを使う理由説明して了解得るのに手間がかかる

748:デフォルトの名無しさん
19/03/08 19:46:50.70 iqA0OhOAd.net
まあ普通はセキュリティ部門にリクエストして審査通らんと入れるのは無理だわな
VBAも原則禁止だから毎回例外申請してるわ

749:デフォルトの名無しさん
19/03/08 21:38:31.98 quBQyQDX0.net
環境申請が必要な業務を未経験者にさせるほどうちの会社はブラックじゃない

750:デフォルトの名無しさん
19/03/08 21:38:33.69 84JrbWWM0.net
>>735
馬鹿はエンジンしか見ていない

751:デフォルトの名無しさん
19/03/08 22:23:14.58 AVEVGkz60.net
具体的な事を言えよ

752:デフォルトの名無しさん
19/03/08 23:50:58.19 84JrbWWM0.net
>>740
馬鹿には理解できんのか?

753:デフォルトの名無しさん
19/03/09 02:13:50.44 zk58FQoZ0.net
会社がoffice365に切り替わってAccess使えるようになった俺歓喜

754:デフォルトの名無しさん
19/03/09 02:15:54.88 w2C0D7DGa.net
accessはスレチ

755:デフォルトの名無しさん
19/03/09 04:02:18.85 83GbxNdW0.net
accessって開発続いてるの?
Excelを強化してAccessを見放すように思えてしょうがない

756:デフォルトの名無しさん
19/03/09 04:12:29.83 676zsyfX0.net
accessはウンコです

757:デフォルトの名無しさん
19/03/09 07:26:22.26 j4uu9hgX0.net
Acccessとか。 いつの時代の遺品だよって感じだな
使いにくかったしなあ

758:デフォルトの名無しさん
19/03/09 07:48:05.33 ABNsWlsO0.net
>>744
>>731も書いてるけどExcelとAccessって用途が違うから当面なくならないと思うよ

759:デフォルトの名無しさん
19/03/09 08:34:58.65 nDxlP6J/0.net
SQLとOracleとAccess使うと書き方混乱する

760:デフォルトの名無しさん
19/03/09 09:22:46.51 Z89d69KF0.net
シート上に複数のテキストボックスを配置して、
KeyDownイベント + vbKeyRightとかvbKeyTabで、
テキストボックス間を移動出来るようにすると、
カーソルがたまに見えなくなるんだけど、回避策ない?
見えないだけで、存在はしているので、
文字は打てるんだけど、文字まで透明になっちゃう。
テキストボックスを何回か適当にクリックすると、
突然見えるようになる。

761:デフォルトの名無しさん
19/03/09 09:24:00.36 Z89d69KF0.net
↑あと、わざわざ画面更新を止めたりはしていない。

762:デフォルトの名無しさん
19/03/09 09:29:10.33 Z89d69KF0.net
↑あ、別のPCで開いたら再現しなくなった。
もしかして、グラフィックボードの問題?

763:デフォルトの名無しさん
19/03/09 10:19:05.53 zk58FQoZ0.net
>>751
ボードと言ってるのはたぶんドライバのことだと思うけど、その可能性はあるよね。
いくつかバージョン違いを落としてきて試してみればいい。
とりあえずは、各メジャーバージョンが上がったばかりのは除いて、それぞれ最終リビジョンのを集めてきてかな

764:デフォルトの名無しさん
19/03/09 21:56:21.30 QAZD12fZ0.net
excel vbaとaccess vba
どちらの方が実用的ですか?

765:デフォルトの名無しさん
19/03/09 22:00:31.82 BnoVO+GEM.net
>>753
目糞鼻糞
今時ローカルで完結する業務要件なんかほとんどない

766:デフォルトの名無しさん
19/03/09 22:03:03.09 QAZD12fZ0.net
両方できて当たり前ですか?

767:デフォルトの名無しさん
19/03/09 22:06:43.06 vJsfVwnQ0.net
触り始めればすぐ


768:覚えるよ 触る機会がexcelのほうが多いってだけ



769:デフォルトの名無しさん
19/03/09 22:20:16.59 BnoVO+GEM.net
>>755
Excelだけでいいよ
今時AccessやるくらいならSalesforceでも覚えなさい

770:デフォルトの名無しさん
19/03/09 22:33:56.74 u5Pk3KZwM.net
Accessに親でも殺されたのか? w

771:デフォルトの名無しさん
19/03/09 22:36:15.94 M4mulWlpM.net
>>755
超小規模ならExcel
テーブルの規模が大きくなってくるとAccess
Accessの何がいいかって言うとオレはレポートだと思ってる。あれを使いたいがために、オレはdbアプリ(フロントエンド)はAccess一択。
テーブルの規模がさらに大きくなってきたら、テーブルだけをoracle、SQLServerなりに移行。
そもそもAccessは大規模用ではないが、わかって開発すれば大規模用に寄せていくことはできる。

772:デフォルトの名無しさん
19/03/09 22:42:40.73 ouuI5dEha.net
>>758
シンプルに、需要がない

773:デフォルトの名無しさん
19/03/09 22:43:14.91 M4mulWlpM.net
>>759
Access一択は語弊があるけど、Accessだけで完結できるならAccess押し。
あとは顧客要望で、webなりc#なり様々

774:デフォルトの名無しさん
19/03/09 22:52:20.46 ABNsWlsO0.net
>>760
需要の無いものをMSがわざわざ開発して売ってるのかw
無職の妄想乙

775:デフォルトの名無しさん
19/03/09 23:38:00.61 ouuI5dEha.net
>>762
実際ほとんど放置されてるでしょ
そもそもAccessってノンプログラミングで専用アプリ風のDBアプリが作れるのがメリットなのであって、そこは全く否定するつもりはないけど
プログラミングするんなら他にもっと優れた選択肢はいくらでもあるよ

776:デフォルトの名無しさん
19/03/09 23:47:17.35 c6PO5ulL0.net
With Access ってやりたくなってきたな

777:デフォルトの名無しさん
19/03/10 00:26:33.47 AZoiY/Tr0.net
中小企業は普通にエクセル・アクセス
使える人間が多いのが最大のメリット。事務員だけでも割とどうにかなる
エクセルvbaは死ぬほど使う
アクセスはvbaじゃなくSQLを覚えたほうが良い
でもSQL覚えるのって結構たいへんなんだよよねぇ

778:デフォルトの名無しさん
19/03/10 00:34:07.81 /SA1VNEE0.net
とりあえずVBAはどっちでも同じだから、あとはどういう環境を用意されることが多いかと考えると圧倒的にExcelに縛られることが多いので実用で考えるとExcelだろうか
Accessでやる方が楽な時でもExcelでやらされることが多いし

779:デフォルトの名無しさん
19/03/10 00:37:17.38 AZoiY/Tr0.net
Accessは大抵前任者なりシステムなりが作っている場合が多いから、ほとんど触る事が無い
エクセルは事ある毎に0から作ったり改修する事多いからvbaはめっちゃ役に経つ

780:デフォルトの名無しさん
19/03/10 00:45:32.25 /1sFaTiS0.net
素人が作って不正統計したりするのもexcel

781:デフォルトの名無しさん
19/03/10 00:54:56.33 W5FlChvZ0.net
>>765
複雑になってくるとSQL知識は必要になるけど、クエリーデザイナ(QBEグリッド?)でほとんどできてしまう。
昔oracleでSQLゴリゴリ書いてたあとAccessのクエリーデザイナ見て「これ考えたやつ天才やな」とマジで思った。
選択も更新も削除も書けて、テーブル連結も表現できて、革命やなと。

782:デフォルトの名無しさん
19/03/10 01:10:02.43 HL2UVho30.net
accessで帳票画面作りが便利過ぎて
Excelにもレポートつけて欲しい
方眼紙神Excel化しまくり

783:デフォルトの名無しさん
19/03/10 04:21:41.33 RhjsjUYS0.net
>>763
お前がAccess知らんだけだろw

784:デフォルトの名無しさん
19/03/10 07:28:22.90 m5XGUhg5a.net
>>771
そもそも今時ローカル限定のDBなんてほとんど役に立たなくね?
ちなみに、URLリンク(support.office.com)ビデオ-access-web-アプリを作成する


785:-10855ec0-3a12-4e6c-a67c-c88267f00a3c > 重要 Microsoft では、SharePoint で Access Web App を作成および使用することはお勧めしなくなりました。 代わりに、Microsoft PowerApps を使用して、Web およびモバイル デバイス用にコードなしのビジネス ソリューションを作成することを検討してください。 だそうだよ



786:デフォルトの名無しさん
19/03/10 08:09:35.64 8TH6z4a90.net
Salesforceて。
クエリの自由度がAccess以下じゃん。

787:デフォルトの名無しさん
19/03/10 08:13:57.05 jNouaRswM.net
>>773
仮にそうだとしてもAccessより圧倒的にスキルの需要が高いのは事実だよね
それは何故だと考える?

788:デフォルトの名無しさん
19/03/10 08:46:12.12 RhjsjUYS0.net
>>772
まじでAccessに親でも殺されたのかよw
必死にググって探してきたんだろうけど見てて恥ずかしいぞ

789:デフォルトの名無しさん
19/03/10 08:48:28.53 W5FlChvZ0.net
>>772
ローカル?
Accesswebアプリ?
だから、知らないやつは黙っとけと。
自分の周りで需要がないから、どこもそうだとは限らないって考えられないのか?
MSが推奨してても、そうならなかったこともあるだろうに(いちいち書かない)。

790:デフォルトの名無しさん
19/03/10 09:03:35.58 W5FlChvZ0.net
>>774
sfは使ってる側だが、Accessと比べてる意味がわからん。
それぞれメリットデメリットがあって、顧客の要望にどちらがよりふさわしいかだぞ。
Accessのときもあるし、そうでないときもある
office365が広がって、Accessで作るメリットは開発側も、アプリ導入側も確実に増えてきた。
例えば、visualstudioで作るなら開発側は買わないといけない(小規模会社以外は)
これだけ書いてわからないとしても、スレ違いもあるからこれ以上議論しない。Accessスレでも、くだらないから議論しない

791:デフォルトの名無しさん
19/03/10 09:43:54.35 Cor3H27v0.net
ここは顧客のためにアプリ開発してるような人が来るスレじゃない、というのが前提にあるんじゃないの?
だから話がずれてしまう

792:デフォルトの名無しさん
19/03/10 10:10:19.51 LxD//o4za.net
個人商店で売上管理する程度か、ソフト会社でシステム管理任されてるかでは違いすぎるわな

793:デフォルトの名無しさん
19/03/10 10:21:42.56 jNouaRswM.net
顧客の要望笑さんのように目の前の要件だけ片付けてトンズラできる立場なのか、
将来も含めて面倒見ないと行けない立場なのかでも全然違うわな
後者ならさすがにAccessは正当化できないわ

794:デフォルトの名無しさん
19/03/10 10:22:42.48 Cor3H27v0.net
スキルレベルの話というより、制約条件が自分要因なのか顧客要因なのかが大きい。
こんな場所で顧客要因の話なんか相応しくないだろ、ってことだ。

795:デフォルトの名無しさん
19/03/10 10:42:00.95 U7oWyg8EM.net
とにかく安く作れと命令されればこうもなろう!

796:デフォルトの名無しさん
19/03/10 10:45:41.83 9Z3HOdWo0.net
winformやwpfがaccessより優れていればよかったんだがな

797:デフォルトの名無しさん
19/03/10 11:17:38.37 AZoiY/Tr0.net
>>783
分かる。なんか色々解決した気がする
Silverlightも死産だった

798:デフォルトの名無しさん
19/03/10 11:28:51.41 8TH6z4a90.net
>>774
そりゃググればいくらでも情報出てくるAccessとは比較にならんからな。

799:デフォルトの名無しさん
19/03/10 11:34:33.33 UR1GQMqix.net
えっと、、、ここExcel VBAのスレですよね?

800:デフォルトの名無しさん
19/03/10 11:44:50.15 z6hGNEnV0.net
馬鹿はAccessのエンジン部分だけしか見ていない

801:デフォルトの名無しさん
19/03/10 12:00:46.26 Cor3H27v0.net
どうせくだらないオレオレ都合を一般化してるんだろ

802:デフォルトの名無しさん
19/03/10 13:42:15.79 UR1GQMqix.net
Access VBAは提供機能の環境結合度がExcel VBA以上に強いイメージを持ってるんだけど、Office365になってもバージョンアップによる互換性の問題は変わらない感じ?

803:デフォルトの名無しさん
19/03/10 15:38:12.98 DYQTDh8PM.net
GUIをExcel、データストアをAccessとするアプリをVBAで作るのが最強ってことですね

804:デフォルトの名無しさん
19/03/10 16:10:54.47 W5FlChvZ0.net
>>789
提供機能の環境結合度が何を言ってるかわからないが、昔作ったやつの改造質問が時々来て、軽く動かす範囲において互換性に問題があったことはない。
互換性問題でお客様から問い合わせ来たこともない。mdbの話し。
>>790
違います(indeed風w)
それぞれで無理なく完結できるならわざわざ分けない。そもそも「GUIをExcel」とするほどの優位はない。
データストア(テーブル)をシートでゴニョゴニョできる範囲ならExcelでやってもいい。デカくなるとAccess。
最近経験したのは、Accessのグラフが昔のママだったので、新しいグラフを使うためにExcelに結果出力することにした
(ながっ。Accessスレ過疎ってるけど、そっちで書いたとここに書けば何人か見に行ってくれると思う)

805:デフォルトの名無しさん
19/03/10 16:46:27.59 QRthXdOt0.net
Excelでも
VBAでも
質問スレでもない
でもどうせ平日は質問もないし、土日はこういう流れokみたいにしてもいいんじゃないかな

806:デフォルトの名無しさん
19/03/10 17:36:22.03 hFpGjFbxd.net
どうでも良いけどセンスね―奴が多いな。
Salesforceってw
まず、会社で自分が使う環境になってからの話だろうに。
AccessやExcelと同列で語るとは笑わせる。
SQLサーバーも一緒。
Accessは単体で完結する使われ方も有るけどフロントエンドで使われる場合もある。
で、どちらの場合もSQLサーバーとは比較の対象にはならない。
俺はトヨタとかホンダとかと同じ知名度の会社で働いてるが普通にAccess使ってる。
というか、大きな所は結局いろんなツール使ってる。

807:デフォルトの名無しさん
19/03/10 17:53:03.67 UR1GQMqix.net
我慢できず煽りと自慢を入れちゃう辺りがかわいい

808:デフォルトの名無しさん
19/03/10 18:14:41.27 QRthXdOt0.net
知名度で比較してもその中には昭和みたいなやり方の企業は山程あるんだが

809:デフォルトの名無しさん
19/03/10 18:19:33.93 hFpGjFbxd.net
>>795
あるかもね。
うちの会社は違うけど。

810:デフォルトの名無しさん
19/03/10 18:21:35.02 QRthXdOt0.net
>>796
と、その昭和な会社も思ってるからな
レスだけだと実際どうかは判別つかない

811:デフォルトの名無しさん
19/03/10 18:25:09.94 hFpGjFbxd.net
馬鹿でかいDBサーバーが何個もあって、ちゃんとしたシステムもある。
けど、いろんな部所が独自にツール作ってるし、その馬鹿でかいDBに参照だけさせて貰って、Accessをフロントにしてるのもある。
Excelをフロントにしてるのもあるな。
もちろん、好き勝手が出来るわけじゃないが。

812:デフォルトの名無しさん
19/03/10 18:34:31.65 hFpGjFbxd.net
>>797
そもそも大きな会社のことが分かってない発想だな。
大きな会社は新しい考え方してる部署もあるし、古い考え方してる部署もある。
普通に色んな部署があるからAccess使う所もたくさんある。

813:デフォルトの名無しさん
19/03/10 18:51:24.29 /1sFaTiS0.net
それでもAccessはないかもしれない

814:デフォルトの名無しさん
19/03/10 19:12:48.88 Cor3H27v0.net
それにしてもAccessに批判的な意見に対して「センスが悪い」と言うのは変なバイアスを感じるよな

815:デフォルトの名無しさん
19/03/10 19:29:50.41 UR1GQMqix.net
>>799
全社システムを入れてデジタル化を推進しようとしてるかと思えば、部署や事業分野毎に統制レベルがまちまちだったりして結局色んなシステムやアプリを使ってたりするのがいわゆる大企業だよな
もちろん電話FAX紙資料頼みの昭和的なやり方の部分が残ってることもある

816:デフォルトの名無しさん
19/03/10 19:30:28.09 FHxk+Xrb0.net
大抵の部署は「エクセルワードパワポ使えりゃいい」ってことでHome&Business買って終わりだからな
そもそもAccessに触れる機会がない

817:デフォルトの名無しさん
19/03/10 19:41:28.13 6Vmijfcb0.net
3つのエクセルファイル開いて終わったら
3つともcloseしてquiteしてるんだけど
タスクマネージャみたら3つのエクセルがのこったまま
なんでー?

818:デフォルトの名無しさん
19/03/10 19:46:40.37 /1sFaTiS0.net
ういるすじゃね

819:デフォルトの名無しさん
19/03/10 19:57:44.50 QRthXdOt0.net
>799
20代前半?

820:デフォルトの名無しさん
19/03/10 20:53:30.17 /SA1VNEE0.net
>>804
プロセスが残ってるってことだよね?
3つのエクセルファイル開く前はプロセス0個だった?
closeしてquiteしてるオブジェクトはちゃんと合ってる?

821:デフォルトの名無しさん
19/03/10 22:01:10.58 RhjsjUYS0.net
>>803
いわゆるそれなりの企業でOfficeを個々の部署で買ってるところってそんなにないだろ

822:デフォルトの名無しさん
19/03/10 22:37:21.73 FHxk+Xrb0.net
>>808
ウチの場合各部署の上長に選択肢与える方式だから
Publisher使う広報部以外Professional選ぶとこほとんどないよ

823:デフォルトの名無しさん
19/03/10 23:03:17.67 hFpGjFbxd.net
>>802
論点の分かってないバカは何処にでもいるな。
つまり結論は、Access使ってるということだよ。
それにAccessと比較できるようなソフトが無い。
それが分からんからセンスがね―と言われる。
FileMaker挙げられたら分かってる奴だろうが。
>>803
そりゃ残念だったな。
Officeは部署で買うもんじゃ無いと思うぞ。
聞いたこと無いけど。
うちの会社は全員Access入ってると思うぞ。

824:デフォルトの名無しさん
19/03/10 23:04:10.67 hFpGjFbxd.net
>>801
センスが悪いのは対抗に成りようがないもんを挙げてるからだよ。

825:デフォルトの名無しさん
19/03/10 23:13:37.64 RhjsjUYS0.net
>>809
個々に発注してるの?
ボリュームライセンス使わないの?

826:デフォルトの名無しさん
19/03/11 00:05:51.48 tsrenNBW0.net
AccessやめてSQLServerにしろって言われて移行の手間以外の理由で嫌がる人間がいるだろうか?
いや、いない

827:デフォルトの名無しさん
19/03/11 00:06:57.17 lsnxSivOx.net
なんか他人を見下したいだけのタイプっぽくてウザいからNGしたわ
仮にこいつがAccess詳しくてもこいつから教わりたくないなって感じ

828:デフォルトの名無しさん
19/03/11 00:09:57.12 sN5dooJH0.net
VBAより細かいことができて簡単でメジャーでお勧めってJAVAでいいの?
用途は個人で簡単なアプリを作る程度です。

829:デフォルトの名無しさん
19/03/11 00:11:11.53 tJkNrW1I0.net
Access取り上げられてManagement Studio渡されたらうにょる

830:デフォルトの名無しさん
19/03/11 00:12:43.40 B6nWiYCUd.net
>>813
SQLサーバーにするようなのは手間もそうだが、規模が違うだろ。
そんな話になるなら最初からExcelやAccessの話になんてなってない。
そんなこともわからね―のかよ。
自由にできる中小とは違うんだよ。

831:デフォルトの名無しさん
19/03/11 00:16:15.83 B6nWiYCUd.net
>>815
それは微妙だな。
細かいことは出来ない場合がかなりあるだろうな。
簡単かどうかも微妙。
難しさの方向性も違うし。

832:デフォルトの名無しさん
19/03/11 00:21:09.07 B6nWiYCUd.net
>>816
問題は何で組むかって話になるだろうね。
昔、MSDEで組んでた時に使ってたけど、Accessなんか競合するようなもんじゃない。
まあ、VBAでも組めるからExcelやAccessから繋いでも良いんだけど、それって本末転倒じゃね?
結局VisualStudioで組む話に成るんだろうな。

833:デフォルトの名無しさん
19/03/11 07:05:51.99 JOj7lbWG0.net
>>813
馬鹿はエンジン部分だけしか見ていない

834:デフォルトの名無しさん
19/03/11 07:19:27.24 n6vPhCvaM.net
>>813
想定の範囲内でしたね
Access以上に帳票作成が楽なソリューション出してください
あなたならできるはずです
あっ、もちろんコストは想定の範囲内でお願いしますよ

835:デフォルトの名無しさん
19/03/11 09:28:28.62 tsrenNBW0.net
>>821
ExcelからSQLServerのデータをつつけばいいじゃん
このスレ的にも趣旨にあう

836:デフォルトの名無しさん
19/03/11 10:13:10.23 n6vPhCvaM.net
印刷に難のあるExcelで帳票作成?
わざわざ茨の道を進む提案は想定の範囲外でしたよ
次回からもう来なくていいですw

837:デフォルトの名無しさん
19/03/11 10:35:34.29 tsrenNBW0.net
>>823
帳票?印刷?
そんなもんPCでやるわけないでしょ
君こそふざけてるんじゃないの?

838:デフォルトの名無しさん
19/03/11 10:49:41.28 fslMg+hgM.net
>>824
えっ?

839:デフォルトの名無しさん
19/03/11 10:57:18.05 tsrenNBW0.net
>>825
帳票印刷なんて古い基幹システムでやるもんだし、レガシーでつまんない仕事だからPCでやりたくないでしょ

840:デフォルトの名無しさん
19/03/11 11:09:41.27 n6vPhCvaM.net
>>824
一体何を言ってるんだろう… w

841:デフォルトの名無しさん
19/03/11 11:11:45.09 n6vPhCvaM.net
>>826
お前さん、例えばスマホとか契約した時に契約内容を記載した紙貰ってないかい?
帳票ってそう言う奴のことな

842:デフォルトの名無しさん
19/03/11 11:17:50.98 tsrenNBW0.net
>>828
それをPCのアプリで出力しないでしょ?
現場のPCでやるのは出力された帳票イメージをプリンタに送ることさ

843:デフォルトの名無しさん
19/03/11 11:33:05.59 Mb6GwggX0.net
まあホスト側でPDFを作っちゃって、あとは印刷するだけみたいなシステムも最近は増えてるけど、
送られて来るのは印刷したい数字だけで、クライアント側で印刷イメージを組み立てるシステムだって普通にあるぞ

844:デフォルトの名無しさん
19/03/11 11:34:08.24 tsrenNBW0.net
それにそんなことは営業所レベルのことじゃない?

845:デフォルトの名無しさん
19/03/11 11:44:06.02 04nfU8jWd.net
>>831
ここは大企業やサーバ管理者専用スレじゃないし
世の中にはパソコン1台だけで経理や発注をやってるような中小零細だってある
現実にExcelで作られた帳票は世界中を駆け巡ってる

846:デフォルトの名無しさん
19/03/11 12:22:04.66 n6vPhCvaM.net
>>829
お前一度帳票ソリューションとかでググってみ
いろんな形態あるから1種類だけで語ると恥かくぞ

847:デフォルトの名無しさん
19/03/11 12:56:27.77 zh+jpn1Ya.net
>>823
印刷は確かに若干弱いがエクセル帳票は悪くないアイデアだと思う
プログラムで生成物からデータを取得できるから帳票作成のスモールテストを作りやすい
まあCIサーバーで動かないと意味がないのでVBAの出番はないけど

848:デフォルトの名無しさん
19/03/11 13:13:58.34 M7+7uBBxM.net
>>833
世の中全体なんて言ったらきりないでしょ
>>828が言うDOCOMOショップとかの話に反論したのさ

849:デフォルトの名無しさん
19/03/11 17:10:59.27 n6vPhCvaM.net
>>835
「例えば」っていう文言すら理解できないの?w
てか、話の流れでわかるだろ

850:デフォルトの名無しさん
19/03/11 18:08:31.25 tsrenNBW0.net
>>836
いやいやいやいや
「帳票なんて基幹システムで出すもんでPCじゃしないでしょ」という意見に対して>>828は携帯ショップの例を出してきたんだぞ

851:デフォルトの名無しさん
19/03/11 18:36:20.35 Rf81Fxun0.net
>>824
ガリ版印刷かと思った

852:デフォルトの名無しさん
19/03/11 18:37:23.11 Rf81Fxun0.net
言わんとする事は分かるけど、
ID:tsrenNBW0 は色々と日本語おかしいぞ
入って半年の新人か、酔っぱらいが話ししているようだ

853:デフォルトの名無しさん
19/03/11 18:39:03.34 n6vPhCvaM.net
>>834
Excelはページ内の列に縛られるから結構大変だよ
見積書とかでお客様名称の位置を変えたら一覧表に影響するとか
特に複数の表を位置ページに収めるとかが大変すぎる

854:デフォルトの名無しさん
19/03/11 18:39:39.43 n6vPhCvaM.net
>>840
位置ページ ⇒ 1ページ

855:デフォルトの名無しさん
19/03/11 18:40:36.46 n6vPhCvaM.net
>>837
そこまで言うならすべての携帯ショップの帳票システムが1種類しかないことをソース付きで示してくれ

856:デフォルトの名無しさん
19/03/11 18:40:41.61 fslMg+hgM.net
>>837
帳票は基幹システムでも出すし、現場のAccessからも出します。
携帯ショップのはあくまで例えだが、アプリで出してても何らおかしくない。webからサーバで作成した帳票出してたとしても世の中全てがそうじゃない
バカはすっこんでろ

857:デフォルトの名無しさん
19/03/11 18:48:10.82 tsrenNBW0.net
>>843
ああ、じゃ携帯ショップの話は例が悪かったってことで引っ張るのはやめにするよ

858:デフォルトの名無しさん
19/03/11 18:52:52.30 tsrenNBW0.net
もともとAccessなんかよりSQLServer使えばいいのに、という意見に対して「センスが悪い」と評したやつがムカつくんだよね
それってただの自己擁護じゃねえの?

859:デフォルトの名無しさん
19/03/11 18:57:56.68 +UqUSWhfM.net
>>845
ExcelVBAスレで何言ってんだって話だよな

860:デフォルトの名無しさん
19/03/11 19:19:43.98 VQvu/Jc3a.net
まーまー、みんなケンカするなよ。ケンカしたくてここに来てるやつはどっか行ってくれ。楽しく、とまではいかないにしても、他人の意見を尊重して、まったりと行こうぜ

861:デフォルトの名無しさん
19/03/11 19:25:03.45 mobnRMp/x.net
VBAスレでイキる奴も煽られる奴もダサすぎ

862:デフォルトの名無しさん
19/03/11 20:02:00.38 Qce4TTJA0.net
他人からファイルが返ってきたときに印刷プレビューになってるとイラっとする

863:デフォルトの名無しさん
19/03/11 20:41:29.39 SWNQzsKE0.net
そんな性格だから禿げたんだな

864:デフォルトの名無しさん
19/03/11 20:46:16.50 tsrenNBW0.net
>>849
自分はそれじゃなくてアレがイラッとする
だからよく ActiveSheet.DisplayPageBreaks = False
をやる

865:デフォルトの名無しさん
19/03/11 21:21:38.01 B6nWiYCUd.net
>>845
最初に「今Accessを使う意味」とか、言い出した奴が都合が悪くなると人のことを上から目線だとか言い出すからなあ。
そもそもの話はAccessにしちまうからExcelでDB処理することは多く無いって話から始まっている。
(実際は結構あるけどAccessと食い合うって話)
最初から、バックエンドSQLサーバーでフロントがExcelって話なら、SQLサーバーじゃなくて正にExcelでDB処理の話になって、俺の主張に一致するから反論にならん。それとも絶対にExcelフロントでAccessフロントはあり得ないって話ならもう一度センスね―と言ってやる。
Excelフロントはあり得るけどAccessフロントの方がよりあり得るわ。
いやいやそういう構成ではExcelでDB処理には該当しないというなら、ExcelでDB処理とはExcel単体でのDB処理ということになるから、それに対しての比較対象にSQLサーバー持って来たの?という話になる。
この場合もやっぱりセンスね―と言ってやる。
だからそもそもの話に反論としてSQLサーバーを挙げるってことはExcelフロントではないということを意味するんだろう。
つまりOffice系では無く、開発系で組むという話だろう。
Accessで済むようもん、場合によってはExcelで済むようもんをC#とかを使って組むの?
部署内での打ち合わせ資料をWordで作ると言ったらPagemakerの方が良いと言われた気分だわ。

866:デフォルトの名無しさん
19/03/11 21:56:59.54 SWNQzsKE0.net
accessが好きとか嫌いとか最初に言い出したのは誰なのかしら

867:デフォルトの名無しさん
19/03/11 22:03:37.96 tsrenNBW0.net
>>852
3回読んだが意味がよく分からん
俺の最初の主張は>>729から始まってるんだが、「データはExcelじゃなくてAccessに置け」という他の意見に対して
「いや今時AccessなんかじゃなくてSQLServerでしょ」というのが意図だ。
そっからなんかこじれてるんだが、ここでの俺の前提はフロントUIはエクセルというものなんだよね。
ExcelからのSQL発行という点でUI表面上の差が大してないと考えて比較している。

868:デフォルトの名無しさん
19/03/11 22:45:47.44 JOj7lbWG0.net
>>854
馬鹿は死ねよ

869:デフォルトの名無しさん
19/03/11 23:03:46.33 tJkNrW1I0.net
>>854
フロントがExcel程度でなんとかなるデータならAccessで十分だろ
すでに大量のデータがSQLServerに溜まっているならそっち使えばいいけど
Excelでデータ入力とか考えただけでも吐きそう

870:デフォルトの名無しさん
19/03/11 23:17:24.96 sG7ktWvJ0.net
まだやってんのかよ

871:デフォルトの名無しさん
19/03/11 23:24:53.12 tsrenNBW0.net
>>856
フロントでやるのはデータ分析だろう。
データ入力は現場の仕事。
フロントと現場を混同してるだろ?

872:デフォルトの名無しさん
19/03/11 23:31:06.64 tJkNrW1I0.net
二人以上でAccess使うなんて想像してなかったわ。すまん

873:デフォルトの名無しさん
19/03/12 01:08:58.03 aDT3+eco0.net
>>858
データ入力画面もフロントだよ。
現場でどうデータ入力させようとしてるのか書いてみろよ。

874:デフォルトの名無しさん
19/03/12 01:16:33.47 VCAYIPgk0.net
あの~そろそろ~

875:デフォルトの名無しさん
19/03/12 01:28:26.03 Ed2A5qJf0.net
ID:tsrenNBW0
馬鹿は早く死ねよ

876:デフォルトの名無しさん
19/03/12 01:58:18.19 ZdQx8dmlx.net
端から見てると何でこの人たちがVBAやらされる羽目になってるのか分かるよね

877:デフォルトの名無しさん
19/03/12 06:19:34.26 bIQY567R0.net
むしろこんな奴等に何かやらせる羽目になってる上司に同情するわ

878:デフォルトの名無しさん
19/03/12 07:21:53.89 hut6v0dp0.net
弊社では無理です

879:デフォルトの名無しさん
19/03/12 07:54:30.64 HcsazPCZH.net
2日ぶりに覗いたらまだ同じ話してて草

880:デフォルトの名無しさん
19/03/12 08:15:48.17 hut6v0dp0.net
うちなんかSQLServer導入して部署内誰でも使えるようにセッティングしてるのにずっとAccess使い続けてる。
Excel VBAからADOで繋げてるパターンなんで移行は手間じゃないと思うんだけど2~3人が試しに使い始めただけ。
思い通りになんていかないよ。
社内稟議通した人がお気の毒w

881:デフォルトの名無しさん
19/03/12 08:18:57.13 xgWEcpqAd.net
>>854
八ァ?
>>729から始まってるんだよな。
その前に「デ―タはExcelじゃなくてAccessに置け」なんて意見が何処にある?
>>729の前にAccessのことを言ってるのは>>728しか見当たらないんだが。
で、俺が言った>>728は別に「デ-タはExcelじゃ無くてAccessに置け」なんて言って無いんだが。
誰かにこうしろ等と言って無いし、データをAccessに置く等と限定してないぞ。
その上、「今時Access」?
お前は一体何様だよ。
どっちが上から目線だ?
上から目線でも回答が頓珍漢じゃなければセンスね―なんて書かね-よw

882:デフォルトの名無しさん
19/03/12 08:24:06.51 xgWEcpqAd.net
>>867
それはちょっと悲しいね。
まあ、ファイル単位で移動出来るメリットもあるからDBサーバーあってもAccess単体ってのもあり得るけどな。

883:デフォルトの名無しさん
19/03/12 10:47:16.64 InKVz4tPM.net
>>867
それはね、ローカルに置いてる(としとこう)Accessの中に人に見せられないデータがあるからだよw

884:デフォルトの名無しさん
19/03/12 12:45:42.87 fAXK62aoM.net
>>867
そもそもそれエンジンの話なのか帳票とかのデザインの話なのかはっきりしてくれ
あと人は今困ってないなら移行なんてしないよ、トラブル招くかもしれないしな
移行させたいならAccess使用禁止ぐらいしないとダメ
どうせ導入した奴もそこまで腹くくってないだろ

885:デフォルトの名無しさん
19/03/12 13:22:50.41 Kg1wec9nM.net
>>870
本当にあったりしてなw

886:デフォルトの名無しさん
19/03/12 15:31:02.26 4U4zzI9jM.net
>>867
SQLサバだとテーブル設計とか後からいじりにくいんだよな
連結フォームに全データ表示!とかも気楽に出来なくなるし

887:デフォルトの名無しさん
19/03/12 18:07:30.07 0BPWRBQDa.net
>>867
もしかしてクライアントサイドの管理ツールとか知らないのでは?

888:デフォルトの名無しさん
19/03/12 21:59:22.23 hut6v0dp0.net
>>871
テーブルを移行して欲しいんだけどやってくれないって状況
導入した人は権力があるのでそのうち強制するかも

889:デフォルトの名無しさん
19/03/12 22:19:10.50 aDT3+eco0.net
>>875
移行するメリットがないとねぇ
レコード数が少ないと速度なんてほとんど変わらないし…
100万レコードでも、きちんと作られてればAccessでも十分実用になるし…
まずは、めちゃ処理時間がかかるやつ一つを移行。ストアド作り込んで速くなるのを見せるとか。
せっかくSQLServer使うなら、ストアド使わないと勿体ない。ただレコード持ってるだけの箱になってしまう。
ストアドはとっつきにくいと思うが、レコードをこねくり回すような時間かかる処理には効果絶大。
逆に言うと、軽いデータや処理のmdbは移行後回し。(というより、そんなの移行しなくてよろしい。労力に見合わない)

890:デフォルトの名無しさん
19/03/12 22:41:48.72 aDT3+eco0.net
>>876
いきなりストアドで大規模ロジックを書こうとしても、どう書くべきか(どう書くのがふさわしいか)わからないと思う。
小ロジック大量レコード処理辺りから書いていきましょう

891:デフォルトの名無しさん
19/03/12 22:50:26.01 hut6v0dp0.net
>>876
自分含め誰もspとか知らない
一般的なプログラミングは割とできて、みんなVB/VBA、C#、C++、rubyとかでなんとかしようとしてる
まさにDBを箱としか見てない

892:デフォルトの名無しさん
19/03/12 23:05:56.66 0BPWRBQDa.net
ストアドはRDBの設計思想に反する邪悪な存在なので可能な限り避けるべきです
最適化をかけにくいのでインデックスの効いたクエリに比べて速度も遅くなります

893:デフォルトの名無しさん
19/03/12 23:30:38.78 hut6v0dp0.net
>>879
マジで!?

894:デフォルトの名無しさん
2019/0


895:3/12(火) 23:43:55.90 ID:hqmBJoBXa.net



896:デフォルトの名無しさん
19/03/12 23:46:34.37 hut6v0dp0.net
ExcelからAccessのデータを取得するきはこういうコードをクラス化してAccess立ち上げる必要ないようにした。
URLリンク(www.asahi-net.or.jp)
他言語使ってる人の事情は知らんけど似たような感じだと思う。
SQLサーバ向けのもADOだからインターフェース変えずにできた。
せっかくツールったんだから移行しろよ!
と思ってたけどもう何がいいのかわからんくなった。

897:デフォルトの名無しさん
19/03/13 00:27:28.10 lH3YwFhl0.net
>>875
それエンジンだけをすげ替えろって言ってるってことだよね?
そりゃわざわざ移行しないよ
メリットないから強権発動しかないと思うよ

898:デフォルトの名無しさん
19/03/13 00:29:37.94 lH3YwFhl0.net
>>880
>>879はなんか勘違いしてるだけ
ストアドは簡単に言うとサーバー側でロジックが動くだけの話だからインデックスが効くかどうかはストアドが発行するSQLに依存する

899:デフォルトの名無しさん
19/03/13 00:41:34.27 jknGRCgKa.net
>>884
879が批判してるのは、ストアドの中でループしたり一時テーブルを安易に多用したりするような使い方じゃないのかな

900:デフォルトの名無しさん
19/03/13 00:41:51.32 wiEoxIAU0.net
>>882
そのめんどくさいselect文を作るのがaccessやssmsじゃね?

901:デフォルトの名無しさん
19/03/13 00:46:32.81 A37ahhw6a.net
>>884
インデックスが効かないとは言ってませんが?
SQLなら期待される結果を返す範囲で最適化して高速化する余地があります
これはSQLが宣言的な言語だからできることです
最終的な答えが同じなら途中の結合や絞り込みを入れ替えたり省略することが可能です
逆にストアドは手続き型なので基本的に定義した順に処理が逐次実行されます
全く最適化できないわけではありませんが宣言的な言語と比べるとこの順序があるという性質のせいで制約が強く最適化のかかりが弱くなります

902:デフォルトの名無しさん
19/03/13 00:50:37.91 jknGRCgKa.net
>>887
理念には同意するけど、VBAスレでそれ言う?
Excel VBAこそ、本来は宣言型であるものを手続き型に落としてしまいパフォーマンスを低下させている例の最たるものだよ

903:デフォルトの名無しさん
19/03/13 00:52:52.41 lH3YwFhl0.net
>>885
変な使い方を前提にストアドが遅いとか言われても困る

904:デフォルトの名無しさん
19/03/13 00:55:59.30 jknGRCgKa.net
>>889
実際、ぐるぐるSQLを書いちゃうような人はDBに寄せた設計になるとストアド使いたがるからね

905:デフォルトの名無しさん
19/03/13 00:57:03.71 lH3YwFhl0.net
>>887
だからその逐次実行を行うのがクライアントなのかサーバーなのかが違うだけでしょ
そりゃストアドと単一のSQL比べたらストアドの方が遅いだろうけどクライアントが同様の処理すること思えば全体としては(ちゃんと設計されてりゃ)速くなるでしょ

906:デフォルトの名無しさん
19/03/13 00:59:49.50 wiEoxIAU0.net
>>891
SQLをコンパイルする必要がないからストアードの方が速くね?

907:デフォルトの名無しさん
19/03/13 01:13:08.97 GE2OVSGdM.net
>>892
理論的にはそうだけど、現実にはそこは全く関係ない
SQLのコンパイル時間はサーバーとの通信のコストと比較すれば無視してよい

908:デフォルトの名無しさん
19/03/13 01:22:09.36 jknGRCgKa.net
そもそもSQLの発行がパフォーマンスに響くような状況はSQLの粒度が小さすぎる
大抵そういう時はうまく纏めれば一桁速くなる

909:デフォルトの名無しさん
19/03/13 01:32:35.47 A37ahhw6a.net
>>891
アプリケーションとストアドの比較をしているのではなく同じ結果をもたらすSQLとストアドの比較をして言った
そもそもアプリケーションに書かれたビジネスロジックをそのままストアドに移植する時点で論外なので比較する発想がなかった

910:デフォルトの名無しさん
19/03/13 04:57:47.34 lH3YwFhl0.net
>>895
> 同じ結果をもたらすSQLとストアドの比較をして言った
そりゃSQL単体で書けるならその方が速いわなw
SQL単体で書けるのにストアド使うとか普通あり得ないでしょ?

911:デフォルトの名無しさん
19/03/13 06:19:07.90 A37ahhw6a.net
>>896
残念ながらありえます
しかも少なくありません
単にSQLが苦手な人
ストアドの方が速いと思ってる人
深く考えずアプリケーションコードストアドに移植してしまう人
SQLでいいのにストアドを書いてしまう人というのは何処にでも居ます

912:デフォルトの名無しさん
19/03/13 06:45:04.68 JacIk+SfM.net
>>897
>>889
お前の周りのことなんか知らんよw

913:デフォルトの名無しさん
19/03/13 07:00:38.50 A37ahhw6a.net
>>898
このスレッドにもいましたよね

914:デフォルトの名無しさん
19/03/13 07:12:08.08 JacIk+SfM.net
何を言いたいのかさっぱりわからんw

915:デフォルトの名無しさん
19/03/13 08:04:29.56 A37ahhw6a.net
煽りか

916:デフォルトの名無しさん
19/03/13 10:36:45.92 4v7XhTis0.net
一体いつまで同じ話をぐだぐだ続けるつもり?
プログラマ板のどっか雑談スレでやれよ低能プログラマどもは

917:デフォルトの名無しさん
19/03/13 11:12:26.48 JQlBKVP4M.net
だってここ以外ではマウントとれないんだもの

918:デフォルトの名無しさん
19/03/13 15:18:57.45 6SLKDaoM0.net
セルA1に =aaa と書き込んで数式エラーを作っておきます
その上で
Dim ary() As Variant
ary = Activesheet.Range("A1:A10")
MsgBox ary(1, 1)
結果:
型が一致しません
ary(1, 1)をVariant型の変数に代入する場合は何も起きないので
MsgBoxに表示するときに内部的にString型に変換するため
エラーがおきるのだろうと思っています
それはともかく、ary(1, 1) からエラー値を削除したいのですが
ary(1, 1) = ""
MsgBox ary(1, 1)
とやってもダメでエラーが出ます
ary(1, 1) を何もない状態にするにはどうしたらいいですか?
ary(1, 1)はこの先いろいろな操作をすることになるため、そのたびに
どこに隠れているか分からない数式エラーをチェックするのは大変なのです

919:デフォルトの名無しさん
19/03/13 15:24:34.25 6SLKDaoM0.net
ごめんなさい
>>904は取り消します
何か他の要因がからんでエラーが起きていたようです
上の例だとエラーはおきませんでした
ごめんなさい

920:デフォルトの名無しさん
19/03/13 15:25:55.52 ril+FLd/0.net
とりあえず
Dim ary() As Variant
はエラーが出るので
Dim ary As Variant
に変更している

921:デフォルトの名無しさん
19/03/13 15:26:27.13 YE/558h40.net
あー、荒れてるところ申し訳ないのですが、
ちょっと、質問…いいですかね…
初心者なんでさっぱり文が思いつかないから
例文みたいなのを作ってほしいんですけど…
B3:F○○の表があります。
・B3:F10にそれぞれセルに名前を付けていきたい。
・B3を「_0」としてC3「_2」というように、+2ずつ、
F3「_8」までいったらB4「_10」と同じように+2して、
最後のF10までやりたい。
こんな感じのってできますか??
他のシートでも同様の作業を行ないたくて、
B3から、F列の表で、数字が入力されている部分だけ名前をつけたいから、
if文とかで、数字が入力されていなかったら名前をつけるのを終わるみたいなできたら嬉しいです。

922:デフォルトの名無しさん
19/03/13 15:27:20.71 ril+FLd/0.net
>>905
あ、はい。

923:デフォルトの名無しさん
19/03/13 15:38:57.02 ril+FLd/0.net
>>907
先に範囲選択してからマクロ実行
セルに何も入ってない場合に終了(数字かどうかは判定していない)
Sub Macro1()
番号 = 0
For Each セル In Selection
If セル.Value = "" Then
Exit Sub
Else
ActiveWorkbook.Names.Add Name:="_" & 番号, RefersTo:="=" & セル.Address
番号 = 番号 + 2
End If
Next
End Sub

924:デフォルトの名無しさん
19/03/13 16:22:51.30 kv9h9xOp0.net
以前、ifの条件に合わない時に実行したい時はthenに続けてelseと書いて実行したい内容を書くよりも、条件をnotで括った方が処理が速いと言われました
実際に計測したら確かに僅かな差が有ったのですが何故なのでしょうか

925:デフォルトの名無しさん
19/03/13 17:11:51.63 mnfDUUl9d.net
>>909
ありがとうございます!
やってみます!

926:デフォルトの名無しさん
19/03/13 20:59:56.96 p9thMYjCx.net
>>910
Ifブロックは先頭の条件から逐次Boolean評価していって、一度Trueと判定されるとそこで条件を満たす場合の処理を実行し、残りの条件は評価しない仕組み
Elseのケースでの処理を実行するとなると、If条件とそれ以降のElseIf条件全てにおいてTrueが成立しないという条件が必要になる
なので、同じ条件数のIfブロックで比較すると、Elseより前に置かれた条件で処理を行わせる方がElse以降で処理させる場合よりも条件評価を行う回数が少なくなる

927:デフォルトの名無しさん
19/03/13 21:38:41.07 kv9h9xOp0.net
>>912
if not true then temp = 0
if true then else temp = 0
の二つのif文があった時、後者はtrueの評価の後にelseという評価をしてるという事でしょうか

928:デフォルトの名無しさん
19/03/13 21:39:18.39 hyG2utnjr.net
>>912
VBAはショートサーキットしないけどな

929:デフォルトの名無しさん
19/03/13 21:40:15.61 uWZ9EglX0.net
>>912
何か微妙に勘違いしてる?
Elseifは関係ないぞ

930:デフォルトの名無しさん
19/03/13 21:43:27.67 uWZ9EglX0.net
>>913
elseという評価はしていない
評価というのは、判定してると言っていると思うが、判定はifのとこで終わってる

931:デフォルトの名無しさん
19/03/13 21:53:50.43 Blqbf86O0.net
はっきりさせておきたい
VBAのとき、
if A and B and C then
ってなってるとき、A、B、C全部必ずチェックするのか、AがFALSEだったら、もうB、Cは無視するのか
どっち?
C言語みたいに、& と && みたいなandに2種類ないよね

932:デフォルトの名無しさん
19/03/13 21:54:09.23 mPSJoOjB0.net
ショートサーキットないおかげでどんどんネストしてゆく…

933:デフォルトの名無しさん
19/03/13 22:06:55.44 x7l49vOfa.net
ショートサーキットなんてねえよw

934:デフォルトの名無しさん
19/03/13 22:10:56.03 Blqbf86O0.net
>>919
A、B、C全部必ずチェックすんだね

935:デフォルトの名無しさん
19/03/13 22:39:10.74 BElBpZaB0.net
>>917
そういう場合は
Select Case False
Case A, B, C
' !( A && B && C)の場合の処理
Case Else
' A && B && C の場合の処理
End Select
と書けばショートサーキットになるよ。
直感的じゃないけどね。

936:デフォルトの名無しさん
19/03/13 22:41:50.24 MTZmUGDO0.net
不慣れな初心者ですみません
リストシートのボタンを押すと
リストに入力していたデータ行数分書類型シートが作られるのですが
その作られた書類型シートにもそれぞれボタンがあり
各ボタンを押すとデータ送信用シートが作られる二段構造?になっています
書類シートからデータ送信用シートを作るには
いちいち各シートのボタンを1つずつ押さねばならず大変です
選択したシートのボタンを一括で押すことのできるマクロはありませんでしょうか…?
本当はリストからボタン1つで書類シートとデータ送信用シートができれば最高なのですが
そこまでの改変は難しそうで…

937:デフォルトの名無しさん
19/03/13 22:46:46.17 TdaaOBVz0.net
>>922
それぞれのボタンに組まれたマクロを一つのボタンにまとめる

938:デフォルトの名無しさん
19/03/13 22:48:55.81 ril+FLd/0.net
作り直した方が遥かに楽なパターン

939:デフォルトの名無しさん
19/03/13 22:53:39.78 TdaaOBVz0.net
ごめん>>923は内容勘違いなので忘れて
一括で送信シート作るボタンを一つ作ってその中に、
forで選択した書類シート分回す
 その書類シート内の送信シートを作るボタンClickを呼ぶ
Next
ってのはどうですか

940:デフォルトの名無しさん
19/03/13 23:04:41.65 ril+FLd/0.net
>>922
見られちゃマズイデータ消してアップロードすれば誰かが作ってくれると思う

941:デフォルトの名無しさん
19/03/13 23:09:57.29 Blqbf86O0.net
>>921
そんな技があったのね。 ありがと

942:デフォルトの名無しさん
19/03/13 23:13:30.84 nm3P40mI0.net
Clickを呼んでも、クリックするわけじゃないが、
クリックされちゃいそうで怖い。

943:デフォルトの名無しさん
19/03/14 01:04:48.38 D/xLb5AQ0.net
ピボットテーブルの集計結果使いたい時って今まで計算用シートで作成→せる決め打ちで取得 てやってたんだけど稀にカラムずれる
こういうのvbaだけで計算する関数とかないよね?

944:デフォルトの名無しさん
19/03/14 01:36:50.73 lGFaI2Uva.net
ピボットテーブルはアドホックな集計や分析に使うもんだろ
やることが決まってるんなら要らん

945:デフォルトの名無しさん
19/03/14 04:24:36.89 ci+9chmP0.net
>>922
現物見てないからよくわからないんだけど、
リストシートや書類シートにボタンがついてるってのは
マクロ有効ブックの中にそれらのシートがあるってこと?
出来ればデータとマクロは別のブックに分離しといたほうが良いんじゃないかな。
そういう作りにしてれば改修も簡単になりそう。

946:デフォルトの名無しさん
19/03/14 08:13:54.22 YBKQY7Hwd.net
>>927
普通に
If A Then
If B Tnen
If C Then
A And B And Cの時の処理
EndIf
EndIf
EndIf
とするかな。
でも、これでの速度アップより、他に速度ダウン要因を減らした方が良さそう。
自分はIf A AndB And C Thenを気にせず使うな。

947:デフォルトの名無しさん
19/03/14 08:39:22.13 ssjF3MUN0.net
>>932
Aが成り立たないときBを評価するとエラーで止まってしまう場合とかが悩ましいんだ

948:デフォルトの名無しさん
19/03/14 09:04:59.36 Nl2IbJZtM.net
>>921
それ保証されてるんだっけ?

949:デフォルトの名無しさん
19/03/14 09:13:36.88 laeryNOTM.net
>>932
うん、他にやることありそうな気がするぞ
昔の俺みたいに実はコンパイルしてなかったとか笑

950:デフォルトの名無しさん
19/03/14 09:57:51.33 ssjF3MUN0.net
>>934
一応言語規格上保証されてるね

951:デフォルトの名無しさん
19/03/14 10:12:09.94 Nl2IbJZtM.net
>>936
どこかでドキュメント化されてる?

952:デフォルトの名無しさん
19/03/14 10:14:23.93 hUI7fwKe0.net
なんとなくだけど、VBAであまり離れ業を使わないほうが良いとは思う

953:デフォルトの名無しさん
19/03/14 10:34:24.95 ssjF3MUN0.net
>>937
URLリンク(docs.microsoft.com)
にある Published Version の PDF の 5.4.2.10 Select Case Statement に書かれている。
82ページの一番下二行だね。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch