1 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 22:08:43.71 ID:jtngtgXU0.net] !extend:checked:vvvvv:1000:512 ↑同じ内容を2行貼り付けるナリ ExcelのVBAに関する質問スレナリ コード書き込みや作成依頼もOKナリ ※前スレ Excel VBA 質問スレ Part69 https://mevius.5ch.net/test/read.cgi/tech/1607786543/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
755 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 17:03:41.13 ID:6tENHryO0.net] >>729 VB6の開発プロジェクトやってたけど どのソースコードでもdimもwithもdo untilも当然のように使ってたぞ お前が使わないってだけじゃないの? あとOption Explicitつけないのはバグの原因になるから推奨できない。
756 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 18:11:49.59 ID:jYvDj1vcd.net] VBScript(WSH)はDimないし使わないのも自然だけどVBAはありがたくOption ExplicitもDimも使うな
757 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 18:14:06.32 ID:IhtMBIEH0.net] 俺は変数宣言するけどoption付けない事も多いな 自分だけのちょんプロとか
758 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 19:23:35.24 ID:vdqKmiMMd.net] >>750 この文章でモロバレ
759 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 20:01:04.28 ID:+76Iryda0.net] With使わないのは、C#に採用されなかったように最近の流れだからまあいい Doも、ループはWhileに統一しろってルールならまあいい Dim使わんってどういうことだ? まさか変数の宣言しないってことじゃないよな Option Explicitなんて自分で書くことまずないが、真っ先に変更するオプションじゃないのか
760 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 20:07:27.25 ID:cJeFkg/00.net] 変数の宣言しないと型違いのエラーとか検知しづらくなるし、 コードの中で比較が出てきた時に自作関数の結果か変数の値かどっちと比較してるのかわかりづらくなったり… とにかく色々エラー回避とかメンテナンス性とか考えて変数宣言しないのはナシよりのナシかと
761 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 20:35:45.94 ID:QG+os5rrH.net] 基礎ができてなくて、型の使い分けがわからなくて全部Variantで書いてる人
762 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:04:16.49 ID:PaQQNn710.net] >>755 しない 以下でエラーが起きないって時点で俺はアホらしくなって宣言をやめた Sub foo() Dim a As String Dim b As Long a = "1" b = 2 Debug.Print a + b '3が出るぞ良かったな End Sub
763 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:06:38.67 ID:PaQQNn710.net] 宣言しないと何ができなくなるのか、何を間違えるのかが分からん
764 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:30:00.76 ID:6tENHryO0.net] >>758 それは暗黙の型変換が行われるから。 変数の宣言をしたほうがいいのは以下のような場合にエラーにできるから。 public sub foo() hensu = 1 Debug.Print hansu + 1 end sub 2が出力されることを期待しているが、この場合1が出力される。(変数名の打ち間違い)
765 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:36:40.65 ID:6tENHryO0.net] VB6やVBAは型が弱いので、変数名の先頭にintやlng、str等をつけてデータ型がわかるようにするのが一般的だと思ってる。 この場合だと Dim intHensu As Integer の宣言を入れておくべき。
766 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:37:56.47 ID:PaQQNn710.net] >>760 なるほど そういう意味では型をつけずに全部variantで宣言はアリなのか dim a,b,c ってな感じで
767 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:39:48.07 ID:PaQQNn710.net] >>761 変数名見れば何入ってるか分からないか?
768 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:43:37.13 ID:6tENHryO0.net] >>763 ごめん一般的といったのは、自分がそう思ってただけなので、実際はそうじゃないかも。
769 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:45:17.15 ID:jYvDj1vcd.net] 何でもかんでもVariant型だと余計にメモリ食ったり速度面で劣るんじゃなかったっけか
770 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:52:57.44 ID:QG+os5rrH.net] 簡単なマクロならメモリも速度もほとんど気にしなくていい そういうのが気になってきてから速くする方法を勉強してもいいと思う
771 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:55:44.85 ID:cJeFkg/00.net] 文字列 String 整数 Long 小数以下も必要 Single 日付 Date Setが必要なもの Object なんでも Variant 初心者ならこれくらいの使い分け出来てたら十分だから宣言はして
772 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:57:26.01 ID:L/dDaofga.net] 大量のデータをがばっと取るときはsql とってきたデータをチマチマ加工したいときはVBA 二刀流がべだー
773 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 22:02:54.21 ID:L/dDaofga.net] 変数宣言でいちばん重要なのは パブリック変数なのか プライベート変数なのかだよ 型はそんなに気にしなくてよいから 3文字以下ならプライベート、パブリックなら5文字以上にする
774 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 22:18:22.12 ID:Z/jAVLJW0.net] >>769 いや、そもそも 外部とのやり取りはプロパティで行わないと ブレイクポイント等仕掛けて どこから呼ばれたか分かり辛くなることを考えると 変数をPublicで宣言する機会はまず無くなるだろう。 もちろんこのプロパティと言うのは概念的なものを含めて Javaの様に関数と同じ様に設定することも含めるけど。 そうすればパブリック、プライベートの 判断のために変数名の考慮を行う必要も無くなる。 良かったな。
775 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 22:31:52.03 ID:PaQQNn710.net] >>765 variantはかなり遅い longをvariantにすると 0.001秒の処理が0.01と、処理時間が10倍近くになることも >>769 vbaのグローバル変数はマジでやめたほうが良い。大体良くない事が起こる グローバル変数使うなら作業シートに書いたほうがよっぽどマシ 逆にシートにないデータをconst staticみたいに使うならアリ
776 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 23:54:10.02 ID:+76Iryda0.net] >>758 そもそもそのコードで3を期待しないのがおかしいとしか思えんのだが "12"を期待するなら+じゃなくて&使えよ
777 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 00:48:39.55 ID:vQpWnC+C0.net] >>761 ハンガリアンなついな VBAあたりを最近書いてないからか
778 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 01:41:49.82 ID:SiihAWPs0.net] variantにすると型間違いでエラーがでないので やはり推奨できない
779 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 02:15:37.67 ID:vzYu7ze/0.net] 知恵を貸してください ある可変長2次元配列のデータについて 各列のデータから1つずつ抽出した文字列の組み合わせを出力したいと考えています 例えばArray(2,2)のデータが以下だとします Array(0,0)="いちご" Array(0,1)="みかん" Array(0,2)="" Array(1,0)="あまい" Array(1,1)="すっぱい" Array(1,2)="にがい" Array(2,0)="100円" Array(2,1)="200円" Array(2,2)="" この場合 「いちご,あまい,100円」「いちご,あまい,200円」「みかん,すっぱい,100円」 などの 空白を除く2*3*2=12通りの組み合わせ全てを抽出したいのです (抽出先はシートでも配列でも何でも良いです) そして実際にはこの配列をArray(x,y)とすると xとyは1以上の自然数で不定です 配列の行数が固定長であれば各行において行の数だけFor文でループの中にループを入れれば良いのでしょうが 配列の行数が1以上の不定数の場合にどうすれば良いか思い付きません vbaというよりアルゴリズムの問題かも知れませんが 良い方法はあるのでしょうか
780 名前:デフォルトの名無しさん [2021/05/09(日) 02:26:22.29 ID:qbmXU1K50.net] はい、いつものあいつ
781 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 04:53:38.03 ID:yBvaHslb0.net] >>724 はい、難しいです。簡単なら今頃VBマスターで溢れ帰ってます! 日々の努力あるのみです!
782 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 06:11:50.07 ID:Gu7b6Am40.net] 相手しない相手しない
783 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 08:20:21.39 ID:nRlrfZeFa.net] ワークシートをグローバル変数みたいなつかい方をする うむ、よくある
784 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 09:19:54.62 ID:TBZcO69u0.net] uboundで現在の配列の最大要素番号調べて、そこまでループとかじゃないの? そもそも配列なんて自分はあんまり使わない。redim preserveって確かかなり遅かった気がする。
785 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 09:44:03.47 ID:1mWvM4p1M.net] ReDim Preserveは1番ケツの次元しか可変に出来ねぇのがとても残念
786 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 09:48:20.73 ID:HdQWbOvH0.net] >>775 Sub foo() Dim array1() As String ReDim Preserve array1(3, 3) array1(0, 0) = "いちご" array1(0, 1) = "みかん" array1(0, 2) = "" array1(1, 0) = "あまい" array1(1, 1) = "すっぱい" array1(1, 2) = "にがい" array1(2, 0) = "100円" array1(2, 1) = "200円" array1(2, 2) = "" For Each dim1 In array1 If dim1 <> "" Then Debug.Print dim1 End If Next End Sub vbaの動的配列は本当にめんどくさいな
787 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 10:05:56.73 ID:Nzaho5/SH.net] 行数、列数はUBound関数で調べられる 2次元配列の場合は UBound(array1, 1) UBound(array1, 2) で、それぞれの次元の大きさが取得できる 2番目のパラメータが対象となる次元 あと、多次元配列に一気に代入するにはarray関数を次元と同じ数だけ入れ子にする方法がある array1 = Array( _ Array("いちご", "みかん", ""), _ Array("あまい", "すっぱい", "にがい"), _ Array("100円", "200円", ""))
788 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 10:13:55.83 ID:vzYu7ze/0.net] ありがとうございます ReDim Preserveの配列再定義は知っているのですが 例えば>>782 のようだと 「いちご」 「みかん」 「あまい」 …… 「200円」 のような2+3+2の7個出力されるだけですよね 「いちご,あまい,100円」 「いちご,あまい,200円」 「いちご,すっぱい,100円」 …… 「みかん,にがい,200円」 のような2*3*2の12個を出力したいのです 行数が固定なら例えばArray(2,x)のように列数が不定でも For i=0 To UBound Array(0,x) For j=0 To UBound Array(1,x) For k=0 To UBound Array(2,x) Debug.Print Array(0,i)& "," & Array(1,i)& "," & Array(2,i) Next Next Next のようにして空白部分の例外処理を適当に入れれば良いのは分かりますが 行数が不定なので分からないというお話です
789 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 10:14:00.97 ID:Nzaho5/SH.net] >>775 2次元配列の要素数が不明の場合こういう書き方もできる For i = 0 To UBound(array1) For j = 0 To UBound(array1(i)) Debug.Print array1(i)(j) Next j Next i
790 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 10:14:31.62 ID:HdQWbOvH0.net] >>782 は全然違うわ、スマン
791 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 10:50:20.26 ID:Nzaho5/SH.net] >>784 とりあえず、Array関数というのが存在するから、変数名にArrayは使っちゃだめ ArrとかMyArrayとか何か別の名前に変えないと
792 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 11:38:04.63 ID:TBZcO69u0.net] 自分で書くならこうかな? 再帰処理使わないでスッキリ書く方法は思いつかなかった。 https://i.imgur.com/noQC9bg.png これでだめ?
793 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 11:47:23.05 ID:Nzaho5/SH.net] とりあえずもう一つ突っ込みたい Preserveは不要だしパラメータも(3, 3)じゃない ReDim array1(2, 2) が正解 >>788 ネストの深さが不定の時は再帰でやるのが一番自然だと思うよ
794 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 11:59:36.87 ID:TBZcO69u0.net] ごめんちょっと動作検証してたら、Uboundのとこxとyが逆だった。 Ifの中に書いてるのが、Ubound(ary1) でForの中に書いてるのが Ubound(ary1, 2) ですね。
795 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 12:09:11.80 ID:TBZcO69u0.net] >>789 おっしゃるとおりですm(_ _)m せっかくご指摘いただいたので、直したものを上げ直します。 https://i.imgur.com/ykrQPY4.png
796 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 12:10:40.52 ID:Nzaho5/SH.net] やってることは同じだけど画像だと入力が面倒だろうし、俺もほとんど同時に作っちゃってたんで貼らして Option Explicit Sub foo() Dim array1() As String ReDim array1(2, 2) array1(0, 0) = "いちご" array1(0, 1) = "みかん" array1(0, 2) = "" array1(1, 0) = "あまい" array1(1, 1) = "すっぱい" array1(1, 2) = "にがい" array1(2, 0) = "100円" array1(2, 1) = "200円" array1(2, 2) = "" Call recloop(array1, 0, "") End Sub Sub recloop(array1, row1, str) Dim col1 If row1 < UBound(array1, 2) Then For col1 = 0 To UBound(array1, 2) If array1(row1, col1) <> "" Then Call recloop(array1, row1 + 1, str & array1(row1, col1) & ",") Next Else For col1 = 0 To UBound(array1, 2) If array1(row1, col1) <> "" Then Debug.Print str & array1(row1, col1) Next End If End Sub
797 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 12:23:48.39 ID:vzYu7ze/0.net] ありがとうございます 再帰関数の知識は持っていたのですが 自身で再帰関数を使用したことは無かったため盲点でした このように使用するのですね 助かりました参考にさせて頂きます
798 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 13:41:59.08 ID:WHUEfE6G0.net] >>779 グローバル変数と言うよりストレージみたいなもんだと思ってる
799 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 21:06:29.88 ID:o10D8BaNM.net] ReDim使うのって要素数に変数使うときじゃなかった? 数が決まってるならDim array(0 to 2, 0 to 2) As Stringで良いんだよね?
800 名前:デフォルトの名無しさん [2021/05/09(日) 21:07:35.90 ID:OCR3m9+L0.net] >>737 あなたに禿同!
801 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 21:47:13.65 ID:HdQWbOvH0.net] >795 動的配列と静的配列の違いだよ 「変数」でもなければ「数が決まってる」でもなく、「後で変更するかどうか」が違う所
802 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 01:12:41.56 ID:8FNokcfwd.net] 再帰を使わない方法でやってみた 「r行c列」の配列を「c桁のr進数」とみなしてる。とりあえず動いたけどバグあるかも Sub Macro5() Dim array1() As String ReDim array1(2, 2) array1(0, 0) = "いちご" array1(0, 1) = "みかん" array1(1, 0) = "あまい" array1(1, 1) = "すっぱい" array1(1, 2) = "にがい" array1(2, 0) = "100円" array1(2, 1) = "200円" row0 = UBound(array1, 1) col0 = UBound(array1, 2) + 1 For n = 0 To (row0 + 1) ^ col0 - 1 nn = n s = "" For row1 = row0 To 0 Step -1 col1 = nn Mod (row0 + 1) nn = nn \ (row0 + 1) If array1(row1, col1) = "" Then s = "" Exit For Else s = array1(row1, col1) & s If row1 Then s = "," & s End If Next If s <> "" Then Debug.Print s Next End Sub
803 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 20:50:28.57 ID:6x/72ii/a.net] そもそもの疑問で、なぜVBAは初心者向けとか言われるのでしょうか。 こんなに小難しいチマチマしたこも書かなきゃいけないのに。 全然わからん。
804 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 20:50:49.81 ID:GwFlyMni0.net] >>761 俺もハンガリアン使ってるわ
805 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 20:53:01.66 ID:2ArSfNqX0.net] >>775 総当りってよく考えればパワークエリでクロス結合すれば一発だろって思ったら、パワークエリにクロス結合が無かった・・・ https://www.shegolab.jp/entry/excel-macro-cross-join accessだとアホみたいなクエリで即完成 https://i.imgur.com/moHa3bx.png
806 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 20:55:51.32 ID:/NuMOBBIM.net] >>799 昔はプログラミングはもっと敷居が高かったんだよ その中では、Excelさえあれば使えてUIはExcelのワークシートをそのまま利用できるという手軽さは初心者には魅力的だった その頃の名残だね 今ではPowerAppsとかGASとかSalesforceとかもっと簡単で強力な選択肢は色々あるし、 プログラミングの勉強ならPythonとかJavaScriptの方が初学者には敷居が低い
807 名前:デフォルトの名無しさん [2021/05/10(月) 20:57:55.19 ID:vb1TGTCB0.net] ハンガリアンより#%&$の方が分かりやすいよな
808 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 21:06:13.53 ID:6x/72ii/a.net] >>802 レスありがとうございます。 今、流行りの言語に比べてなぜこんなに、と思っていました。 もっと難しかったのですね。 理解しました。 パソコン仕事を楽に短縮できるよう頑張ります。
809 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 21:09:38.66 ID:2ArSfNqX0.net] vbaは本当に楽。forとif覚えるだけで仕事がはかどりまくり Cはメモリの知識やらヘッダやら本当に覚える事が多かった上に超便利なワークシートってもんもない
810 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 21:10:42.65 ID:aMiH/GVN0.net] まったくな
811 名前:デフォルトの名無しさん [2021/05/10(月) 21:13:02.21 ID:vb1TGTCB0.net] 沢山の似たようなライブラリが公開されていて いろいろな方法でやりたいことが実現できる それはそれはいい時代になりました でも、コレがやりたければコウ書け! まどろっこしいが他に道は無い! ってのも初心者にはいいものですよ
812 名前:デフォルトの名無しさん [2021/05/10(月) 21:46:59.07 ID:WQl4RFpm0.net] 条件付き書式や文字の縮小機能まであって、CopyFromRecordsetの異様な速さ (もちろんシート関数やオートフィルタの速さも異様でしょう) VSでは無理だし、自作も当然無理 Excel部署の人だって、1人では無理でしょう
813 名前:デフォルトの名無しさん [2021/05/10(月) 21:59:47.57 ID:WQl4RFpm0.net] でも.NETに比べれば、メモリを意識するよ 参照渡しとかMidで打刻とか 結果、値渡しの.NETの方が速いけどw(初期の.NETはVBAの方が速かったが)
814 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 22:34:57.25 ID:ViCp850r0.net] VBA は、シェルスクリプトと同じ。 ちょっとした事しかできない それを知らない香具師が、複雑なプログラミング用途に使って、 結局保守できなくて、Ruby の10倍ぐらいのコストが掛かる ちょっとしたナイフで、マグロをさばいたりするのと同じ。 道具・用途のミスマッチ だから、ウェブ系の会社は、プログラミング言語は適材適所で選択しますって言う。 道具・用途を合わせる。 言語を固定化しない 頭が柔軟。 先に道具を選択しない。 用途から道具を選ぶ 実社会では、ほとんどこればっかり
815 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 23:04:34.19 ID:E9+bgpxg0.net] ExcelのAPIが優秀なのであってVBA自体は微塵も良くない
816 名前:デフォルトの名無しさん [2021/05/10(月) 23:09:51.84 ID:W7s1RH430.net] >>810 で、終わったRubyしか使えず>>712 みたいな嘘を書き散らすようになると
817 名前:デフォルトの名無しさん [2021/05/11(火) 00:42:36.92 ID:OkNnulfr0.net] 先に道具を選択しないと言いながら、道具ありきの叩きw オープン系は外から機能を持って来るのが特徴なので、言語自体の機能は不要 なんでも呼べるシンプルなシェルのようなもの、オープン系の起点としてふさわしい 大量データの組合せならSQL ServerにBULK INSERTしてCROSS JOINするのが最速のはず でもそのクエリを投げるのはVBAで十分で、結果の表示はExcelのCopyFromRecordsetが最速のはず
818 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 01:44:32.13 ID:hzo0csgz0.net] >>801 それじゃ希望した動作にならないのでは? テーブルの数が不定なのだから。 集計するごとにクエリを作り直すことになる。
819 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 05:27:49.58 ID:/SA0DWk40.net] >>814 クエリってAccess VBAで動的に生成できるんだぜ
820 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 07:53:09.78 ID:FeyzCVkSd.net] >>815 そんなん知ってるが、結局VBAかよw
821 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 09:04:47.57 ID:/SA0DWk40.net] >>816 適材適所だろ 全部VBAで組むより全然楽だし分かりやすいよ
822 名前:デフォルトの名無しさん [2021/05/11(火) 11:31:41.06 ID:OkNnulfr0.net] 無償のSQL Serverがあるのに、わざわざ有償で低性能のAccessを使う理由は、初級者であること以外にないですよ でもExcelはいろんな点で他では追い付けない性能があるので、初級者でなくても使う理由がある AccessのグリッドもVS等の普通のグリッドとは違い、非同期のリピーターコントロールでできていて、 大量件数でも先頭から順次描画し、全行をメモリに持たないため、高速になるとのこと その点では、VSより性能がいい(あと子要素の帳票フォームの簡潔さ) そのかわり常に大量のイベントが走るため、不安定になりやすい (DBとしてはなんちゃってなので、業者はADP等でSQL Serverと連携して使う) その速度をさらに超えるのがExcel(特定の使い方で) イベントが少ないので、不安定になりにくい(Delphiもその点が良かった) イベントはブック単位で代表できるため、ソースも統合管理しやすい
823 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 11:39:24.42 ID:UIB0JMdPa.net] ユーザーフォームのマルチページ、タブ自体のBackColorプロパティってありますか? なければ代替手段を教えてください
824 名前:デフォルトの名無しさん [2021/05/11(火) 14:43:21.70 ID:0OaQcACpM.net] Excelフォームが中途半端な出来損ないだから ここを最新のユーザーエクスペリエンス()で作り直せばAccessなんかすぐに駆逐できる
825 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 18:04:28.65 ID:ZT0Qqj13a.net] そうだね 大規模なのはSQL 小回りをきかせたいときはエクセル 事務屋ならこれで8割できてしまうだろうね
826 名前:デフォルトの名無しさん [2021/05/11(火) 19:06:43.69 ID:YSh4nGIkM.net] ただ、VBAはヤメテ
827 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 12:57:12.16 ID:mV8qcvY8a.net] フォームがもう少し何とかなればとは思うよ >>819 然り、痒いところまであとちょっとって感じることがしばしば
828 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 15:18:28.53 ID:BdPBmasF0.net] >>822 アホか ここは何のスレだと思ってるんだ? VBA書くのがイヤなら SQLSERVERのスレ立てて そこでSQLでもストアドプロシージャでも 関数でも好きな話題してれば良かろう
829 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 15:47:57.27 ID:MQbyKY6x0.net] なんだ?喧嘩勃発か?
830 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 15:55:47.07 ID:bNkKHmITM.net] ちょこちょこ書く分には十分なものだと思うよ
831 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 12:11:34.16 ID:RAFicIoxa.net] そうかな
832 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 16:10:32.92 ID:yc7BZe0Ia.net] ビジネスやってる人じゃないとわからないと思うよ
833 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 17:14:21.80 ID:4K+rsr0c0.net] 確かに。趣味レベルの自分じゃ縁のない話すぎるわ
834 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 20:39:49.87 ID:BPKFCkYp0.net] なんのビジネスだよ・・・
835 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 20:43:26.98 ID:nlP9UXqMd.net] 普通の仕事で書くコードってことじゃないの
836 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 20:48:35.69 ID:a3vkA3q7a.net] ビジネスってよりワークで使うかな ワークマンってよりはビジネスマンか…
837 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 20:50:41.60 ID:a3vkA3q7a.net] 使いどころはビジネスってよりワークかな でもワークマンってよりはビジネスマンか…
838 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 21:12:55.35 ID:HJ1eRgpP0.net] ワークってよりビジネスな場合もあるかな でもワークマンってよりはビジネスマンか…
839 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 21:19:10.07 ID:BPKFCkYp0.net] なんでvbs採用したんだろう jscriptならもっと未来あっただろうに tsへの移行も自然だっと思う
840 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 21:27:44.43 ID:HJ1eRgpP0.net] >>835 そらもうvbaの登場時期が早かったからとしか言いようがない vba開発チームが頑張ったんだろう 30年ぐらい前はBかCが当たり前で、インターネットもロクにないのに謎のjscriptなんて言語が勝つのは無理がある
841 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 08:17:06.17 ID:NU+NRHZVd.net] >>818 www 初級者まる出しの文章で笑えるw
842 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 08:20:10.01 ID:NU+NRHZVd.net] >>819 普通じゃ無理。 無理矢理タブもどきをつくるか、頑張ってWin32APIでやるか。 Win32APIでやるのは、まあ辞めとけ。
843 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 08:39:26.02 ID:q7wj393Za.net] タブを切り替えた瞬間にバックカラーも切り替えれば良いだけ
844 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 09:49:10.63 ID:rbrSxZ/Wa.net] 勝手に見出しの色のことだと思ってた エクセルのシートにやるみたいなやつ
845 名前:681 mailto:sage [2021/05/14(金) 10:40:26.20 ID:f8pG7pdca.net] 681です 皆さんのおかげで無事目的のコードが作れました あと1つ質問なのですが… 画像のように重複した数値を除く総計を算出したいと思っています 会社名毎の数値を合計すればいいだけだと思ったのですが、 どうしても重複のものも一緒に合算してしまいお手上げ状態です 因みに元データは都合によりいじれないため、合算前に重複部分を削除等はできません 恐れ入りますが、宜しくお願いします
846 名前:681 mailto:sage [2021/05/14(金) 10:41:19.08 ID:f8pG7pdca.net] 画像を貼り忘れておりました https://i.imgur.com/HLZYwhr.png
847 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 11:33:58.88 ID:+U8xhPuO0.net] 会社ごとの重複を除く合計が出たんだからそれを足
848 名前:すだけだろ 逆に何をやったらまた重複したものも合算するのか理解できない [] [ここ壊れてます]
849 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 11:38:54.22 ID:usYNgZ690.net] いつものあいつだぞ
850 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 12:11:07.63 ID:mu0LH/UJa.net] >>841 もとデータをいじらないでも、もとデータを別のシートにコピーすればいじれるんじゃね
851 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 12:24:14.75 ID:Vktv5FHm0.net] >>841 重複除けてるのなら、結果をSUM関数で合算するだけじゃん。 >>686 で上げたように、そもそもVBAすら使う必要ない。
852 名前:デフォルトの名無しさん [2021/05/14(金) 13:02:54.78 ID:kX62fe1ba.net] 君らも構うねー >>681 への数多の回答を経て「皆さんのおかげで」としか言及しない礼儀知らずなんぞ俺なら2度と助けようと思えないけどな
853 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 14:11:01.00 ID:C4z8VNUC0.net] >>841 SQLでやってるの? VBAでやってるの? SQLなら会社、氏名、数値でグルーピングしてから合計求めりゃいいだろうし VBAでやってるなら上からループして会社、氏名、数値をコレクションかディクショナリーに登録しておいて 同じ組み合わせのものが登録されてたら飛ばせばいいだけじゃないの?
854 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 16:00:12.91 ID:bBl2sxC0r.net] ほんとに、よう構うわ
855 名前:デフォルトの名無しさん [2021/05/14(金) 16:15:08.56 ID:N2rlLeCr0.net] 暇人しかレスしない そりゃ高齢化する罠