1 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 02:23:41.78 ID:2t63WK/jM.net] !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ↑2行に減ってるけど、同じ内容を3行に増やして貼り付けること ExcelのVBAに関する質問スレ コード書き込みや作成依頼もOK 次スレは>>980 が立てること 無理なら細かく安価指定 ※前スレ Excel VBA 質問スレ Part75 https://mevius.5ch.net/test/read.cgi/tech/1644384272/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
435 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 13:52:15.99 ID:6StqYoESd.net] パソコンの前でやる事と言ったらそれしか無いからな
436 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 18:44:17.05 ID:rEbuXRdM0.net] 男性ホルモンが盛んなのですから禿る
437 名前:デフォルトの名無しさん [2022/06/10(金) 22:17:29.28 ID:e4qm213id.net] このスレで質問するレベルの馬鹿が作ったExcel表のせいで葛飾区の保育所は大騒ぎ
438 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:31:48.31 ID:lQlywAWy0.net] エクセル2016で複数のbook開いてると単体で開いてるときよりもずっとVBAの動作が遅くなるんだけど 解決策知ってる人いる?
439 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:34:53.56 ID:/aCQrqDp0.net] 複数開かなきゃいいんじゃね
440 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:02:11.31 ID:yoZYMWv5H.net] >>432 (´;ω;`)
441 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:11:39.01 ID:rEbuXRdM0.net] >>432 え?詳しく ググっても詳細出てこない。 禿そうだわ
442 名前:デフォルトの名無しさん (ワッチョイ 86da-fOeb) mailto:sage [2022/06/10(金) 23:14:29 ID:rEbuXRdM0.net] あ、葛飾区のニュース出て来た 表計算ソフト式に誤りとか最低だろう。 テストしなかったのかな?
443 名前:デフォルトの名無しさん (ブーイモ MM71-Rebr) mailto:sage [2022/06/10(金) 23:17:41 ID:Vb4kLAL3M.net] >>436 検索初心者か? 普通にぐぐって一発で出るんだが https://xtech.nikkei.com/atcl/nxt/news/18/13050/
444 名前:デフォルトの名無しさん (ワッチョイ 5d93-QMxd) mailto:sage [2022/06/10(金) 23:24:30 ID:bPqrOIr80.net] どーせsubtotalじゃなくsumで小計出してたせいで合計が2重計上されたとかじゃねーの
445 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 00:03:58.02 ID:peHZyvXnd.net] Dick A as strong Dick B as strong If A > B then A = Tachi B = Uke End if A => B
446 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 00:50:08.66 ID:c8NiZZbH0.net] >>440 ツッコミどころ満載やな
447 名前:デフォルトの名無しさん [2022/06/11(土) 09:42:09.94 ID:k8BssVI/0.net] A もB も 強そうな型だなオイ
448 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 11:19:57.24 ID:zJAfd1A70.net] ストロングチューハイはやばい酔い方する
449 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 12:41:06.40 ID:CM4vZAaMM.net] A = Bだとどうなるの?
450 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 14:14:10.27 ID:ZxVNHiJ20.net] なんで竿がデカい方が攻めなんだよ はっ倒すぞ
451 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 14:27:57.92 ID:8O7zsVZWM.net] どこにも竿の大きさなんて書いてない クラス定義まで見ない限り、何を比較してるのか、このコードだけではわからない さては思い込みでコードを書いてバグを発生させちゃうタイプだな?
452 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 15:03:55.80 ID:zJAfd1A70.net] 分かってないだけでしょ
453 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 16:08:12.40 ID:ZxVNHiJ20.net] If Dick(竿)A>DickB Then A=タチって書いてあんじゃんか
454 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 16:33:22.04 ID:k7wiIunZM.net] Strongは精力じゃね? 大きさならSizeとかLengthとか
455 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 18:37:34.42 ID:4UGI/r2E0.net] 禿は精力が強い
456 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 19:01:23.35 ID:qcSYfg6i0.net] B = Not(A) じゃね
457 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 20:12:32.64 ID:VlCDkB2oM.net] DickクラスのSizeプロパティは読み取り専用 Electプロパティは代入可能 Cumメソッドは1日5回以上使うと例外発生
458 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 21:54:22.38 ID:Ejve8RvI0.net] ShapeとTextBoxをマクロで作ったのを 別のBookのSheetにコピペした時のフォントは マクロ側とコピペ側だとどちらに依存しますか?
459 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 22:02:30.68 ID:TK5b+qDd0.net] 聞く前にやったほうが早いだろw
460 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 22:04:32.17 ID:XvS1eUBu0.net] 質問失礼いたします。 ユーザー定義型に以下のようなツリー型になる感じの物をPublicで宣言してて クラスモジュールにユーザー定義型の変数を作っているのですが、 プロパティの作り方で悩んでいます。 以下標準モジュール内 Public Type MinorItemType ' 小項目 minorItemName as String ' 小項目名 minorItemID as Long End Type Public Type MajorItemType ' 大項目 majorItemName as String ' 大項目名 majorItemID as Long minorItem() as MinorItemType End Type 以下クラスモジュール内 Dim majorItem_() as MajorItemType この場合、以下のようにMajorItemType型のプロパティを作成して丸ごと渡すのか、 Public Property Get majorItem(ByVal num as Long) as MajorItemType majorItem = majorItem_(num) End Property それともユーザー定義型の中の変数へのプロパティを1つずつ作成するのか、 どちらが正しいのでしょうか? ちなみに作成するプロパティは原則Getのみで、 変数に値を取得するのは、クラス内に作成したSubプロシージャで シートへ値を取りに行かせる具合です。
461 名前:デフォルトの名無しさん (ワッチョイ ff42-kGh4) mailto:sage [2022/06/11(土) 22:38:15 ID:kVPUfUKj0.net] 正解はない
462 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 23:57:34.93 ID:XvS1eUBu0.net] >>456 ありがとうございます。前者の方法で行ってみます。
463 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 00:52:49.29 ID:SFQsQSvz0.net] 戦車の砲塔で行ってみてやりにくかったら変えればいいんじゃね
464 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 01:40:55.69 ID:QoN69QoAd.net] 芋芋亀してみます!
465 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 18:48:33.62 ID:cJxXuNHT0.net] 文字列の一部分に0付き右詰めの数字を入れたいのだが・・・・ a = "000000000" b = a Mid(a, 2, 5) = 123 Debug.Print "変更前" & b Debug.Print "変更後" & a 結果 変更前000000000 変更後012300000 これだと左詰めなんだが、こうなるべきじゃないの? 変更後0123 000 midにRightをかぶせてみたんだが、 Right(Mid(a, 2, 5), 3) = 123 オブジェクトが必要て言われる。 どうすればいいの?
466 名前:デフォルトの名無しさん [2022/06/12(日) 19:03:38.39 ID:M5mGZ9TuM.net] format(123, "000000000")じゃ駄目なの?
467 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 19:09:33.96 ID:DaJUN4Jhd.net] Mid(a, 2, 5) = 123 の右辺を数字のままにしてるからおかしくなると思うので CStr(123)みたいに文字列にしてからセットすればいいんじゃ
468 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 19:30:47.38 ID:ImMFuzyy0.net] むしろ Mid(a, 2, 5) = 123 これでなんでaが012300000になるの?どう評価されてるの?
469 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 19:37:46.32 ID:ImMFuzyy0.net] ??? Sub foo() a = 0 Mid(a, 1) = "aaa" '通る Right(0, 2) = "bbb" 'エラー Debug.Print a End Sub
470 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 20:39:25.03 ID:uZt7xySi0.net] 自分ならright("000000000" & "123"の右側を取る
471 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:12:13.58 ID:DaJUN4Jhd.net] ああ右詰で数字をいれたいのか 自分のレスは無視して そもそも桁数も統一してないからそこから見直せ
472 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:35:58.65 ID:cJxXuNHT0.net] Sub sample() '01 PIC X(1) '01 PIC 9(5) '01 PIC X(3) a = "A00000ABC": Debug.Print "元データ :" & a Mid(a, 2, 5) = Format(123, "00000"): Debug.Print "パターン1:" & a a = "A00000ABC" Mid(a, 2, 4) = Format(123, "0000"): Debug.Print "パターン2:" & a a = "A00000ABC" Mid(a, 2, 5) = Format(123, "000"): Debug.Print "パターン3:" & a a = "A00000ABC" Mid(a, 2, 5) = 123: Debug.Print "パターン4:" & a a = "A00000ABC" c = "00000" RSet c = 123 Mid(a, 2, 5) = c: Debug.Print "パターン5:" & a End Sub 元データ :A00000ABC パターン1:A00123ABC パターン2:A01230ABC パターン3:A12300ABC パターン4:A12300ABC パターン5:A 123ABC パターン1が正解なんだけど、なぜパターン4は3文字分だけ書き換えるんだろう? パターン4がOKならパターン5でもいけるような気がするが、パターン5は空白を埋める。 RSet Mid(a, 2, 5) = 123 はエラーになる
473 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:46:31.55 ID:ImMFuzyy0.net] それ以前に Mid(a, 2, 5) = Format(123, "00000") でエラーが出ないのがおかしいだるお
474 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:52:55.42 ID:SFQsQSvz0.net] ちなみに -123 のときどうする?
475 名前:デフォルトの名無しさん [2022/06/12(日) 22:19:45.52 ID:+/mRZvLHd.net] ID:ImMFuzyy0 馬鹿は黙っていればいいのに そうやって馬鹿を曝け出していると頭の皮膚も曝け出されるぞ
476 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:37:23.13 ID:aOGWTw070.net] midステートメントは今ある文字列に対して別の文字列を被せるだけの動作だよ
477 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:03:38.74 ID:b6RzJ+XoM.net] 別の文字列を被せるのは仕様外動作だと思うけどな
478 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:07:02.46 ID:ImMFuzyy0.net] 何一つその動作がのってねぇ https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mid-function
479 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:10:22.37 ID:UzvPms3IM.net] 引数以外の手段で関数に値を代入(?)するという前代
480 名前:「聞の珍動作 何が起きるか分かったもんじゃない [] [ここ壊れてます]
481 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:13:02.41 ID:cJxXuNHT0.net] つまり Mid(a, 2, 5) = 123 は aの2文字目から5文字分ところに、"123"を書き込むんだけど、 3文字しかないから、4-5文字目は何もしないてことだよね。 でも代入の原則論から言えば、足りない部分はスペースで埋めるんじゃないのか? RSetは足りない部分はスペースで埋めてる。 まあ、それが仕様だて言えばそうだけど、 深く考えて作られてないのかな。 もし、RSetも3文字しか代入しないのなら、RIGHTやFORMATを使わなくても0埋めができるし、 単純な代入だから性能もいいはず。
482 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:16:04.57 ID:cJxXuNHT0.net] >>473 それはmid関数。 midステートメントとは別物だよwww。 https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mid-statement オレもさっき知ったんだがwww
483 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:29:45.68 ID:nFfW5LM6M.net] そんなものがあったのか!? けど代入元の型は文字列になってるけど数値を代入していいのか?
484 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:33:25.21 ID:ImMFuzyy0.net] >>476 ありがとう!!! 気になって眠れないとこだった。俺の頭がおかしくなったのかと思ったわw ステートメント、一度目を通しておいたほうがいいね https://excel-ubara.com/EXCEL/EXCEL908.html >>477 vbaで何をいっとるんじゃい
485 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:54:08.09 ID:cJxXuNHT0.net] >>477 どの言語もできるような気もするが。 出来ない言語なんかあったけ? 化石のような言語のCOBOLでもできる。 COBOLだと9型の変数があって、VBA風にかくと Dim a as 99999 a = 123 でaを00123にしてくれる。 a=RIGHT("00000" & 123,5)なんてやってるのをみて驚いたわ。
486 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:56:26.34 ID:as/ibVfq0.net] ちなみに、MidステートメントはLetステートメントと違ってヒープ領域の再確保を行わないようなので めちゃくちゃいっぱい文字列を結合したり置き換えたりする文字列操作をMidステートメントで高速化できたりはする 色々注意しなきゃならんしめんどいけど
487 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 14:10:09.78 ID:cuhQaR4kM.net] mid("00000",5-len(a),len(a))=a なんてやってるの?
488 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 15:41:58.25 ID:e6QxpplAd.net] 文字列の一部分に0付き右詰めの数字を入れたいのだが・・・・ これがやりたい事なんだから A.MIDステートメントを使うなら右辺の値を5桁固定にする Mid(a,2,5) = Format(123,"00000") B.代入するの文字列を代入先の左側+5桁固定の値+代入先の右側にする a = Mid(a,1,1) & Format(123,"00000") & Mid(a,7,Len(a)) あたりに落ち着くのでは 自分は誤解されないためにもBのようなコードがいいと思うけど
489 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 18:10:47.94 ID:S+tXl/uoD.net] 自分なら right("00000" & 123, 5) って書く
490 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 18:28:06.25 ID:CiY+fWgN0.net] セルの書式設定に 0000# って書けばいいのに
491 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:38:44.31 ID:5YQd33j2d.net] いやどうせVBAでやるならNumberFormatLocalでやろうよ
492 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:02:21.45 ID:3bSnFxDm0.net] 要件にもよるが正規表現とFormat()で。
493 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 21:14:24.62 ID:c4yOIzj40.net] >>482 https://www.moug.net/tech/exvba/0140045.html MIDステートメントのほうが速いらしい。 でもオレが試したら逆だったけど・・・・
494 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:37:41.37 ID:pISmU68J0.net] みんなのコードカッコいいわ やっぱりコードはカッコ良くなきゃ舐められるわな
495 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 01:08:48.71 ID:GVYlqPTN0.net] >>488 他に見るやつがいないなら動きゃいいとか思ってしまう
496 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 01:18:48.91 ID:MKKHJJii0.net] てか若者とお年を召された方のコードの書き方が明らかに違うのだが、古臭い目新しいとかあるのかな?
497 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:02:23.05 ID:GVYlqPTN0.net] 今は可読性悪いのは駄目ってなってるけど逆に改行や変数名の長さすらケチってた時代もあった んで言語が進化するにつれて書き方も変わっていった 今でも昔の方法で書けるっちゃ書けるけどそれが古臭いってことだと思う
498 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:07:02.10 ID:MKKHJJii0.net] お年を召された方(60~70代)のコード見たら、やたら変数ばかり多かった印象が。 変数使わなくても普通に書けばいいじゃんて部分まで変数に入れていた。
499 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:33:52.97 ID:TUO2NKc8M.net] >>492 今でもコード中に定数をそのまま書くのは別に推奨されてないぞ せめて別の人がコードを見た時に数字の意味がわかるようにしとかないとバグの元になる
500 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 07:10:06.79 ID:r7EVbuk4D.net] >>492 のコードはVBAに限らず可読性悪そう
501 名前:デフォルトの名無しさん [2022/06/14(火) 07:54:24.65 ID:7uTlYRrCa.net] >>492 変数にいれないで普通の書くのか? 定数なら定数として定義すると思うが
502 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 08:25:15.24 ID:bcp0w+/6d.net] >名著「リーダブルコード」に「説明変数」という言葉が出てくる。
503 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 08:35:10.08 ID:T3k1EtCC0.net] マジックナンバーは避けようぜ 後で見返す時に(この4って何を意味してるんだ…?)ってなると効率落ちる
504 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 08:37:28.94 ID:YQpYn/pu0.net] 郵便番号+電話番号ていう文字列があるんだが、郵便番号、電話番号を別々の変数に入れたいので こうしてみたんだがうまくいかない。 なにか手はある? いまType1は項目が2個だけど、なるべく一括で入れたいのだが・・・ Type Type1 Zip As String * 7 telnum As String * 11 End Type Sub Sample() Dim b As Type1 a = "151123408012341234" b = a End Sub
505 名前:デフォルトの名無しさん [2022/06/14(火) 09:04:23.14 ID:06qw5AlY0.net] aの文字列が固定長なら Left(a,7) Right(a,11) でダメなんか
506 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 09:11:18.76 ID:b1sVlKW1M.net] >>498 C系やVBなら可能だけどVBAではWin32APIを使わないと無理 また、可能だからと言って、複数の変数に一括でデータを入れるような書き方は可読性が下がるので推奨されない コードをコンパクトに見せたいなら代入部分を以下のようにモジュール化するのがマスト 電話をRightで取り出さないのは、固定電話は桁数が違うから Sub SetNumbers(ByRef T As Type1, N As String) T.Zip = Left(N, 7) T.telnum = Mid(N, 8, 11) End Sub
507 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 10:48:30.78 ID:WigeF4Tr0.net] >>498 若干無理矢理だけどクラス使えば似たような事は出来る Type1.cls Private Zip_ As String * 7 Private telnum_ As String * 11 Public Property Let Default(N As String) Zip_ = Left(N, 7) telnum = Mid(N, 8) End Property Public Property Get Zip() Zip = Zip_ End Property Public Property Get telnum() telnum = telnum_ End Property デフォルトプロパティの設定がちょっとトリッキー、こことかを参考に https://thom.hateblo.jp/entry/2015/02/16/003000 あとは Dim a As New Type1 a = "151123408012341234" Debug.Print a.Zip Debug.Print a.telnum
508 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 13:04:52.31 ID:IIEda1opd.net] >>487 何を目的とするかによるけど 速度は重視しないのであれば比較的周知されているBの方がいいのではと思うだけで 書き方なんて色々あるんだから試行錯誤すればいいと思う
509 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 13:11:14.27 ID:IIEda1opd.net] >>498 記憶があいまいだけど 長さの合計値が同じになる変数を持つ構造体を作ってそれをLSetで代入すれば可能だと思う Type Type1 Zip As String * 7 telnum As String * 11 End Type Type Type2 Value As String * 18 End Type Sub Sample() Dim b As Type1 Dim a As Type1 a.Value = "151123408012341234" LSet b = a End Sub
510 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 13:57:57.06 ID:yUQgc7GAM.net] >>503 それで代入だけは可能だけど、電話番号が10桁だと末尾に自動的にスペースが入って11文字に補正される 固定長文字列はTrimもできないから、結局構造体を使う方法はトラブルの予感しかしない
511 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 14:36:41.07 ID:IIEda1opd.net] >>504 与えられたデータだけの回答だからね 与えられた情報以外の事をあーだこーだいう人いるけど それはその時考えたらよくない? そもそもそういう事を言い出したら 質問のできるできないはできないって回答になるわけだし
512 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 14:46:19.33 ID:QIi9ICtD0.net] 与えられたデータっていうか、前提条件がはっきりしないからなぁ >郵便番号+電話番号ていう文字列がある 以外は試してみたっていうコードからの推測だしな まあおれなら合体文字列のセッターと郵便番号、電話番号のゲッターのプロパティ持つクラス作るかなぁ 中身はLeftとMidでいいんじゃね 固定長で最速を目指すならLSetもありかもしれんが 構造体うんぬんより、固定長文字列がトラブルの予感を感じさせるんだよなぁ、いろんなところで
513 名前:デフォルトの名無しさん [2022/06/14(火) 15:27:21.00 ID:jJwMl27ba.net] 固定長文字列って文字数で良いんだっけ? 全角でもおなじ?
514 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 17:23:15.55 ID:QIi9ICtD0.net] >>507 文字数だから全角でも同じはず というか、文字列はユニコードってことになってるから全角とか半角とかないってことになってるんだよ、いちおう
515 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 19:35:25.43 ID:vdrsXIkl0.net] 関数2つ作ればいいのにわざわざ構造体やクラスつくる意味あんのかな 処理速度を気にするのは自力で動くの作れるようになってからだぞ
516 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 20:24:08.87 ID:sqy53zZK0.net] >>487 簡単にいうと、なんでもMidステートメントに置き換えれば速くなるってわけでもない(そういう使い方にはちょっと注意がいる) あと固定長文字列はいかにも速そうだが実は可変長文字列よりパフォーマンスが落ちることが割とあって、これまた扱いに注意を要する まずは自分の望む動作をするコードを完成させることに注力した方がいいんでないかな (速度改善や利便性向上みたいなのはなんていうか、キリのない作業でもあるし)
517 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 07:33:40.74 ID:7lj8rf8tD.net] >>509 クラス1つ作ればいいのにわざわざ関数2つ作る意味あんのかな、 って疑問を持つ奴もいるからどっちもどっち
518 名前:デフォルトの名無しさん [2022/06/15(水) 10:47:02.71 ID:EefWJAwfa.net] 自力でやれるなら好きに組めば良いけど それもできない初心者だからな
519 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 11:15:30.59 ID:WoPQ0lFMd.net] こういうやり方があるよって回答だけすればあとは質問者がそれを選択するだけでいいのに 他人の回答にケチ付けるやつはなんなんだろうと思う
520 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 11:50:46.53 ID:RetoKdFBM.net] >>513 質問の内容(仕様)が明確じゃない部分を好き勝手に解釈した結果
521 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 12:43:33.38 ID:2pwDzYJj0.net] >>513 >>514 単に性格悪いってだけ
522 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 13:41:42.48 ID:HRaMYgOd0.net] ユーザーフォームに毎回違う数のラベルを作った時に、それぞれのラベルでクリックイベントを作りたいのですが ラベル数が変動するので作れません。 こういう場合、存在するどのラベルをクリックしたかを調べるにはどうすればいいですか?
523 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 14:04:25.53 ID:2pwDzYJj0.net] >>516 昔やろうとしたけど超しんどいよ vb6にはコントロール配列って機能があってそれを使えばよかったけど、 vbaでなぜかなくなっているので絶望的にめんどくさい 他の方法を考えたほうがいい どうしてもやるなら「vba コントロール配列」あたりで検索して頑張ってくれ。 https://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_100_040.html
524 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 14:41:31.92 ID:EFN5k3S5d.net] >>516 ラベルは最大数で作っといて、必要な分だけVisibleで見せる
525 名前:516 mailto:sage [2022/06/15(水) 17:15:36.58 ID:HRaMYgOd0.net] >>517 他に方法がなさそうなのでこれでやってみます >>518 Private Sub Label1_Click() を1000個とか作るのはちょっと汚いので止めておきます
526 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 17:23:32.33 ID:C/XRb82A0.net] ラベルを動的に1000個作るのは汚くないのかよ
527 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 17:37:50.64 ID:fn3i9wsI0.net] まずどうして1000個も必要なのかのほうが突っ込みどころな気がする VBAってフォーム内でクリックした座標の検出できないのかいな
528 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 17:42:47.22 ID:Vg/305+8M.net] クリックイベントを1000個作るぐらいならクラス化しちゃうかなぁ どっちにしろ面倒臭いけど 大量にラベル設置した時のリネーム作業を簡単に出来る方法何かない?
529 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 17:51:28.07 ID:2pwDzYJj0.net] いや普通につくるならプルダウンだろ 何かしらで分岐させれば3,4回の選択で済む
530 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:13:02.83 ID:Vg/305+8M.net] 構内マップを作らされてその上にマインスイーパみたいな升目を作らされ、機器の設置場所を設定出来るようにしたい。場所の指定は分かりづらいから文字だけにするのはNGね。なんて業務を振られる事も稀によくある
531 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:14:34.90 ID:C/XRb82A0.net] 何をどうしたいのか知らんし、その1000個の元データはどっからどう持ってくるのかしらんけど Excel VBAだしな 俺ならシートで選択させてフォームのボタンかな
532 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:28:15.26 ID:C/XRb82A0.net] >>524 で、それを実現するのがEXCEL VBAでラベル1000個なのか? いろいろ検討して最終的にそれしかないとなったならまあご愁傷様 そうじゃないならあほとしか思えん
533 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:47:53.19 ID:Vg/305+8M.net] それしかないじゃなくてそれしか許されないんだよ アホかって思いながらやってるよ
534 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:57:22.93 ID:myHzQmQR0.net] マス目なら座標取ればいいような気がするが許されないなら仕方がないな
535 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 19:32:37.12 ID:JFwHiHWC0.net] a=郵便番号電話番号 b=Left(a,7) c=Replace(a, Left(a, 7), "")