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
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
結果がすべて
仕事を終わらせたやつが評価されるんであって、どんな方法を使ったか、きれいに書いたかどうかなんて普通は問われない
2022/01/29(土) 12:10:51.21ID:L/C5gyxS0
>>765
俺もそっちだわ
仕様として許容されているなら使う人が目的達成できればどうでもいいんよ
まぁリファクタリングしろと言われたら発狂するが
767デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/01/29(土) 12:12:26.42ID:nI5CwbIZ0
何かを見下したい、マウントを取りたいのは、
愚か者の本能であって、理由は後付け。

VBA がハイコストパフォーマンスで
ある程度のシステムを構築できてしまう
便利なツールであることには変わりない。

頭の悪い人間ほど、意味のない格付けをしたがる。
768デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/01/29(土) 12:22:38.03ID:nI5CwbIZ0
Windows環境で、
なんらかの要件を実現する方法の選定として
導入コストを考えたら、DOSバッチでも
PowerShellでも、JavaScriptでも、WSHでも
既存のリソースのみで実現できる方が良いに決まってる。

特に日本人の思考は、合理性を軽視して、見てくれや
くだらない感情で判断することが多いので、
開発のプロジェクトでも時間とカネのコスト管理ができてない
愚かな企業が多い。
2022/01/29(土) 12:23:55.26ID:hiZAoffAM
>>765
そういう書き捨ての仕事もあるし、連綿と続く仕事もある
2022/01/29(土) 12:27:08.84ID:nI5CwbIZ0
結果として、他国からバカにされてる
日本の生産性の低さに繋がっている

あらゆる分野で、開発スピードは、
圧倒的に米欧・中華が優っている
771デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/01/29(土) 12:29:20.03ID:iTemfgLK0
>>768
例の馬鹿か
2022/01/29(土) 12:34:16.18ID:Q0NPbY74r
>>765
書き捨てではなく日々の定型業務につかわれ
それらが前提になって業務フローが組まれてるから
保守が必要なんだよなあ…
なお制作者と仕様書、コメントはない
2022/01/29(土) 12:43:35.90ID:28WRDRfRr
まあ正直、要件定義〜設計までの上流工程の人間からすると
言語は何でも良いんだけどね。

こだわるのはコーディングフェーズ以下の下流エンジニアであって。
2022/01/29(土) 14:49:20.34ID:u7cBLx/b0
関数が得意な人はなんでも関数で片付ける、マクロが得意な人はなんでもマクロでやろうとする傾向があると田中氏が言っていたな講演会で。
バランス良く使える人こそ真のエキスパートだとも。
2022/01/29(土) 15:14:16.94ID:YNpwCmNLM
>>774
そうなんか
確かに関数使うのって電卓がわりにするか文字の置き換えくらいかも
2022/01/29(土) 15:41:11.14ID:D/yb4xS+0
指定した範囲にそれぞれ外枠線を引きたいのですが、量が多くなると時間がかかるのでUnionを使いたいのですが、

Dim rng As Range, i As Long

Set rng = Range("B2:B3")
Set rng = Union(rng, Range("C2:C3"))

For i = 4 To 50 Step 2
Set rng = Union(rng, Range("B" & i & ":B" & i + 1))
Set rng = Union(rng, Range("C" & i & ":C" & i + 1))
Next i

rng.BorderAround Weight:=xlThin

だと、Range("B2:C51").BorderAround Weight:=xlThin と同じになってしまいます。
短い時間で、それぞれの範囲に外枠線を引く方法を教えてください
2022/01/29(土) 15:45:53.96ID:W/oxWoyf0
>>753
https://www.google.co.jp/search?q=vba+%E3%82%BD%E3%83%BC%E3%82%B9%E5%8F%96%E5%BE%97
2022/01/29(土) 15:52:44.84ID:MAc7BERw0
>>761
JavaでもObjectになんでも突っ込めるじゃん
2022/01/29(土) 16:14:17.19ID:u7cBLx/b0
マクロ書くより手作業でやった方が早いのにわざわざマクロでやる人ばかりとも言っていたな。
なるほどなと納得する講演会だったね。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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