[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 12/29 06:14 / Filesize : 265 KB / Number-of Response : 993
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part77



1 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 07:07:35.59 ID:tS4zKdphH.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

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

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

※前スレ
Excel VBA 質問スレ Part76
https://mevius.5ch.net/test/read.cgi/tech/1651339421/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

655 名前:654 mailto:sage [2022/09/18(日) 16:25:19.20 ID:wwX2JCe10.net]
ちなみにSQLとかあるのは知ってますが
数千行程度のデータでもそんなの使わなくちゃいけないのでしょうか
また別に勉強しなくちゃなんないし、面倒くさい
もっと楽な方法ないもんかと(´・ω・`)

656 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 16:34:05.92 ID:K8Zbj7cX0.net]
データベースの導入が敷居が高く億劫と思うのならば
Pythonから慣れているexcelファイルを操作すればよい
そしてプログラムを組んでいるうちにいろいろ面倒で非効率である感じ
データベースの素晴らしさに気づいたときにデータベースを始めればよい

確かにpythonとデータベースを同時に学習するのは大変だよね

657 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 16:45:16.35 ID:aJoH8T5Ea.net]
>>655
> もっと楽な方法ないもんかと(´・ω・`)
はい、解散!

658 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 16:46:45.71 ID:Ufv82Dax0.net]
>>654
VBAで作ったのをGoogleスプレッドシートに移行しつつある。
シートを複数人で同時参照できるとかメリットも多い。

659 名前:デフォルトの名無しさん [2022/09/18(日) 16:47:16.95 ID:si+E4x/dd.net]
csv,tsv,xml,データベースとか色々あるだろ
そういうのが難しいと思うならやめとけ

660 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 17:54:45.16 ID:69Jy4am90.net]
>>654
Python のオブジェクトとしてデータがもう手元にあるなら pickle でそのままディスクに残せる。もしくは csv か json に出力するか
データベースでもsqliteならサーバー立てる必要もない

661 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 17:57:42.22 ID:qB0Seojna.net]
>>651
そう
そしてお前らもここも終わり

~終了~

662 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 18:49:48.79 ID:Nkc7aKdEd.net]
>>654
「とか」に何が含まれるかしらんけどその程度のデータならDBなんて使わなくても
今まで通りExcelブックでもいいし、テキストファイルでもなんでもいいのでは
今時の言語(ツール)ならそれぞれのデータにアクセスするライブラリもあるから
質問にある内容だけなら言語なんてなに使っても問題ない

>>655
自分ができる中で楽な方法を探すならまだしもできないことだらけで楽な方法なんてないんじゃない
お金があるなら外注で作ってもらえば楽かもね
世間にあるIT企業はそういうもんだし

663 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 19:07:54.85 ID:N1Q6b8hc0.net]
世の中は金あるヤツが強い



664 名前:654 [2022/09/18(日) 19:53:45.66 ID:wwX2JCe10.net]
皆々様がたありがとう
とりあえず>>656氏の方針でいく

>>657
君はなにもわかっていない
他の商売は知らんがプログラマーの場合
「面倒くさい、なんか楽な方法ねえかな?」からスタートする
Zed Shawがそう言っている

665 名前:デフォルトの名無しさん [2022/09/18(日) 19:55:06.18 ID:si+E4x/dd.net]
はい、また他人の言葉を鵜呑みにする馬鹿でしたとさ

666 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 20:11:40.98 ID:/3elu/X80.net]
>>664
お前なにを勘違いしてるのか知らんけどプログラマーは
「楽をするためには苦労をいとわない」
という生物だぞ
単に楽をしたいなら>>662が言うように外注しろよw

667 名前:デフォルトの名無しさん [2022/09/18(日) 21:07:19.77 ID:a87PubfG0.net]
んなわけない。
そういうのは、安月給でヤリガイ搾取されてるような交渉力のないゴミムシ。

668 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 21:30:30.41 ID:N1Q6b8hc0.net]
このスレを含めてインターネットを鵜呑みにしてはいけません!

669 名前:デフォルトの名無しさん [2022/09/18(日) 21:53:06.97 ID:oVIBC1f90.net]
>>655
vba、C#、python、web系色々と勉強してきたけど、
単純なデータの入出力だけならエクセルvbaがダントツで一番楽

超絶高機能なエクセルってものがあるのにわざわざ他言語を選ぶ理由がない
なおスプレッドシート+jsでも良い

670 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 22:11:40.89 ID:JTgtpdd/0.net]
プロのバックエンド・エンジニアなら、
YouTube で有名な雑食系エンジニア・KENTA の初心者向けRuby on Rails サロンが有名。
他には、RUNTEQ、東京フリーランスのデイトラなどもある

バックエンドは、Linux, Docker, AWS, データベース(DB)などが必須。
データベース・スペシャリストの資格があれば、部長クラス

RailsのO/R マッパーでは、DBの設計の仕方・組み方ばかり勉強する。
第3正規形、1対多・多対多とか、検索用インデックスの作り方など

671 名前:デフォルトの名無しさん [2022/09/18(日) 22:19:10.17 ID:si+E4x/dd.net]
>>670
釣り?それとも真正馬鹿?
それもいつものキチガイRubyクズ?

672 名前:デフォルトの名無しさん [2022/09/18(日) 22:23:40.29 ID:oVIBC1f90.net]
rubyとかもうすぐ無くなる言語じゃん

673 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 22:27:42.29 ID:K8Zbj7cX0.net]
VBAももうすぐ無くなると言われてから延命してるな



674 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 23:15:37.10 ID:69Jy4am90.net]
Rubyとか2005年で時間止まってる?

675 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 01:07:42.95 ID:iZ5Ix3Ky0.net]
>>669
ほんとうにそう思う
データをシートに書けばいろいろ考える必要なくアクセスできるもんね
IDEでそういうとこが簡単にできるシートを作って欲しいもんだ

676 名前:デフォルトの名無しさん [2022/09/19(月) 01:41:49.94 ID:iY8r+Bg+0.net]
この人もRubyがいいと言っている。
https://youtu.be/ipMC90r26uA

完全に時代遅れ。
もうむちゃくちゃ。
自分を客観視できていない。

677 名前:デフォルトの名無しさん [2022/09/19(月) 05:00:23.87 ID:EY8w4DgiM.net]
>>675
小規模なデータしか扱ったことのない馬鹿

678 名前:sage [2022/09/19(月) 08:40:56.76 ID:ReLBLDbZ0.net]

なんか幼稚な煽りしてる奴いてるなあ
そんなことしてて楽しいのか

679 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 09:31:55.83 ID:vK/zDm8+d.net]
このまえ2000万レコード扱った時はC#でSQLite使った

680 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 10:27:41.73 ID:WQozd2gd0.net]
そろそろExcelもビッグデータを扱えるようにしないと時代に取り残される
最低2億レコードぐらいは一発で実用時間内で処理できないと

681 名前:デフォルトの名無しさん [2022/09/19(月) 11:09:06.92 ID:NE4NRLG3F.net]
tksqlite便利ですぉ

682 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 11:17:10.29 ID:/tS0t+5W0.net]
それソフトよりもハードの問題じゃね

683 名前:デフォルトの名無しさん [2022/09/19(月) 14:37:24.08 ID:Z9ZARiSG0.net]
>>679
どうだった?
更新、遅くならんかった?



684 名前:デフォルトの名無しさん [2022/09/19(月) 14:45:49.33 ID:LZxjUErQd.net]
>>678
内容を理解できない馬鹿は黙っていればいいのに

685 名前:デフォルトの名無しさん [2022/09/19(月) 15:32:14.37 ID:Z9ZARiSG0.net]
>>680
アクセスでさえテーブル容量に2GBの制限bェあるらしいのbナ、エクセルにbサんなもの求めbトも仕方がないbフでは?

2GBでも、中小企業の在庫管理には十分だし。

エクセルの使い道がない人は、無理して使うものでもないと思います。

686 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 16:01:28.33 ID:vK/zDm8+d.net]
>>683
てか、VBAスレでその質問するからには、エクセルとの比較で聞いてるんだろうけど
そもそもエクセルでこのボリュームのデータ扱えないから比較できない
データベースファイルだけで4GB超えるから

687 名前:デフォルトの名無しさん [2022/09/19(月) 16:05:58.47 ID:Z9ZARiSG0.net]
>>686
SQLiteで2000万レコードについて聞いてますよ。
以前試したときは、ファイルが10GB超えるあたりから性能が悪化したんだけど、今はどうなのかなと思って。

688 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 16:10:19.86 ID:vK/zDm8+d.net]
>>687
遅いですよ
自分の用途だと十分だけど

689 名前:デフォルトの名無しさん [2022/09/19(月) 16:24:13.35 ID:Z9ZARiSG0.net]
そうですか。
ご親切にどうも。

690 名前:デフォルトの名無しさん [2022/09/19(月) 18:23:11.48 ID:mA0CNwkF0.net]
win10
office2019

VBAの相談なんですけど、test.xlsmというファイルで練習をしていて
エラーが出てエクセルが落ちてしまいました。
そのあと、復旧したファイルでコードチェックをしてエラーが出ないようになりました。
しかし、test.xlsmファイルを開くと「セキュリティに問題がある」うんぬんという警告が
そのファイルでだけ出るようになりました。

ささいな事ですが気になっています。
もしかして特定のコードを含んでいると出るのでしょうか?
ループ処理が多いとか。

691 名前:デフォルトの名無しさん [2022/09/19(月) 18:26:26.58 ID:QQSMzDQg0.net]
マクロの場合って必ずでなかったっけ

692 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 18:47:49.51 ID:b1CdxAyP0.net]
トラストセンターで有効にしておけば警告は出ないよ、って言うかこのスレにいる人ならほとんどこの設定にしてると思う
https://www.officepro.jp/excelmacro/rec/img/p4-11.png
あとは1番下の「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」がクリアされててtest.xlsmにコードを触るようなコードが入ってる場合ぐらいかな

693 名前:690 [2022/09/19(月) 21:28:16.87 ID:mA0CNwkF0.net]
>>692
ありがとうございます。
もともとそのチェックはどのファイルにも入っていませんでしたので、
触るコードを書いてるという事かと思います。
どんなコードが該当するのですか?
バグに気付けていない可能性もあるので、知りたいです。
オブジェクトモデルっていってもdictionaryを一回重複チェックで使ってるくらいで、
後はsetしてるのは条件付き書式とかworksheetとかworkbookとかrangeくらいでしょうか。
たいした事はしてないのですが、結構長くなってるので特定しづらいです。



694 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 21:42:09.79 ID:b1CdxAyP0.net]
>>693
> どんなコードが該当するのですか?
そんなもん説明しきれんわ
そもそも
> しかし、test.xlsmファイルを開くと「セキュリティに問題がある」うんぬんという警告がそのファイルでだけ出るようになりました。
のスクショなりを上げなよ

695 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 22:00:45.12 ID:ai3lFfV6d.net]
コードを新規作成したtest 2.xlsm にコピペしてみりゃ一発だろうに

696 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 22:01:05.04 ID:s9D2fBDK0.net]
>>679
Ruby on Rails では、2千社・2億レコードでも全く問題ないと、外人が言ってた

Railsでは、開発環境ではSQLite も使うが、
本番環境では、MySQL, PostgreSQL

Heroku では、PostgreSQL

>>676
セレブエンジニアの小松和貴は、反SES/Java で有名。
Java土方はうつ病になるから、やるなと言ってる

697 名前:デフォルトの名無しさん [2022/09/19(月) 22:05:09.07 ID:LZxjUErQd.net]
rubyみたいなオワコンを持ち上げるキチガイは消えろ

698 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 22:36:59.93 ID:O/s366mO0.net]
火に油を注ぐ発言はやめような

699 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 23:45:50.71 ID:A/Pc+E3NH.net]
火に油を注ぐから楽しいのに

700 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 00:31:18.18 ID:Rlnm1h+Y0.net]
それあぼーんな人だから触らないほうがいいよ

701 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 07:23:58.96 ID:Qfc1UF5x0.net]
>>697
黙れハゲ童貞

702 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 08:18:55.69 ID:TKjURbNB0.net]
なんだかんだで、納品物はエクセルで!とか言ってるからいつまでもVBAやめられなくて辛い

703 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 12:12:55.21 ID:ZsS5zbqxM.net]
>>702
Excelやめてなんのソフトを代替にしたいの?



704 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 14:20:11.48 ID:E6px8L9o0.net]
Excelを使わない事務仕事なんか無いだろうね

705 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 14:37:00.62 ID:a8qXzxjlM.net]
うちの会社は弥生会計をずっと使ってるぞ

706 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 17:24:35.64 ID:Qfc1UF5x0.net]
>>704
うちの会社の経理は紙の帳面だぞ
古代エジプト時代と変わらん

707 名前:デフォルトの名無しさん (スップ Sd3f-w3i5) [[ここ壊れてます] .net]
>>706
パピルスと現代の紙とは異なる
髪はその頃と一緒だが

708 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 19:11:26.07 ID:bPcXAKoD0.net]
>>702
そんなに辛いなら転職したらいいんじゃね

709 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 20:36:15.87 ID:E6px8L9o0.net]
>>706
The 昭和

710 名前:デフォルトの名無しさん [2022/09/20(火) 20:42:24.19 ID:z6cIhAGk0.net]
昭和の頃はすでにMZ-80とか有ったからね。

711 名前:デフォルトの名無しさん [2022/09/20(火) 21:20:11.78 ID:9PvWzZvw0.net]
>>695
ありがとうございました。
それで徐々にコードを消していったら判明しました。
助かりました。

712 名前:デフォルトの名無しさん [2022/09/20(火) 21:52:40.24 ID:9PvWzZvw0.net]
ユーザー定義型を配列に入れて使っているのですが、nameでソートしたり、
idでソートしたり、ageでソートしたり、その都度いろいろなプロパティでソートをしたいのです。
いままでは一旦二次元配列に入れてソートしていましたが、二次元配列のkeyposにあたるような
key elementsみたいに引数で渡す事はできないのでしょうか?

Sub Sort(ByRef User as Usertype,ByRef Property asここがわかりません)
なんというかworksheetオブジェクトとrangeオブジェクトみたいな関係みたいな

最悪プロパティ毎に違う名前のソート関数にすれば一応好きなプロパティの値でソートして返せるのですが

こんな感じで

713 名前:デフォルトの名無しさん [2022/09/21(水) 15:26:19.55 ID:IxQ+qaQI0.net]
まずユーザー定義型をクラスにして、その後は IComparer インターフェイスでよしなに

Sorting of objects by their properties in VBA
https://scripts4all.eu/sorting-of-objects-by-their-properties-in-vba/

個人的にはここまでやるならVBA以外を検討するけどね



714 名前:デフォルトの名無しさん (ワッチョイ f749-GjCD) mailto:sage [[ここ壊れてます] .net]
別の方法としてADODBでメモリ上にテーブルを持つのもある
テーブルにぶち込んでしまえば、ソート、フィルター、その際の項目指定とかどうにでもなる
その分のメモリは必要だし、テーブルに対する出し入れの処理はあるので
配列の大きさやソートの頻度で使うかどうか考える

715 名前:712 (ワッチョイ bf66-W3aP) mailto:sage [[ここ壊れてます] .net]
>>713
そちらを見に行ってEnumの便利さに気付きました。
二次元配列のfor for ネストでやってるような処理、列が増えるほどだんだん
わからなくなりますが、enum使えば二次元配列の利便性も残しつつ
ユーザー定義型みたいに使えますね。
二次元配列の悪い所はだんだん自分が何を指定してるのかわからなくなるところだったので、
Enumと相性抜群ですね。

せっかく教えてもらった高度な手法は今回は見送りさせて頂いて、簡単なEnum&二次元配列でやってみようと思います。
感謝です。

716 名前:デフォルトの名無しさん mailto:sage [2022/09/21(水) 20:40:31.74 ID:NsHiQ7yd0.net]
元データがどこにあって、それをソートしてどうしたいのかわからんが
普通に考えればエクセルシートに展開すれば良いんじゃないかと思うんだが

717 名前:デフォルトの名無しさん (ワッチョイ b7da-E+l9) mailto:sage [[ここ壊れてます] .net]
たぶんEXCELのソート機能を使わず自分でソートしたいんじゃね

718 名前:デフォルトの名無しさん (アウアウウー Sa5b-8eP5) [[ここ壊れてます] .net]
なぜ競プロではVBAの出番が無いのか

719 名前:デフォルトの名無しさん mailto:sage [2022/09/22(木) 11:36:03.90 ID:V4zanZlpM.net]
遅いとか記述が冗長とかサーバーサイドで動かせないとかテクニカルな問題はいくらでもあるけど、
最大の理由は競プロやるような人はVBAなんか使いたがらないから

720 名前:デフォルトの名無しさん mailto:sage [2022/09/22(木) 18:38:55.33 ID:+Wi4osLB0.net]
>>718
年末のAdvent of CodeはVBAだかExcelだけかでやってる人たまにいる

721 名前:デフォルトの名無しさん (ワッチョイ 97da-rZTD) mailto:sage [[ここ壊れてます] .net]
>>666
いいえて妙、ワロタw

722 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 19:12:26.46 ID:27USMHor0.net]
外注ってやっぱ高い?

723 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 01:17:31.15 ID:mU6CwKwa0.net]
素人にやらせると、見かけは安上がりだけど結果的に高く付くことが多い



724 名前:デフォルトの名無しさん [2022/09/24(土) 03:39:42.11 ID:sis0YFKKa.net]
何人で何ヵ月かかるかで金額が変わる

725 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 04:49:54.00 ID:rKbJBgHg0.net]
じゃあここのスレの方ならプロだから安心して頼むそうかな??
金額以外は

726 名前:デフォルトの名無しさん [2022/09/24(土) 05:51:09.21 ID:Bbc/0kyt0.net]
RubyはそれだけではDBとなるものを持ってないからEXCELやACCESSのVBAとは比較できない。

もっとも、同様にDBを持たない言語と比較するなら
セーフティーでガベージコレクションの概念がなくスピードの速いRust辺りと比べるとゴミ同然

727 名前:デフォルトの名無しさん (ワッチョイ c23d-dJZP) mailto:sage [[ここ壊れてます] .net]
エクスプローラーでフォルダーのプロパティを開いて
カスタマイズタブのところに「フォルダーの種類」が全般とかビデオとかになってるけど。
これをVBA/VBSで変更できる?
フォルダーのtypeを見ても全部「ファイル フォルダー」になる。

728 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 09:33:48.67 ID:DeEi7HC40.net]
>>727
レジストリ操作でやりたいことができたわ。

729 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 14:15:19.28 ID:qbD2jrks0.net]
お、おう、よかったな

730 名前:デフォルトの名無しさん [2022/09/25(日) 05:30:19.65 ID:/q7OsFL50.net]
一般ユーザがある列のセルを編集できないようにしたい。
でも、VBAの実行や、セル関数の結果は反映させたい。

https://support.microsoft.com/ja-jp/office/excel-%E3%81%A7%E3%82%BB%E3%83%AB%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B-b942fe92-5e87-0985-214b-9617b5b6d53f
↑セルのロック
という機能で試してみたがVBAマクロでの変更は許されなくてちょっと困っています。

セルに対してマウスイベントを発生させない。みたいなことを考えて、調べているが。
皆さんも悩まれる案件かと思います。もっと良い方法ないでしょうか?

731 名前:デフォルトの名無しさん [2022/09/25(日) 06:18:07.93 ID:jaItMug30.net]
VBAん中でロック解除して
処理終了間際にロックし直しってんじゃだめなの?

732 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 07:44:30.90 ID:dPa0+M2C0.net]
SheetSelectionイベントとIntersect使うだけでは

733 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 09:13:59.54 ID:nIE2ah490.net]
お願いします。
検索をシートからではなくブックからをデフォルトにしたいです。
下記のサイトのコードを使い検索は出来るのですが、
結果表示ではなく( '<全てのシートの検索が終わったら、結果を表示します。> )、
検索値まで移動するにはどのようにコードを書けばいいか、ご教授願います。。
https://www.moug.net/tech/exvba/0040005.html



734 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 10:44:33.52 ID:mk9vdghN0.net]
>>730
worksheet_boforedoubleclick みたいなイベントプロシージャでできる

735 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 10:58:13.51 ID:/q7OsFL50.net]
ありがとうございました。
>>731の方法で簡単にできました。
VBA実行時に保護を解除して、終了時に再度保護をかけることで、
すんなりといけました。

736 名前:デフォルトの名無しさん [2022/09/28(水) 13:31:05.50 ID:/kKDTdjO0.net]
A1:10もしくはA100に入力された値を配列に格納しています。
動的配列です。
Select Case 文字列A
case A1:A100のどれかに一致するなら
case B1:B100のどれかに一致するなら

みたいな書き方って出来ないのでしょうか?

737 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 13:35:10.17 ID:Rj0JQSes0.net]
ifで条件書けよ

738 名前:デフォルトの名無しさん [2022/09/28(水) 15:15:27.03 ID:n6LgYqsE0.net]
>>736
恐らく出来ない。
ただ、Select Case の後の文字列の部分をTrueとして、
A10:A100の中に該当文字列が有った場合、
Trueを返す関数を作成して、Case文の後ろに記載して
その条件に当たったかを判別して、Case文の下に
その条件下での処理を記載することは可能。

Caseにある条件のA10:A100にとある文字列が
有った場合とB10:B100にとある文字列が
有った場合と下に続く処理が同じなら、
先程言った関数の引数に対象範囲と検索対象文字列を
持たせておけばCase文を使う必要すら無い。
戻り値がTrueかFalseかをIf文で判断すれば良い。

その辺は実際の状況に合わせて上手く作ってくれ。

739 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 16:15:51.79 ID:vR69ytL90.net]
select caseにtrue??
知らなかったわ何それ??

740 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 18:26:27.19 ID:Pxqx/4k10.net]
Do
With
End With
Loop

よりも

With
Do
Loop
End With

の方が計算が早い(PCにとっては楽)と考えてよいでしょうか

741 名前:デフォルトの名無しさん [2022/09/28(水) 19:01:46.26 ID:8l5UWazH0.net]
>>736
こんな感じ?
https://i.imgur.com/wuSExDf.png

742 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 19:28:29.47 ID:Aad51sjLa.net]
>>736
Private Function F(R As RangeRange, S As String) As Boolean
Dim C As Range
For Each C In R
If C.Value = S Then
F = True
Exit Function
End If
Next
F = False
End Function
...
Select Case True
Case F(Range("A1:100"), 文字列A)
...
Case F(Range("B1:100"), 文字列A)
...
Case ...
End Select

743 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 19:32:38.30 ID:Aad51sjLa.net]
>>740
たいていのプログラムだと有意な差はでないから気にせずに作りやすい方で作れ
有意な差がでそうならまず測定



744 名前:デフォルトの名無しさん [2022/09/28(水) 19:38:38.93 ID:n6LgYqsE0.net]
>>740
これも恐らくの話で申し訳ないけど、
元々Withで設定されているインスタンスが既に生成されているものであれば、その格納アドレス先を読むだけなので
Withがループの外にあっても中にあっても処理コストは変わらないと思う。
変わったとしても繰り返し実行での誤差と見分けが付かない程度と思われる。

逆にインスタンスが生成されておらず、With New 〜 のようにWithでインスタンスを生成する場合は
ヒープエリアのメモリにそのインスタンスを展開するため、Withがループの外に有った方が処理コストは低くて済む。


・・・はず。

745 名前:デフォルトの名無しさん [2022/09/28(水) 19:40:24.19 ID:2tCqxjcra.net]
とりっきー

746 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 19:51:29.67 ID:30UfjVhGd.net]
>>739

ケツの穴をガバガバにして全通しするいやらしい関数だよ

Select Case True
Case オナラ
よし通れ
Case うんこ
よし通れ
End Select

747 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 21:06:15.14 ID:Apn5XmOg0.net]
>>742
結局If文でラップしてるだけじゃん

748 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 21:06:47.83 ID:vR69ytL90.net]
>>746
汚ねえな。。
こっちは夕食のカレー食ってんだぞ。。

749 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 21:20:17.00 ID:0sCmeNkX0.net]
>>747
If 文でラップとか意味わからんこと言われてもw

750 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 00:27:52.00 ID:tkXe+LzA0.net]
ヘイヘイヘイ~!
もしも~オブジェクト変数でぇ~宣言したぁ~値がぁ🎵
ラップ調

751 名前:デフォルトの名無しさん [2022/09/29(木) 01:53:20.13 ID:I3DbECBa0.net]
ラップのセンスはいまいちだね

752 名前:736 mailto:sage [2022/09/30(金) 17:41:05.63 ID:8DTKPQSA0.net]
>>738-742
ありがとうございました。
変数Strの中の値が配列Listのどれかと一致するかということだったので、そのCountIFがまさにその通りでした。
それようの関数書いてSelect case True使わせていただきます。

753 名前:デフォルトの名無しさん [2022/09/30(金) 21:34:23.42 ID:RGIc4eHD0.net]
>>752
Select Case True の話持ち出しといてなんだけど
最初のCase の条件に引っ掛かってその下の処理を実行した後でも
次のCaseの条件に引っかかったらその下の処理も実行するからそれだけは気をつけてね



754 名前:デフォルトの名無しさん (スッップ Sd32-r4yT) mailto:sage [[ここ壊れてます] .net]
>>753
そんなことないのでは?と思って試したけどやっぱりそんなことなかったんだが
普通はcaseの条件の中に入ったら次のステップはEnd Selectにいかないか?
Dim ncount As Long
ncount = 0
Select Case True
Case 0 = 0
ncount = ncount + 1
Case 1 = 1
ncount = ncount + 1
Case 2 = 2
ncount = ncount + 1
End Select
Debug.Print ncount
これは1になるんだが

755 名前:デフォルトの名無しさん (ワッチョイ 927c-cqZP) mailto:sage [[ここ壊れてます] .net]
>>754
多分breakいれなきゃいけないCとかと勘違いしてるんだと思う






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef