Excel VBA 質問スレ Part74

■ このスレッドは過去ログ倉庫に格納されています
2021/12/20(月) 01:40:59.22ID:jnlr9GaR0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

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

※前スレ
Excel VBA 質問スレ Part73
https://mevius.5ch.net/test/read.cgi/tech/1631485799/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
666デフォルトの名無しさん (ワントンキン MM3f-pR+k)
垢版 |
2022/01/25(火) 20:41:24.90ID:4M+ZFVtxM
いつもの馬鹿か?
667デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/25(火) 20:44:12.39ID:EmlIIuq10
ID:mNb42c/J0

いつもの知ったかの馬鹿?
2022/01/25(火) 20:46:43.85ID:mNb42c/J0
コスパの話をしてんのよ。

わかるかな?無能さん。
669デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/25(火) 20:58:23.53ID:EmlIIuq10
>>668
無能はお前だろ、馬鹿が
コスパなら>>665が書いてるようにPowerShellだろうが
2022/01/25(火) 21:01:31.55ID:mNb42c/J0
もちろん、PowerShellでも作れるし
他にもテキストベースなら
JavaScript、VBSでもつくれるし。
2022/01/25(火) 21:01:47.49ID:7v92mOzc0
VBAスレなのになぁ
2022/01/25(火) 21:04:24.62ID:mNb42c/J0
無能はスマソ。
Windows環境なら、簡単に自動化する方法は
沢山あるよって話でした。

さようなら。
673デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/25(火) 21:28:25.73ID:EmlIIuq10
>>672
話しを誤魔化して逃げるのかよ、馬鹿
2022/01/25(火) 21:31:06.39ID:Ezk4VrXqM
放置しとけよw
別に今時のWindowsならC#でもVB.NETでも使えることすら知らんみたいだし
2022/01/25(火) 22:00:31.09ID:+A6ImuRo0
>>604

なんかもうため息というかなんというか。要は上司の「俺が理解できないから」だよね。
悪い意味での日本流。東アジア流かもしれん。

偶然の産物かもだけど、「長々とした入れ子は駄目」は賛成する。

4段以上のネストとか30行以上の関数とか俺の頭じゃバッファオーバーフロー。
2022/01/25(火) 22:08:37.63ID:+A6ImuRo0
If( 正当条件1 ) Then
  If( 正当条件2 ) Then
    If( 正当条件3 ) Then
      If( 正当条件4 ) Then
        長〜い正当処理1
        長〜い正当処理2
        長〜い正当処理3
      Else
        エラー4
    Else
      エラー3
   Else
    エラー2
  Else
   エラー1
End If

こんなの見ると、「初手でエラー全部弾けよ」と思う。
2022/01/25(火) 22:11:24.49ID:Zmf/5OMz0
まあまあ、自分が昔組んだコード見ると何でこんな面倒なことやってたんだろうってみんなが通る道だし
2022/01/25(火) 22:16:18.25ID:bToP/k2z0
>>676
こういう場合どうすべきかね
フラグ立ててfalseならexitsubにしてしまうか
gotoかエラーコードで最後に飛ばすか
679デフォルトの名無しさん (ワッチョイ 275f-8IZx)
垢版 |
2022/01/25(火) 22:21:46.97ID:mNb42c/J0
いま、Youtubeひろゆきライブ配信やってるから

よく聴いて、社畜奴隷の洗脳を解きなさいな。
2022/01/25(火) 22:23:22.62ID:CplOG10X0
Office田中先生、近々ようつべに復帰するみたいですね。
内容は当たり外れあるからアレだけど、あの方の喋りはひょうきんで楽しい。
2022/01/25(火) 22:24:31.01ID:CplOG10X0
>>677
恥ずかしくなりますよね昔のシート見ると。
当時の自分は何がしたかったのかみたいな。
2022/01/25(火) 22:32:38.66ID:T9L9nj8SM
>>676 なら

If Not 正当条件1 Then
 エラー1
ElseIf Not 正当条件2 Then
 エラー2
ElseIf Not 正当条件3 Then
 エラー3
ElseIf Not 正当条件4 Then
 エラー4
Else
 長〜い正当処理1
 長〜い正当処理2
 長〜い正当処理3
End If

とする、面倒なのは

If 正当条件1 Then
 ちょっとした処理1
 If 正当条件2 Then
  ちょっとした処理2
  If 正当条件3 Then
   長〜い正当処理1...3
  Else
   エラー3
 Else
  エラー2
Else
 エラー1

のケースでこの時はルーチン分けるかGotoで途中脱出させると思う
2022/01/25(火) 23:09:39.57ID:ZGZoh/tR0
Select Case 0
Case 正当条件1
エラー1
Case 正当条件2
エラー2
Case 正当条件3
エラー3
Case 正当条件4
エラー4
Case Else
長〜い正当処理1
  長〜い正当処理2
  長〜い正当処理3
End Select

どやさ
2022/01/25(火) 23:20:00.64ID:Y5KLOHGW0
Call 長い正当処理1to3
2022/01/25(火) 23:22:36.33ID:DW1OPm0+0
>>676
VBAはショートサーキットしないからIfを何段も並べた方が効率いい場合がある
けど、この場合はエラーも4種類だから判定式を1つにまとめるわけにいかない

この書き方が読みにくいと思うならIfからエラーまでをそれぞれ4つのFunctionに飛ばすかな
2022/01/25(火) 23:29:04.02ID:UWkwB/rRd
頭が悪いからずっとこれだわ

If エラー条件1 Then
エラー処理
Exit Sub
End if

If エラー条件2 Then
エラー処理
Exit Sub
End if

If エラー条件3 Then
エラー処理
Exit Sub
End if

正当処理
687デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/26(水) 01:52:17.01ID:ULWJ4UsX0
>>679
馬鹿が底の浅い知識をひけらかして嘘を書いて、捨てゼリフ吐いて逃げたのにノコノコ戻ってきて再び捨てゼリフと
馬鹿は自分の拙さを知らずに馬鹿な自分が見えるだけの世界が全てだと思っているから馬鹿なんだよ
2022/01/26(水) 06:27:00.95ID:0epn3Uk/M
>>686
サブルーチンに切り出せるならそれが一番見易い
2022/01/26(水) 11:26:17.93ID:RGV8ouxS0
パッと思い付いてすぐコードを書ける自体有能だと思いますよ。
みんな凄い。
2022/01/26(水) 11:54:57.36ID:xGOCvJmUr
たしかにVBとか普段書かないからif thenおかendなんて思い出せないよな
2022/01/26(水) 13:10:14.89ID:q0HuFlPw0
ちゃんと単体結合テストやるところの場合だと
処理毎に、Function に分けるのが吉。
2022/01/26(水) 14:42:22.30ID:ip0aOcF2M
みんな試行錯誤してきたのがよくわかる
2022/01/26(水) 16:16:07.18ID:RGV8ouxS0
Excel全般て本当に努力しないと使えないってのはウソじゃないですな
694デフォルトの名無しさん (オッペケ Sr7b-8IZx)
垢版 |
2022/01/26(水) 16:21:39.28ID:ykAsNY55r
Excel VBAビギナーの頃
5000万の案件をやり遂げた事あるけど
VBの入り口としては良いよね。

昔はVBAを入り口に、VB6.0 に移行できたから
良かったんだがな。
2022/01/26(水) 18:39:36.99ID:WAP1y4aa0
>>623
まぁ他言語をやってない奴の意見なんてそんなもんだろな。
VBAで使えるものもあれば使えないものもある。

テンプレートメソッドパターンなんかは使えないけどストラテジーパターンなんかは使える。

そういうの使った際に分岐が減るからUT楽になるかなー、とか、それ使う程の規模かなー、とか
楽な方を選べるってことだよ。
2022/01/26(水) 18:53:39.06ID:YVr9NW6iM
>>695
> ストラテジーパターンなんかは使える。
無理じゃね?
697デフォルトの名無しさん (ラクッペペ MM8f-DS0X)
垢版 |
2022/01/26(水) 19:15:39.62ID:xR2ItXtPM
グローバルしかない古代BASICに比べれば天国じゃよ
2022/01/26(水) 20:11:08.97ID:+JbM4Kut0
みんなやっぱ困ってるお題なんだなこれ。反応ありがとう。

俺は

Function Func(Args)

 Func = TestArguments( Args ) // ←このへんは異論出るかもだけど、内部関数で引数テストはありだと思う。

 If Func <> Normal Then
  Exit Function
 EndIf

 Call 長〜い処理1をファンクションにしたもの
 Call 長〜い処理2をファンクションにしたもの
 Call 長〜い処理3をファンクションにしたもの

End Function

てな感じをイメージしてた。VBAの文法的にはむちゃくちゃかもだけど、最近書いてないのでそこは許してw

C風に

If ( (Func = TestArguments(Args))<>Normal ) Then て書けるのかな。
2022/01/26(水) 20:33:27.76ID:Rwt/NS3J0
エラーとしてまとめるってのを昔見たことあるけど、見づらいかなぁ

Sub Func()
On Error GoTo err

flg = True

If flg Then
err.Raise Number:=513, Description:="内容"
End If

' Call 長〜い処理1をファンクションにしたもの
' Call 長〜い処理2をファンクションにしたもの
' Call 長〜い処理3をファンクションにしたもの
Exit Sub

'エラー処理
err:
MsgBox err.Number & vbCrLf & err.Description
End Sub
2022/01/26(水) 20:50:31.29ID:8zLJqphFM
>>698
> C風に
> If ( (Func = TestArguments(Args))<>Normal ) Then て書けるのかな。
書けるけど君の思ったようには動かない、例えば
Work = (Func = TestArguments(Args))
は TestArguments() の戻り値が Func と同じなら True、違うなら False が Work に入るから、それと Normal を比較することになる
※ 実際には Func は再帰呼出しとなるが引数が指定されてないのでエラーになる
2022/01/26(水) 21:48:41.76ID:+JbM4Kut0
>>700
なる。ありがとう。
2022/01/27(木) 01:44:43.12ID:f6ffcYr70
>>699
わざわざエラーとかせずに、普通にGOTOで飛ばせばいい

局所的にGOTO使っても可読性は落ちないし、むしろわかりやすいと思ってる
2022/01/27(木) 02:13:33.38ID:iz7yjT+P0
後藤使うのは素人
2022/01/27(木) 07:25:42.82ID:EosWc+uxM
>>702
Raise ならエラー情報(番号とメッセージ)を伝えられると言うメリットがあるな
2022/01/27(木) 09:17:43.26ID:ISwrtggt0
>>702>>704
そう、この場合のメリットは>>704の通り
そして他のエラーもまとめることができるのでシンプルになる

>>703
この場合はgotoかエラー以外ない
2022/01/27(木) 09:49:42.96ID:jZ2PQbyQ0
>>696
何故そう思う?
2022/01/27(木) 10:10:14.97ID:pNJphUuoM
>>706
CallByName() とかを使ってやってやれなくは無いけど無理矢理感あるしな

Strategyパターンはアルゴリズムを記述するサブルーチンへの参照をデータ構造の内部に保持する。
このパターンの実現には、関数ポインタや関数オブジェクト、デリゲートのほか、オーソドックスなオブジェクト指向言語におけるポリモーフィズムと委譲、あるいはリフレクションによる動的ダック・タイピングなどが利用される。

VBAにもまともな関数ポインタがあればね…
2022/01/27(木) 10:41:53.58ID:jZ2PQbyQ0
>>707
そもそもクラスで普通に移譲が出来るんだから
出来るとは思わないか?
もっとも、継承が使えないので
Is a関係だろうがhas a関係だろうが
移譲に頼ることになるだろうけど。
2022/01/27(木) 11:20:16.68ID:NmFY0FMsM
>>708
ああ、インターフェースはあるから移譲はできるか
2022/01/27(木) 12:29:10.84ID:iz7yjT+P0
シンプル・イズ・ベスト。
スティーブ・ジョブズの信条でもあった。

凡才は複雑を好み、天才はシンプルを好む。
2022/01/28(金) 00:04:37.97ID:sv+QVprG0
WorkSheetのEventで、
テーブルのフィルタソート機能(昇順or降順)をユーザが使ったときのEvent
ってできるんでしょうか?
最悪、"フィルタ機能を使った"時点でも取得できれば。。。
2022/01/28(金) 00:19:09.31ID:6Z68BDtw0
>>711
ない
2022/01/28(金) 03:12:47.26ID:sv+QVprG0
>>712
まじですか、、、ありがとうございました。
2022/01/28(金) 12:32:58.97ID:EweXC9jR0
すんません、膨大なデータ量の集計を任されて困ってます。
例えばA1セルに
「1.5G」とあるものは
Gを取った上で1024を3乗し、B1に表示
「256M」とあるものは
Mを取った上で1024を2乗し、B1に表示
「504K」とあるものは
Kを取った上で1024を掛け、B1に表示
みたいな便利なことができる関数があれば教えて頂きたく。
SUBSTITUTEで文字を取ったりVALUEで数字だけ抜き出したりしてみても、そこに条件判定を組み込むことが出来なくて…。
2022/01/28(金) 13:00:06.93ID:6Z68BDtw0
>>714
Excelのバージョン書いて
2022/01/28(金) 13:09:05.83ID:tnq08GUKM
>>714
あんまりスッキリした方法じゃないけど、単位ごとに処理を分けて並べるぐらいしかないのでは
式はもうちょっと整理できると思うけど、とりあえず動くやつ
=IF(RIGHT(A1,1)="G",LEFT(A1,LEN(A1)-1)*1024^3,IF(RIGHT(A1,1)="M",LEFT(A1,LEN(A1)-1)*1024^2,IF(RIGHT(A1,1)="K",LEFT(A1,LEN(A1)-1)*1024,A1)))
2022/01/28(金) 13:43:11.42ID:EweXC9jR0
>>715
Microsoft 365 MSO(16.0.13801.21004)
>>716
本当にありがとう、助かります。
2022/01/28(金) 13:54:48.79ID:SUVzbVrJ0
powerとfindで考えてたけど、あんまり変わらんかった
2022/01/28(金) 14:06:54.61ID:54qKpcGwM
>>717
365 なら
=SWITCH(RIGHT(A1, 1), "G", 1024^3, "M", 1024^2, "K", 1024) * LEFT(A1, LEN(A1) - 1)
ただし、最後が GMK でなかった時はエラーになるのでその場合はIFERROR()で回避かな
2022/01/28(金) 14:10:37.46ID:pNi2eyZM0
集計なら式使わずに素直にVBAで処理すれば?
2022/01/28(金) 15:01:21.24ID:EweXC9jR0
>>719
ありがとう、それも問題なくいけました。
2022/01/28(金) 15:16:30.86ID:6Z68BDtw0
>>721
1K未満の単位の付かない数値に対応したやつ
=LET(u,RIGHT(A1,1),p,SEARCH(u,"kmg"),IFERROR(LEFT(A1,LEN(A1)-1)*1024^p,A1))
2022/01/28(金) 15:34:49.10ID:EweXC9jR0
色々ありがとう。使わせていただきます。
2022/01/28(金) 16:00:55.15ID:Pw9WEPs80
>>723
スピードを求めるならVBAでやった方がいい。
基本、VBAよりCELLに入れた数式の方が計算早いけど、
値を設定するたび再計算が走るのでは当然遅くなる。

単位をRightの1文字切り取って使うかInStrRevで1文字切り取って使うかは自由だし、
数値部分も最後のひと文字を抜いて数値変換する方法はどうにでもなるはずだから、
後は切り取った単位で冪乗計算の乗数を変えてあげれば簡単に行けるはず。
725デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/01/28(金) 16:07:42.05ID:eEIZm5jJ0
膨大な行数になるようなら
関数よりマクロの方が断然軽い。

マクロの記録で瞬間でできるし。
726デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/01/28(金) 16:08:26.59ID:eEIZm5jJ0
記述すら必要なし。
2022/01/28(金) 17:30:28.61ID:vX0FG/YWd
マクロの記録で瞬間て、どうやるの?
2022/01/28(金) 17:31:33.84ID:MK2zcruJ0
一瞬で
2022/01/28(金) 17:35:47.36ID:sJpZ8snBM
この程度なら関数の方が速いと思うぞ
マルチスレッドで動くし
再計算も変化したセルに関連するところしかやらないから問題にはならないと思う
2022/01/28(金) 17:36:25.47ID:u6dzd5iJd
ここはVBAスレだから質問はスレチだけどみんな優しいね
2022/01/28(金) 17:49:38.97ID:qJef3P+M0
>>730
はて?

「Excel VBA 質問スレ Part74」
とあるが?
2022/01/28(金) 17:57:01.02ID:sJpZ8snBM
> ここはVBAスレだから(計算式の)質問はスレチだけどみんな優しいね
733デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/01/28(金) 18:14:34.37ID:ZcQb+fCA0
>>714
こんな奴に作業を任せるとかそもそも間違えている
2022/01/28(金) 18:21:53.88ID:np+yf06a0
今のエクセルの計算式は基本マルチスレッドでやるから、VBAでちまちまやるよりは早いだろうけど
このスレ的にはVBAで関数作るんが正解じゃないかと思った

で、ふと思ったが、VBAの関数をワークシートの計算式で使ったら、シングルスレッドで処理されるのかな
2022/01/28(金) 18:58:00.84ID:Qmj8/oz70
>>711
どうしても「そのテーブルのフィルタソート機能を使用した」時点を起点に処理を始めなければならないとすれば、
Worksheet_SelectionChangeで、その特定のテーブルの特定の列を走査して昇順または降順にデータが並んでいれば「フィルタソート機能を使った」と判定する、ぐらいしか思いつかない
たまたまソートする前にデータが整列してしまっていた場合や処理が完了した後に再度処理が走ってしまうので、どこかにフラグを作って管理する必要もあると思うけど
あと、ソートする列に数値と文字列やブール値などが混在している場合も判定に注意が必要かと思う
2022/01/28(金) 19:12:04.41ID:SUVzbVrJ0
>>730>>732
vbaより数式や標準機能が簡単なら、そっちで回答するだけだよ
「excel&vba」なのか「eccel|vba」かは解釈次第だが、俺は後者だと思う
2022/01/28(金) 19:24:01.89ID:qlKzmgV90
7時30分から30分ずつ加算した時刻をコンボボックスに入れるやり方をおしえてください

For i = 1 To 19
UserForm1.ComboBox5.AddItem Format(DateAdd("n", 30, "7:30"), "h:mm")
Next i
2022/01/28(金) 19:35:31.95ID:sJpZ8snBM
>>734
> で、ふと思ったが、VBAの関数をワークシートの計算式で使ったら、シングルスレッドで処理されるのかな
ドキュメントは見たことないけどVBA部分はシングルだろうと思う
マルチで走るとグローバル変数で競合したとき困るし
2022/01/28(金) 19:40:10.55ID:GYI6WCqI0
VBA専用だけどExcel全般もOK
Excel板と仲悪い理由だけは分かった。
2022/01/28(金) 19:41:52.43ID:sJpZ8snBM
>>737
Dim T As Date
T = TimeSerial(7, 30, 0)
For i = 1 To 19
UserForm1.ComboBox5.AddItem Format(T, "h:mm")
T = DateAdd("n", 30, T)
Next i
2022/01/28(金) 19:55:14.07ID:PEhFKy76d
power queryと変数定義関数で、VBA使わずともかなりのことができるようになったよね
ローコードツールみたいだなと思う
2022/01/28(金) 20:01:26.98ID:XaG/+jlyM
>>735
> Worksheet_SelectionChangeで、その特定のテーブルの特定の列を走査して昇順または降順にデータが並んでいれば「フィルタソート機能を使った」と判定する、ぐらいしか思いつかない
そんなことしなくてもWorkSheet.AutoFilterMode見て、WorkSheet.AutoFilter見たらいいだけ
2022/01/28(金) 20:13:02.61ID:qlKzmgV90
>>740
ありがとうございます
2022/01/28(金) 21:49:05.63ID:Qmj8/oz70
>>742
テーブルらしいので、WorksheetじゃなくてListObjectを見ないと判別できない
あと少なくとも自分には、AutoFilterにはフィルタソートをかけたかどうかを判別できるものが見つけられなかった
(フィルタソートしてもAutoFilter.FilterModeはFalse)
もし環境で動作が異なるのならごめんなさい
2022/01/28(金) 22:21:03.74ID:0dNIFpO5M
>>744
> テーブルらしいので、WorksheetじゃなくてListObjectを見ないと判別できない
ああ、そりゃすまん

> あと少なくとも自分には、AutoFilterにはフィルタソートをかけたかどうかを判別できるものが見つけられなかった
手元に環境ないから試せないけど
ListObjects(...).AutoFilter.Filters(...).On
じゃねーの?
2022/01/29(土) 00:40:00.86ID:d67hOlZf0
図書館に「はじめてのPower Automate Desktop」ていう本があったので借りてみたんだけどよ。
VBAでは10-20行ぐらいのエクセルの処理を、40ページぐらいかけて説明してたわ。
やってることは、VBAでやるコマンドをGUI操作でやってるような感じ。
どう考えても、VBAより簡単とは思えんしむしろVBAのほうが簡単じゃねーの?
2022/01/29(土) 02:38:30.78ID:wvbeuCX/d
>>746
馬鹿には違いがわからんだけだろ
2022/01/29(土) 06:07:15.34ID:S/AYuT160
AWS など、Linux は逆。
GUIを排除して、コード化する。IaC(Infrastructure as Code)

AWSのGUIで設定したら、人によって間違うから、
どのボタンを押すなど、ソースコードで書いて、Terraform で実行する

これなら、Terraformのコードをサーバーへ転送して、実行するだけで環境構築できる
749デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/01/29(土) 06:12:15.60ID:nI5CwbIZ0
いや…VBA (VB6)を作った人は、相当優秀やな

昔、VB6 でフリーウェア作ったり、楽しかったわ…
2022/01/29(土) 07:43:57.70ID:p3H2eYK50
>>746
まあ、コードがわからん人(わからん人が使えるとは言ってない)向けだからな。
会社で色々ガチガチに制限されてるけど、そこだけはオッケーとかだったら使うしかないじゃない?そういう人向けだと思うよ。

Power Automateはまだサーバーが勝手に動いてくれるからマシだけど、Desktopはホント用途がわからん。
2022/01/29(土) 07:56:58.17ID:u7cBLx/b0
他言語のプログラマーからは下に見られるVBA
なぜ差別される?
2022/01/29(土) 08:31:49.58ID:vQXkhP0VM
中途半端に自分の知識を誇示して周囲を見下すやつが多いから
職場や上司を叩いて自己満足に浸るレスがこのスレでも目立つ
2022/01/29(土) 08:56:48.05ID:mMYfjebB0
起動しているedgeやIEで開いているページから文字を取り出したいのですがどうしたらいいでしょうか?

もしくは起動しているページからワンクリックで文字を取り出しExcelに貼り付ける様な方法はありますか?
2022/01/29(土) 09:01:58.47ID:p3H2eYK50
RPAみたいに世間の認知も高いわけじゃない、
プログラムほど難しいことやってるように見えない、
そのくせ仕事は手抜きしてるように見える、
聞いてもよく分からないことしか言わない、

知らない人からみたらこんな感じだからじゃない?
2022/01/29(土) 09:41:15.24ID:D0pOsND50
>>751
理由は色々あると思う。
名前がVisual Basic for Applications というくらいEXCELとかACCESSとかのMicrosoft Officeに特化していて
実際のシステムを構築するのには不向きであること。

間口が広いので初心者向きでもあり、それが逆にどんな人でもちょっと勉強すれば組めてしまうイメージがあること。

フレームワークの知識が皆無でも普通に組めてしまうこと。

VB.Netですら消えかかってるこの時代にあまりに旧態依然とした言語であること。

ちょろっと何かを組むには非常に良い言語なんだけどね。俺もVBAでシステム組めって言われたら「え・・・」ってなると思う。
2022/01/29(土) 09:47:43.70ID:UwALgNeL0
そもそもVB自体が下に見られているからじゃないかな
知らんけど
2022/01/29(土) 09:54:07.85ID:OyQV2dPc0
>751
覚える事が信じられないぐらい少なく、誰でも使えるから
変数とif、for辺り知ってればほとんどの場合に対応できる
若干とっつきにくいのがset程度
更に相当テキトーに書いても他へ影響し辛い

どれも実務上は長所だけど、
他の言語を知ってると「なにこれ?」ってなるのはわかる。なんというかおもちゃっぽい
2022/01/29(土) 10:17:37.26ID:M8ea68f50
>>745
自分の環境だと、普通のフィルタをかけた状態ならそれで拾えるけど、フィルタのソートを行った状態は拾えないので、やりたくないけどどうしてもやるなら列のデータをなめるしかないのかなと

>>751
元々、Visual Basic自体がBASICという、学校でプログラミングの導入として教えるような簡易なプログラミング言語から派生したものだから、他の言語より低く見られていた
更にそこから派生したVBA(マクロ)やVBS(スクリプト)なんかはより低く見られている
まぁ実際に、図体の重たいプログラムでは手が届きにくい部分を補完する孫の手的な使い方をするのが主流なので、穴埋めや間に合わせ的な位置付けに見られているからだと思う
2022/01/29(土) 11:04:25.26ID:1pI7yMTXM
>>758
ソートは一時的な状態じゃないから完全に拾えるわけじゃないけど
ListObjects(...).AutoFilter.Filters(...).Sort
見たらわかるんじゃないの?
2022/01/29(土) 11:05:21.11ID:bDLL2+/00
>>751
差別しているのは Ruby厨だから無視していいんじゃね
そもそも言語に上下なんかないし
2022/01/29(土) 11:13:37.04ID:M50L9SrL0
>>757
> 他の言語を知ってると「なにこれ?」ってなるのはわかる。なんというかおもちゃっぽい

なんとなく納得できる表現だな。
C・C++・C#・JAVA・Rustとかの、かちっとしたのが当然だと思ってると面食らう。

特に Variant。まあ、最近はコンパイラ系に逆輸入されてるけど。
2022/01/29(土) 11:15:31.30ID:M50L9SrL0
あ。馬鹿にしてるわけではないよ。便利だと思う。

ただ、コンストラクタ引数と継承は入れてほしかった。
2022/01/29(土) 11:28:56.70ID:tQGwfe1Lr
VBAが言語として下に見られてるのかは知らんが書いてるやつの水準は他言語より圧倒的に下だよ
変数の型指定しない、withつかわない、まとめられる処理をまとめずにコピペし大量のモジュールを作る、配列とか使わないでセルを一回一回読み書き
こんなコードが会社のエクセルにはたくさんある
そしてそれが神マクロと崇め奉られてるのホントゴミ
2022/01/29(土) 11:44:30.01ID:PUyOyrFtM
>>761
> 特に Variant。まあ、最近はコンパイラ系に逆輸入されてるけど。
void * とか昔からあるけど?
2022/01/29(土) 12:02:30.08ID:ZRWUeJUN0
結果がすべて
仕事を終わらせたやつが評価されるんであって、どんな方法を使ったか、きれいに書いたかどうかなんて普通は問われない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況