Excel VBA 質問スレ Part59at TECH
Excel VBA 質問スレ Part59 - 暇つぶし2ch509:デフォルトの名無しさん
19/02/27 06:45:27.86 OKB4dgT5x.net
>>500
これって 1 & "0" のところが 1 + 0 と評価されて出力が 1 になるのか?

510:デフォルトの名無しさん
19/02/27 09:24:25.27 94mgNWr4H.net
数値を“”で括って連結させるって普通はやらないよな
もはやクレーマーの域

511:デフォルトの名無しさん
19/02/27 09:27:38.25 ev0DPtJU0.net
>>501
ならない。
---------------------------
Microsoft Excel
---------------------------
10
---------------------------
OK
---------------------------

512:デフォルトの名無しさん
19/02/27 10:08:05.65 TCTVEEoa0.net
>>502
アホはお前

513:デフォルトの名無しさん
19/02/27 10:14:24.05 94mgNWr4H.net
>>504
自己紹介かな?

514:デフォルトの名無しさん
19/02/27 10:21:18.29 TCTVEEoa0.net
>>505
本当、馬鹿は食いつきがいいな。エラーも起こさずに動くのが問題なんだよ。
馬鹿には難しいか?

515:デフォルトの名無しさん
19/02/27 10:48:04.11 hD6s3+cfM.net
&演算子が勝手に文字列に変換するのは利便性考えたらわかるし
Long型の変数に文字列代入する時に暗黙のキャストするのもわからなくはない
けど警告ぐらいは出してほしいね

516:デフォルトの名無しさん
19/02/27 10:48:12.18 94mgNWr4H.net
>>506
それはエラーであってほしいというお前の願望だろ

517:デフォルトの名無しさん
19/02/27 11:32:27.96 WN1Wln/+0.net
VBAにも当然、厳密な構文ルールは存在するだろう
数字 & 文字列は文字列にするってのがルールじゃね。 一度覚えたらそれでいい

518:デフォルトの名無しさん
19/02/27 11:45:10.68 K1qNq431M.net
& が + に解釈されたらたまったもんじゃない

519:デフォルトの名無しさん
19/02/27 12:38:47.93 JcvtiT+vd.net
>>497
Variantは意識して使う。
型安全も意識する。
当然、暗黙の型変換でどうなるのかも意識して組んでいれば、そうそう問題になることもあるまい。

520:デフォルトの名無しさん
19/02/27 12:41:38.23 JcvtiT+vd.net
どんな言語でもツボは有るわけでね。
押さえてコードを書けない奴がアホなだけだろ。
初めて触った初心者じゃあるまいし警告なんて全く必要無い。

521:デフォルトの名無しさん
19/02/27 13:03:51.61 aJqXXkY2d.net
>>509
代入先が数値だろ

522:デフォルトの名無しさん
19/02/27 13:08:23.01 OA+HeXxoM.net
同じマクロを使っている複数の文書があって、マクロの一部を修正したいんですが、
別ファイルのモジュール内の変更を行うマクロは VBA を使って書けますか?
または、別ファイルのモジュールを削除(開放)してインポートする形でも構いません。
実際はワードでやりたいことですがワードVBAスレがなさそうなのでこちらで質問しました。
Norm


523:al を書き換えて対応するというのはできない前提です。



524:デフォルトの名無しさん
19/02/27 13:17:59.19 aJqXXkY2d.net
>>514
スレ一覧よく見てみろ。そういういい加減で他人にすぐ聞くからできないことだらけなんだよ。

525:デフォルトの名無しさん
19/02/27 13:19:02.81 K1qNq431M.net
ByRef x As Variant

526:デフォルトの名無しさん
19/02/27 13:19:50.19 94mgNWr4H.net
>>514
書けるよ

527:デフォルトの名無しさん
19/02/27 14:41:22.10 +oDGw9vfM.net
>>503
Option Explicit付けてもエラーにならないのかな?

528:デフォルトの名無しさん
19/02/27 15:47:12.82 WN1Wln/+0.net
>>510
お前は何を言ってるんだ?
& は文字の連結子だろ。 だから、文字としての1と0を連結したんだよ
>>513
代入先は数値だな。 文字処理をしてそれがVariantだからそれから数値変換したんだな
文字処理が優先なんだろ

529:デフォルトの名無しさん
19/02/27 15:48:15.94 WN1Wln/+0.net
>それがVariantだから
すまん。これはなし
まあ変な構文ではある

530:デフォルトの名無しさん
19/02/27 16:29:49.69 K1qNq431M.net
>>519
だから連結じゃなく加算と解釈されたらたまったもんじゃない
と言っている

531:デフォルトの名無しさん
19/02/27 17:58:08.46 HrTieKXOM.net
>>507
& 演算子は文字列同士の連結だから
2 & 1 ⇒ "21"
"2" & 1 ⇒ "21"
2 & "1" ⇒ "21"
"2" & "1" ⇒ "21"
になる
逆に - 演算子は数値同士の引き算だから
2 - 1 ⇒ 1
"2" - 1 ⇒ 1
2 - "1" ⇒ 1
"2" & "1" ⇒ 1
になる
問題は + 演算子で普通は数値の足し算なんだけど両辺が文字列の時は文字列連結になるので
2 + 1 ⇒ 3
"2" + 1 ⇒ 3
2 + "1" ⇒ 3
"2" + "1" ⇒ "21"
になる
なのでVariant使っててA + Bとかやってると両方が文字列の時にはあ?ってなことになったりする

532:デフォルトの名無しさん
19/02/27 18:25:55.24 hD6s3+cfM.net
>>522
>"2" + "1" ⇒ "21"
&、-と合わせて考えるとめちゃくちゃ気持ち悪いなこれ

533:デフォルトの名無しさん
19/02/27 18:25:56.15 U+okKr8Fa.net
出力する時以外に文字列と他の型を演算させる需要ってあるか?
すごい変なプログラム書いてそう

534:デフォルトの名無しさん
19/02/27 18:31:15.76 hD6s3+cfM.net
>>524
Cells(1,1) + Cells(1,2)
とか気軽に書いて文字列セルなのに気づかず発狂するがいい

535:デフォルトの名無しさん
19/02/27 18:45:49.28 U+okKr8Fa.net
>>525
セルの値同士の計算をダイレクトにやろうとする発想にまず疑問を感じる

536:デフォルトの名無しさん
19/02/27 18:48:38.08 JcvtiT+vd.net
だから、型を意識してコード書かない奴は駄目なんだ。
あと、Cells(1,1) + Cells(1,2)じゃなくて、Cells(1,1).Value + Cells(1,2).Valueとすべき。

537:デフォルトの名無しさん
19/02/27 18:53:54.71 sssEi30aM.net
>>524
セル値が16進で、その値で計算させるとかかな。
昔はよく使ってたが、最近は使わなくなったな…

538:デフォルトの名無しさん
19/02/27 19:19:30.96 s/3R2a1B0.net
>>527
いや、そこじゃない
cellsのデフォルトプロパティがvalueな事ぐらい皆分かっている
valueの型がヤバイんだ

539:デフォルトの名無しさん
19/02/27 19:31:13.45 zqU1UpTE0.net
>>527
> だから、型を意識してコード書かない奴は駄目なんだ。
そんなのわかってるからいちいちマウント取りに来なくていいよ
世の中には変数宣言すらしないやつとかもいるし使い捨てコードとかもある

540:デフォルトの名無しさん
19/02/27 19:35:36.50 kQabADAE0.net
本当によくできたプログラムっていうのは変数がどんどん減っていくものだよ

541:デフォルトの名無しさん
19/02/27 19:49:19.80 J+jPuAvg0.net
やっぱVBAってクソだわ

542:デフォルトの名無しさん
19/02/27 19:52:19.85 Vhp/GCq70.net
>>532
と罵りたいだけが為にここに来るんだろ?  プ

543:デフォルトの名無しさん
19/02/27 20:02:27.43 J+jPuAvg0.net
やっぱVBAスレってクソだわ

544:デフォルトの名無しさん
19/02/27 20:17:03.40 INBREE+00.net
クソレスすんなプロさん

545:デフォルトの名無しさん
19/02/27 21:22:24.52 rA0fzWNE0.net
>>531
デバッグはやりづらくなるけどな

546:デフォルトの名無しさん
19/02/27 21:48:46.20 WN1Wln/+0.net
まあやっぱり、1 & "0" とか  "2" + 1
とかが出てきたら、エラーで落とすのが普通だろうなあ
で、プログラマはそこで、Val関数で数値にするとか逆に文字列にするとか
やっぱり型変換、確認をプログラムの中に入れながら作るのが本来の筋だと思うわ
そもそもの構文を変えないのであればね

547:デフォルトの名無しさん
19/02/27 22:04:09.28 6/kMoeDHa.net
どうでもいいよ
所詮VBAだし

548:デフォルトの名無しさん
19/02/27 23:43:00.80 APPBNRQYM.net
>>538
そういうこと

549:デフォルトの名無しさん
19/02/28 00:41:55.86 ULaFt4eB0.net
質問です。お願いします。
public sub shuukei()
'集計してシートに書き出してそそのシートのコピーを別ファイルとして保存
end sub

こういうコードを作りましたが、少しでも速く処理されるようにもっと工夫したいと思っています。
そこで、少し書き直しては速度に変化があるか確認したいのですが、コードの実行速度を
測る方法がわかりません。教えていただけないでしょうか?
public sub jikantest()
  '計測スタート
  call shuukei
  '計測終り
  msgbox かかった時間
end sub

こんな感じでいちいち確認したいです。

550:デフォルトの名無しさん
19/02/28 00:46:39.13 3O1mZe4/0.net
>>540
dim st as single, ed as single
st = timer
(処理)
ed = timer
debug.print ed - st & "sec"
いつもこんな感じでやってる。

551:デフォルトの名無しさん
19/02/28 00:47:31.02 CZa6uBrL0.net
Debug.Print Now でもしとけ

552:デフォルトの名無しさん
19/02/28 00:51:18.30 ULaFt4eB0.net
>>541
ありがとうございました!

553:デフォルトの名無しさん
19/02/28 01:23:05.26 8R6HTxA70.net
変数の型はトレースの時だけでもシンタックスハイライトして欲しい。
それか左辺に合うように強制キャストで。

554:デフォルトの名無しさん
19/02/28 02:06:55.62 u4sOxAKE0.net
>>540
早くなってもわかりにくいのはやんない方がいいぞ

555:デフォルトの名無しさん
19/02/28 06:51:30.57 ULaFt4eB0.net
お恥ずかしい質問ですが、もうひとつお願いします。
私は、変数の中身でもなんでも、とにかく確認したいときはmsgboxを使うんです。
そのほうが楽だし。
でも、こういう場所で回答するような人のほとんどは、>>541-542さんのように、
debug.なんとか ってのを使いますよね?
よくわからないけど、debugって、msgboxとは違って、どこかのウィンドウに表示させるってことだけ
は知っています。
そして、msgboxよりも、そっちの方がなんとなく本格派っぽいことも感じてます。
みなさん、どうしてmsgboxよりそっちを使うんですか?本当にそっちが便利なんですか?

556:デフォルトの名無しさん
19/02/28 06:56:12.35 PI/gJuny0.net
>>546
msgboxだと毎回画面が出ちゃうから

557:デフォルトの名無しさん
19/02/28 07:04:09.83 TTqJ1VR80.net
Debugって俺も使ったことないんだが、過去何行くらいまで遡れるの?
それとその結果ってファイルに出力できる?

558:デフォルトの名無しさん
19/02/28 07:09:57.92 syDDbQ630.net
自分はstopとローカウルィンドウ派だな

559:デフォルトの名無しさん
19/02/28 07:10:06.15 3O1mZe4/0.net
>>546
OK押すのメンドいし、押したら消えるし。
Printならイミディエイトウィンドウにどんどん溜まっていくから比較しやすいし。
VBE上でCtrl+Gで呼び出せる。
コード書くときは常に表示してるな。
他にもいろいろ便利に使えるからGGってみて。

560:デフォルトの名無しさん
19/02/28 07:28:40.77 /X5EyKzha.net
debug.printなら開発画面を見ない他の使用者が
気付かないで済む

561:デフォルトの名無しさん
19/02/28 08:31:53.34 3CdGs56rM.net
>>540
ちょっと本格的にやるなら…
URLリンク(blogs.yahoo.co.jp)
注意!
中にも書いてあるけど使用時にコードを改変するから使うならバックアップはちゃんと取ること

562:デフォルトの名無しさん
19/02/28 12:28:10.25 wbPQJw42d.net
>>531
そうとも限らない。
速度の為に変数増やすこともあるから

563:デフォルトの名無しさん
19/02/28 12:32:41.06 wbPQJw42d.net
>>548
そんなに大量には残らないね。
1000行くらいか?
大量に残したいときは普通テキストファイルに書き出すだろ。

564:デフォルトの名無しさん
19/02/28 12:33:37.47 qWkUq+5ha.net
>>553
まああくまで傾向だな
システム開発に絶対はないから大まかに語るしかない
しかしまあプログラマって柔軟性がないから何か意見を言ったら必ず特殊な状況を想定して反論しようとする人が出てきて面倒くさいな

565:デフォルトの名無しさん
19/02/28 13:23:20.67 qor22oN3H.net
柔軟性がある人は出世するからね

566:デフォルトの名無しさん
19/02/28 13:59:45.70 TjDXn6TQM.net
>>555
後々のテスト工程考えてるからじゃない?
そこまで考慮しなくても…となる気持ちは分かる

567:デフォルトの名無しさん
19/02/28 14:20:36.03 x4ZPjfd7M.net
考慮すべき場面とするべきでない、しても意味がない場面の判断ができないとも言える

568:デフォルトの名無しさん
19/02/28 14:36:57.48 qor22oN3H.net
だから日本は開発が遅いんだよ
アジャイルでやれ

569:デフォルトの名無しさん
19/02/28 14:57:38.31 7AaSmpPf0.net
想定される状況なんか結局は本人にしか分からないし、説明すんのもめんどくさい
まあ本人が気付いてないこともあるけど

570:デフォルトの名無しさん
19/02/28 17:57:19.76 3CdGs56rM.net
>>555
決めつけで語って指摘されたら逆ギレかよ w

571:デフォルトの名無しさん
19/02/28 18:42:40.55 jqfgz8pY0.net
ーーここまで型変換関数なしーー
身内が意味がわかるっていうなら変換関数抜きにしてもいいかもしれない、けどコンテキスト的に関数噛ませたい

572:デフォルトの名無しさん
19/02/28 18:45:13.08 OctLDBwCx.net
Debug.Assertも割とよく使う

573:デフォルトの名無しさん
19/02/28 21:21:18.29 7AaSmpPf0.net
Variant使わなきゃいい

574:デフォルトの名無しさん
19/02/28 22:12:12.40 TWIU4lxdM.net
>>564
いやいやいやいや
ByRef As Variant
の意味論がわかってないだろ

575:デフォルトの名無しさん
19/02/28 23:20:59.71 JVzuLoidx.net
Variant型がないとそれはそれで不便
実行時にならないと変数の保持データの参照型やデータ構造が決定できないような関数を定義するときには必須
Object型では限界があるし、多態性とか考えたら特に

576:デフォルトの名無しさん
19/03/01 00:53:35.24 oijdm3qva.net
VBAにもInterfaceがあるの知らない人かな

577:デフォルトの名無しさん
19/03/01 08:24:19.03 KSyELWIpd.net
だから意識して使うぶんには良いんだよ。
Variant配列で高速化は良くやるだろ。
あるいはあえていろんな型を受け付ける関数を作る場合とか。
俺はInteraceはあまり使わんね。
同じプロパティを持ったクラスを複数作ってグループとして使う場合でもそこまでしなくて良いだろと考える。

578:デフォルトの名無しさん
19/03/01 08:58:16.79 IB7Yh9y1a.net
プログラムの基本的な良い習慣を実践すればVariantなんてそう使うことはない
使うとしてもシートIOなど僅かな用途だけだから業務ロジックまで影響することはまずない

579:デフォルトの名無しさん
19/03/01 09:03:46.13 BWIoX5Sk0.net
プロ雑談者どものくだらん蘊蓄語り合いなんぞどうでも良いから質問者の方々は
遠慮なさらずにどうぞ~

580:デフォルトの名無しさん
19/03/01 12:55:03.48 3XNO5Z9qM.net
コードって色々書く場所あると思うんですけど、ある程度共通の切り分けってあるんですか?
フォームにはあまりややこしいものはかかないで標準モジュールを使うとか。
逆にフォームで書けるものは複雑でもそこで終わらせたほうがいいとか。
今迷ってるのはシート1のデータを加工してシート2のデータにマージさせる場合どこに書けばいいんだろうってことです。
そのシートごとに別けるとバラけて解りにくくなるしみたいな感じです。

581:デフォルトの名無しさん
19/03/01 13:04:09.15 SCR8DJeBM.net
所詮VBAだしどうでもいいよ
VBAの可読性・保守性を高める唯一の指針があるとしたら、極力VBAを書かないでワークシートの機能を活用することかな

582:デフォルトの名無しさん
19/03/01 13:26:59.89 HgS5037SH.net
>>571
標準モジュールに Sub MergeSheet1To2 とか作ってCallすれば、他人が処理部を見なくても「このボタンを押すとマージされるんだなぁ」と想像ができる。
自分はフォーム内は処理に使うデータのチェックくらいにしてる。

583:デフォルトの名無しさん
19/03/01 14:04:11.91 +h/xS+gL0.net
フォームモジュールって細々としたイベントのプロシージャであふれちゃって見にくい
だからできるだけ標準モジュールに切り分けてる
例えばフォーム上の複数のTextBoxに全く同じ入力規則を設けたい時なんかは
TextBox・KeyCode・Shiftを引数とするプロシージャを標準モジュールに書いて使い回ししてる
さっきもそういうの書いてた

584:デフォルトの名無しさん
19/03/01 17:47:45.49 jYXMQwAma.net
>>571
シート1 IOクラス
シート2 IOクラス
コンバータークラス
マージサービスクラス

585:デフォルトの名無しさん
19/03/01 18:53:01.98 KSyELWIpd.net
>>571
そのフォームで完結させたい時はフォームに全部書く。
汎用的なのは標準モジュール、汎用的でなくてもいろんな所から使い回す場合も標準モジュールだな。
シートモジュールにはシートのイベントプロシージャ以外書かないのが基本だけどそのシートのイベントプロシージャと一緒にしたい理由でシートモジュールに書くこともある。
意味論というか、何処に書くかは内容で決める。その方が後でコード見る時に視認性も良くなる。

586:デフォルトの名無しさん
19/03/01 20:10:20.22 9ceAGmrya.net
俺ならスコープで書く場所変えてる

587:デフォルトの名無しさん
19/03/01 20:18:09.30 S/p2I5Nx0.net
シート1だけでしか使わない関数はシート1
その関数の中で使う関数で他でも使う汎用関数は標準モジュール
シート1のデータを加工ってあるが、それが将来にでも他のシートでも使いそうならその加工関数は汎用化して
標準モジュール。 シート1でしか使わないのならその加工関数はシート1に書く

588:デフォルトの名無しさん
19/03/01 21:39:17.32 41cCIQF20.net
上級者の人がどう使っているかなんとなく解ったような気がします。とりあえず
【クラスモジュール】汎用性のある関数
【標準モジュール】 大きな処理
【シートモジュール】【フォーム】極力使わないが他と絡まない短いコードなら完結しても良い
という感じで試してみようと思います。
あとは関数名の最後に呼び出しする関数がある場所を付けてみようと思います。
何をやりたいかで構成も変わると思うのでそこらへんも加味しながら試してみます。
参考になりました、ありがとうございます!

589:デフォルトの名無しさん
19/03/01 22:34:27.56 KieDV9lDM.net
ここに上級者なんていないぞ

590:デフォルトの名無しさん
19/03/01 22:48:58.94 eQhW3/JV0.net
>>579
関数名の最後になにを付けるって?

591:デフォルトの名無しさん
19/03/01 23:05:06.38 jYXMQwAma.net
また一人、道に迷ってしまった
やっぱりVBAで勉強するのは非推奨ダナ

592:デフォルトの名無しさん
19/03/01 23:30:05.02 zWZoP6hm0.net
>>546
俺もmsgbox。
イミデは、知らないうちにウインドウが消えちゃうから。
プロパティもそう。
何で勝手に消えるんだろ。

593:デフォルトの名無しさん
19/03/02 01:21:31.95 Po9hNmd9x.net
>>579
汎用性のある関数を記載する場所だけど、VBAの仕様ではクラスモジュールではなく標準モジュールの方が都合が良いよ
何故なら自作のクラスモジュールに記述した関数を呼び出す場合、その自作クラスのオブジェクトのインスタンスを生成した後にそのオブジェクトのメソッドとして書くという手間が要る
つまりマシンメメモリの無駄食いになるしコーディング量も増える
標準モジュールならば関数名を書くだけで呼べるので余程気楽
適当にググったときに出てくる、OOP原理主義のJavaプログラマあたりが言うところの「汎用性のある関数はクラスに」っていう考え方は、VBAには当てはまらないので注意だよ

594:デフォルトの名無しさん
19/03/02 02:50:08.40 eoNuxzNL0.net
>>572
ワークシートなんて可読性最悪じゃん
セルには数式が1つしか書けないし条件付き書式も内容を確認するのが面倒
条件付き書式が設定されてる範囲を視覚化する方法ってないよな?俺が知らないだけ?

595:デフォルトの名無しさん
19/03/02 03:08:30.41 vHLv5v7t0.net
>>585
数式タブ→数式の表示

596:デフォルトの名無しさん
19/03/02 09:24:48.87 Po9hNmd9x.net
>>572
>>585
可読性を高める唯一の方針とは言わんが、正直下手に変数にブックレベル以上の参照スコープを持たせて値やオブジェクトを操作するくらいならワークシートの機能を使った方がよくねって場面はいくらでもあるな
エラーとかでプログラムが停止したときにセル値と違って変数に格納された参照ポインタは揮発するし

597:デフォルトの名無しさん
19/03/02 09:34:34.03 heck9gfNa.net
ワークシート関数の何が良いかというと副作用がないことだよ
ぶっちゃけ重要なのはそこだけ
それ以外ではセル内にだらだら式を書くと醜いなどデメリットしかない
なのでVBAで普通に副作用がない関数を書けばいい
副作用のない関数ならVBAからもセル内式からも使いやすい
しかもセル内式と違って見やすく管理しやすい

598:デフォルトの名無しさん
19/03/02 09:47:47.22 Po9hNmd9x.net
VBAの方が見やすくて管理しやすくてワークシート関数は見にくいって図式が成り立つかどうかは正直処理を書くやつのスキル次第だけどな
ワークシート関数は必ず内部スコープが()で括られるリスト形式だから、処理構造が簡潔に可視化できるメリットがあるとも言えるわけだし

599:デフォルトの名無しさん
19/03/02 10:15:37.68 VydunwR60.net
自分は>>572とほぼ正反対のやり方でやってきた
シートは使い捨てのデータとちょっとした設定情報を置いたり、あとは結果を出力する場所としてしか使わないな。
使い捨てのは別だけど、ツールとして繰り返し使うブックのシートに関数はほぼ書いてない。

600:デフォルトの名無しさん
19/03/02 10:26:10.19 heck9gfNa.net
>>589
セル内数式はネスト入るとすぐに醜くなるじゃん
それに式に名前をつけて管理できないのもメンテナンス性を悪化させてる

601:デフォルトの名無しさん
19/03/02 10:34:03.78 1SfH4HCRa.net
>>591
式に名前を付けたければ単一値ならセルに名前付けりゃいいし、ベクトルならテーブルにしてカラム名付けりゃいい
VBAで関数自作してもいい
VBAの中でループぶん回すよりは遥かに見通し良いわ

602:デフォルトの名無しさん
19/03/02 10:46:06.68 heck9gfNa.net
>>592
そもそもセル名前自体が管理しにくいので論外
セル名と数式の関係性がパッと見てわからないし
セル名と数式がひも付けられて管理されてると言われなきゃ後任が気付かない
VBA関数ならこの関数名はこの定義って誰でも一目でわかる
本来の出力でない余計なカラムはノイズになって邪魔
名前で管理したい項目が増えたらノイズだらけになってなにを説明したい表なのかわからなくなる

603:デフォルトの名無しさん
19/03/02 10:57:15.96 ZJ+HN4z+0.net
visual studioに慣れ切ってしまってるのでVBAエディタがマジで苦手・・・

604:デフォルトの名無しさん
19/03/02 11:26:41.59 PSsyx6QoM.net
>>593
VBAでワークシート関数を作るのは否定しないよ
最悪なのはワークシート関数(VBA含む)でできることをVBA内でループ回す馬鹿

605:デフォルトの名無しさん
19/03/02 11:40:34.50 heck9gfNa.net
>>595
こ文脈でループを回すの意味がわからないしどっから出てきて何を意味してるんだ?

606:デフォルトの名無しさん
19/03/02 13:55:25.27 WupyvY1Q0.net
話変わるがセルのコピーとか移動したときに条件付き書式が壊れてやたら重くなって直すの苦労したことある

607:デフォルトの名無しさん
19/03/02 15:18:36.62 EfeqCtIS0.net
お前らまず、
ワークシートの機能を活用する
というのをどういうことかちゃんと合わせてから話してくれるか

608:デフォルトの名無しさん
19/03/02 18:22:41.70 BmvnLX83x.net
>>598
ワークシートの機能ってのはワークシートの機能一般のことでしかないだろ
ワークシートの特定の機能を想定して話をしてるんじゃない
ワークシートの機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話

609:デフォルトの名無しさん
19/03/02 19:24:09.91 PK2Geudt0.net
ワークシートって言いすぎww
Withでまとめたくなってきたわ。

610:デフォルトの名無しさん
19/03/02 19:30:50.79 6n8BrDHBH.net
With ワークシート
.の機能ってのは
.の機能一般のことでしかないだろ
.の特定の機能を想定して話をしてるんじゃない
.の機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
End With

611:デフォルトの名無しさん
19/03/02 20:23:41.79 VydunwR60.net
ワークシートの機能って単独のワークシート関数で実現できることなの?
それをVBAでやるのは確かに馬鹿らしい。
そうじゃないならVBAのほうがいいな。

612:デフォルトの名無しさん
19/03/03 01:17:47.50 5kU0Dorz0.net
>599
だからワークシートの機能一般ってなんのことを言ってるの?
セルの計算式?
計算式用のワークシート関数?
Application.WorksheetFunction?

613:デフォルトの名無しさん
19/03/03 03:16:39.28 1gVEOeax0.net
VBA以外のExcelで出来ること全てだろ
理解力低過ぎないか?

614:デフォルトの名無しさん
19/03/03 11:57:08.93 XBWTxj+a0.net
なんでVBAを外すのか分からない
このスレにいる連中ならワークシートにはイベントも含まれるという感覚の方が普通でしょ

615:デフォルトの名無しさん
19/03/03 12:44:05.38 87SKey7q0.net
シートを方眼紙だと思っている人の視点での機能一般だろう。
ここの人たちは、クラスモジュールの1つくらいの感覚かもしれんが。

616:デフォルトの名無しさん
19/03/03 14:18:18.29 ilhG1tLW0.net
そこはかとなく臭うというか湧き出るダサさが嫌い

617:デフォルトの名無しさん
19/03/03 18:57:15.36 dGd12yAna.net
EXCELの全ての機能のうちVBAを除いた残りってことじゃね

618:デフォルトの名無しさん
19/03/03 19:26:33.74 2dKZwCIHx.net
エクセルのオブジェクトモデルでメソッドが提供されてるような機能をわざわざVBAでスクラッチするなって意味もあるんじゃね
ListObjectオブジェクト(テーブル)の存在や機能を知らずに、同一列内のセル数式ほコピーの機能を自作するような話だろ

619:デフォルトの名無しさん
19/03/03 20:55:07.59 C10iXUczM.net
初心者です。わかる方いましたらお教えください。
IE.Visible = False
として、
IE.Quitが何らかの理由で実行されなかったり、それを書かなかった場合
どうなってしまうんでしょうか…?
バックグラウンドでずっとフワフワといるんでしょうか?
見方もよくわからないタスクマネージャーで見てみるとアプリケーションとしてはたぶん起動されていませんでした…
IE.Visible = Falseとした場合はもしかして特に閉じる指示が必要ないのでしょうか…?

620:デフォルトの名無しさん
19/03/03 21:00:52.17 sl8Y8jOC0.net
>>610
バックグラウンドでずっと動き続ける、が正解
ちゃんと起動してないのはコードがおかしいかタスクマネージャの見方がおかしい
そこをTrueに変えるだけでちゃんとIEのウィンドウが表示されるか確認

621:デフォルトの名無しさん
19/03/03 21:44:32.70 C10iXUczM.net
>>611
Trueに変えるだけで表示はされたので、タスクマネージャーの見方がおかしかったようです
ちゃんとバックグラウンドなんとかの欄では起動されていました
ありがとうございました…

622:デフォルトの名無しさん
19/03/04 09:46:01.18 TvaJY4yu0.net
関数使うかVBA使うかも内容で決める。
関数だと物凄く重くなることがある。
Sumproductとかを多用した場合とか、複数シートの集計を1日の集計としてさらに1ヶ月分の集計するとか。
自動計算を切れば良いんだけど、運用で微妙だね。
それに昔、銀行の仕事で大量のデ―タとSumproductのせいで1回の計算でさえいつまでたっても終わらないことがあった。
その時はVBAに書いたら5秒で終わった。

623:デフォルトの名無しさん
19/03/04 10:53:05.90 RuY9YBtCM.net
ワークシート関数を関数と表現するのってUSBメモリをUSBと呼ぶのと同様にアレな感じ

624:デフォルトの名無しさん
19/03/04 10:55:32.34 TFGUk6BN0.net
その違和感を持てる知識がない頭が残念な人なんだろ

625:デフォルトの名無しさん
19/03/04 11:15:22.83 gwy/L6iPH.net
WorksheetFunctionプロパティで呼ぶもの(sumとかvlookupとか)がワークシート関数
VBAでしか使えないもの(CIntとかInstrとか)がVBA関数
上記と自作関数をまとめて関数

626:デフォルトの名無しさん
19/03/04 11:25:35.49 vFn2j9Kt0.net
>VBA関数
標準関数だろう
エクセルの場合はVBA標準関数とでも言うべきか
>自作関数
ユーザー定義関数という名称がある
まぁ俺は関数としか呼ばんけどな、ハハハ
vbaでワークシート関数使う時はそう呼ぶ

627:デフォルトの名無しさん
19/03/04 11:45:46.92 gwy/L6iPH.net
>>617

628:デフォルトの名無しさん
19/03/04 14:30:16.31 TvaJY4yu0.net
関数とVBAと対比させてるのに勘違いする奴がいるとはとても思えないが。
いたらそいつはアホだよ。

629:デフォルトの名無しさん
19/03/04 14:32:37.46 TFGUk6BN0.net
>>619
馬鹿が恥の上塗りに来ましたよ、と

630:デフォルトの名無しさん
19/03/04 14:57:43.98 TvaJY4yu0.net
>>620
あらら、アホが恥の上塗りに来たよw

631:デフォルトの名無しさん
19/03/04 15:02:35.15 vFn2j9Kt0.net
vbaだし何でもええやろ
どうせ大事に至ることはない、争う程の事ではない

632:デフォルトの名無しさん
19/03/04 15:28:20.01 TFGUk6BN0.net
>>621
馬鹿はVBAに関数がないと思っているのか?
馬鹿は早く死ねよ

633:デフォルトの名無しさん
19/03/04 16:20:08.03 RuY9YBtCM.net
「文脈上USBメモリのことであるとわかるときはUSBでいい」
「そもそもそんな呼び方普段からするなよ」

634:デフォルトの名無しさん
19/03/04 18:20:48.65 FDpjfwBmM.net
わかるかどうか判断するのは読み手側だからな
書く側が勝手に略すのは読ませる気がないんだろう

635:デフォルトの名無しさん
19/03/04 23:23:23.24 dF1M3atd0.net
そういえばCD-ROM2をロムって呼んでたやついたな
これSUPER CD-ROM2だから

636:デフォルトの名無しさん
19/03/05 00:24:00.61 YDI1bFmR0.net
ID:TvaJY4yu0みたいな馬鹿がメンテできなくなるVBAを作る

637:デフォルトの名無しさん
19/03/05 00:37:29.46 yUBkGE+g0.net
jsのAPI使える人いる?
使い方がサッパリ分からない

URLリンク(docs.microsoft.com)
URLリンク(docs.microsoft.com)

638:デフォルトの名無しさん
19/03/05 03:34:27.88 VDry4yCPa.net
馬鹿には無理

639:デフォルトの名無しさん
19/03/05 05:56:45.90 pou1Iepn0.net
>>628
見てきたけ


640:ど、なんかすげえめんどくさそう。出来ることも見新しいことってほとんどないじゃん 普通のWin32APIとかやったことあるのか。そっち勉強した方が遥かにまし。 VBAでもやれるから



641:デフォルトの名無しさん
19/03/05 07:48:42.24 VSxyPtP8a.net
いやMacとかOffice Onlineで使えることに意味があるんだろ
まあOffice Online使うくらいならGSuite使うという企業が殆どだろうけどw

642:デフォルトの名無しさん
19/03/05 08:12:27.21 yUBkGE+g0.net
>>628
はこういう事だった
誰も使ってないのね
URLリンク(qiita.com)
>>629
自己紹介乙
>>630-631
もちろんやれることは同じ
jsで書ける事自体がメリット
googleSpreadsheetのマクロを移植する時に使える
一生に一回もないと思うけどな

643:デフォルトの名無しさん
19/03/05 08:56:53.06 K5flI6jox.net
Win32APIとOffice JavaScriptAPIどっちを勧めるかと聞かれたら今なら後者かな
後者の案件あるのか知らんが

644:デフォルトの名無しさん
19/03/05 12:20:11.68 IGhfqt8ja.net
そもそも全くの別物を比較してどうすんねん

645:デフォルトの名無しさん
19/03/05 12:44:55.98 bZMGULjeF.net
>>623
日本語が理解出来ないようだな。
VBAと関数を対比させているんだからここで関数と言ってるのは"VBAの関数"のことでは無いと解釈するのがまともな日本人だ。

>>624
???
それは日本語として変だ。
USBメモリはUSBでは無い。
VBAの関数は関数ではある。
そもそもの例が適当でないわけだ。
>>625
文脈や、やり取りでVBAの関数なのかワークシート関数なのかを判断する必要があるのは>>66>>142>>172も一緒だ。
お前らと違って普通の日本人は文脈ややり取りから判断出来てるんだよ。
>>614のようなことを言い出すのはお前らのような頓珍漢な奴らだけだよ。

646:デフォルトの名無しさん
19/03/05 12:47:21.71 bZMGULjeF.net
>>142>>186>>448
も文脈で判断するな。

647:デフォルトの名無しさん
19/03/05 12:51:32.81 bZMGULjeF.net
>>634
正にその通り。
Win32APIではじめて出来ることがjsで出来るなら分かるけどね。

648:デフォルトの名無しさん
19/03/05 13:01:00.32 yUBkGE+g0.net
>>634
あぁやっぱりそうだよね
知識不足かと思って調べてしまったわ

649:デフォルトの名無しさん
19/03/05 13:14:26.63 YDI1bFmR0.net
ID:bZMGULjeF
マジモンのアスペルガーのキチガイ

650:デフォルトの名無しさん
19/03/05 13:18:51.34 yUBkGE+g0.net
jsアドインもう少しぐらい使われてるのかと思ったけど、
誰も使ってないようで安心した

651:デフォルトの名無しさん
19/03/05 13:32:20.37 YOwkwz810.net
Excel Python API とかも Excel.js Office.js とかと同じ扱いになる悪寒

652:デフォルトの名無しさん
19/03/05 13:36:30.59 yUBkGE+g0.net
>>641
ゲェッ
vbaはこの手軽さが最強の武器なのに、VSからアドイン作成とかあまりに残念すぎる

653:デフォルトの名無しさん
19/03/05 20:23:23.29 ruLmgCaM0.net
>>639
これだからアホは困る。
お前、出版社にはクレーム入れるなよw
URLリンク(www.amazon.co.jp)関数

654:デフォルトの名無しさん
19/03/05 20:34:12.08 ruLmgCaM0.net
URLエンコードしてなかったな。
URLリンク(www.amazon.co.jp)

655:デフォルトの名無しさん
19/03/05 20:39:11.81 yUBkGE+g0.net
逆引き系辞典はネットあると本当に使わない

656:デフォルトの名無しさん
19/03/05 21:11:49.71 WmyrgrGT0.net
会社で異動になった人が作ったマクロの稀に出るバグを直そうと頑張っています。
ちょっと怪しいかなと思ったプロシージャがあるので見にくく長いと思うのですが見て頂けませんか?
勉強しながらの初心者です。
Sub wait(IE As InternetExplorer)
Const リトライ = 2
Dim IEDOC As HTMLDocument
Dim ReCount As Long,i As Long
Do
«略»
Set IEDOC = IE.Document
«略»
Loop While IEDOC Is Nothing
If IEDOC.frames.Length < リトライ Then
ReCount = リトライ
Else
ReCount = IEDOC.frames.Length
End If
For i = 0 To ReCount
Do While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Next
End Sub
このあとすぐに書き込みに参ります

657:デフォルトの名無しさん
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を個々の部署で買ってるところってそんなにないだろ


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