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/21(金) 05:15:31.24ID:XETJK2Tn0
派遣て確か専門職だからめちゃめちゃ稼げると聞いたけど、どうなの??
那須は出ないとは聞いたけど時給はめっちゃ高いと聞いたものでして。
514デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/21(金) 07:53:02.69ID:U4E8wi5/0
>>513
1500-2000円ぐらいだったかな。ただもう募集自体がほとんどない。
ほぼ全てローカル環境での作業のため、リモートも出来ない

>>512
下がる
2022/01/21(金) 08:07:59.20ID:XETJK2Tn0
へえ、1500から2000円ねそうなんだ。
自分田舎住みだからその時給はかなり水準高いわ。
こっちなんてどんだけExcelの技術あっても良くて時給1200円前後。
マクロ書ける人材は貴重だからもっと給料上げるべきだと思う。
516デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/21(金) 08:29:03.61ID:U4E8wi5/0
企業常駐型だから、基本かなり居づらいし
VBAでゴリゴリの開発や保守なんて絶対にやらんほうがいいわ
2022/01/21(金) 08:45:23.59ID:XETJK2Tn0
あ、常駐型SEを思い出した。
給料はもっと貰うべき。
2022/01/21(金) 08:51:43.72ID:k97g2FVL0
適正が有るだけで大した労力使わないのに給料は高いんだよ
楽だよな
2022/01/21(金) 09:29:31.93ID:KSflUQH80
ExcelでEnumChildWindowsを使って他アプリの子ウィンドを取得するプログラムをテストしています。
と言っても知識がないのでネットからソースをコピーしてテストしているレベルです。
EnumChildWindowsの引数でコールバック関数をしているのですが、コールバック関数を実行した時に順調に
実行される時とEnumChildWindowsを実行した途端Excelが終了する時があります。
何かよくあるミスとかあれば教えてください。
APIの宣言、コールバック関数は標準モジュール、その他はシートモジュールに書いています。
プログラムを張り付けて良いか分からないので張り付けていませんが良いならご指示ください。
よろしくお願いします。
520デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/21(金) 09:44:43.07ID:U4E8wi5/0
>>519
コードは貼ってくれ
2022/01/21(金) 11:25:52.95ID:KSflUQH80
519です。
長すぎると怒られるのでいくつかに分けます。
よろしくお願いします。

Sheet1モジュール

'///GetWindowの定数///
Const GW_HWNDFIRST = 0 '基準となるWindowと同じ種類のうち最前面のWindow
Const GW_HWNDLAST = 1 '基準となるWindowと同じ種類のうち最背面のWindow
Const GW_HWNDNEXT = 2 '基準となるWindowの次のWindow
Const GW_HWNDPREV = 3 '基準となるWindowの前のWindow
Const GW_OWNER = 4  '基準となるWindowのオーナーWindow
Const GW_CHILD = 5    '基準となるWindowの子WindowのうちトップレベルのWindow
Dim myHwnd As LongPtr  '検索ボタンのハンドルを記憶

Sub Test1()
'アプリhogeの検索ボタンを探す
Dim Ret As LongPtr
Dim hwnd As LongPtr

hwnd = FindWindow(vbNullString, "hoge") 'トップウィンド
hwnd = FindWindowEx(hwnd, 0, vbNullString, "hoge_1")'検索ボタンが所属している子ウィンド

Ret = EnumChildWindows(hwnd, AddressOf EnumChildProc, 0)
myHwnd = GetWindow(myHwnd, GW_HWNDPREV)
End Sub
2022/01/21(金) 11:29:13.91ID:KSflUQH80
標準モジュール

Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWndParent As LongPtr, ByVal hwndChildAfter As LongPtr, ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Declare PtrSafe Function EnumChildWindows Lib "user32" (ByVal hwnd As LongPtr, ByVal callBackProc As LongPtr, ByRef lParam As LongPtr) As LongPtr
Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As String, ByVal cch As LongPtr) As LongPtr
Declare PtrSafe Function GetWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal wCmd As LongPtr) As LongPtr
2022/01/21(金) 11:35:16.64ID:KSflUQH80
標準モジュールの続きです。

Public Function EnumChildProc(ByVal hwnd As Long) As Long
Dim Ret As LongPtr
Dim Leng As LongPtr
Dim Name As String * 255
2022/01/21(金) 11:39:21.83ID:KSflUQH80
書込みができないようで中途半端なところで切れてしまいすみません。
残り数行なのですがもう少し後で投稿します。
よろしくお願いします。
2022/01/21(金) 12:02:38.78ID:Pj4yIAd6M
>>524
長くなる時はコードをシェアできるサービス使って
https://collabedit.com/3dgh5
526デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 12:24:55.64ID:R2BsGPNsa
標準モジュールからユーザーフォームを呼び出して、そこで入力された値を持ってきて処理したいです

試しにシンプルにこんな感じでやっても駄目なんですが、どうすればいいでしょうか?


標準モジュール
Option Explicit
Public ret As Boolean
Sub test()
Dim ret As Boolean: ret = False
UserForm1.Show
MsgBox ret
End Sub

ユーザーフォーム
Private Sub CommandButton1.Click()
Dim ret As Boolean
ret = True
Unload Me
End Sub


これでtestを実行すると、メッセージボックスにFalseが表示されます
ユーザーフォームが出てきてボタンをクリックしたら、Trueをメッセージボックスに表示するようにしたいです
2022/01/21(金) 12:37:47.66ID:KSflUQH80
>>525
指示してもらったことろへ貼り付けました。
よろしくお願いします。
2022/01/21(金) 12:39:51.71ID:aZlF8gD40
>>526
標準モジュール
Option Explicit
Public ret As Boolean
Sub test()
  ret = False
  UserForm1.Show
  MsgBox ret
End Sub

ユーザーフォーム
Private Sub CommandButton1.Click()
  ret = True
End Sub
529デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 12:47:38.25ID:R2BsGPNsa
>>528
Dimを抜くと、変数が定義されていませんと出てしまうんです
Option Explicitを入れなければ通りますが、やはりTrueは返ってこないでFalseになります
530デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/21(金) 14:13:07.69ID:U4E8wi5/0
>>519
多分引数が間違っている。ノートパッドを起動して以下を試して、
返り値の違いを確かめてみて。
修正前は0が返ってるけど、修正後はポインタか参照が返ってるはず

hwnd = FindWindow(vbNullString, "hoge") 'トップウィンド

hwnd = FindWindow("notepad", vbNullString) 'トップウィンド

後は、検索ボックスがどうこう書いてるけど、そういうプログラムを持ってないから検証できないわ
2022/01/21(金) 14:50:07.67ID:RFcu/rPfd
>>526>>529
ユーザーフォーム側で「Dim ret As Boolean」を宣言するとスコープの近い変数に格納されてしまうから不要
自分も同じようなコードをかいたがなくても正しくretにTrueが入る
(「CommandButton1.Click」は構文エラーになると思うが「CommandButton1_Click」だよね)
変数がどうとかいわれるならそもそも変数がpublicでないか参照している変数名がまちがってるとかないか?
2022/01/21(金) 14:57:28.11ID:aZlF8gD40
>>529
528は、ちゃんと動作確認してから貼ったんだけど
コード書く場所間違ってない?
https://i.imgur.com/76hGtGx.png
2022/01/21(金) 15:01:17.70ID:RFcu/rPfd
>>532
細かくてすまんが
CommandButton1_Clickの代入先って最初大文字にしても勝手に小文字にならない?
534デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 15:11:34.91ID:R2BsGPNsa
>>531
何回も確認してるんですが、間違ってないんですよね・・・
CommandButton1.Clickも、>>526で間違えただけです
>>528で書いていただいたものをそっくりそのまま書いてるんですが、retにTrueが入ってくれないです
環境はエクセル2010のwin7です
535デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 15:17:23.81ID:R2BsGPNsa
>>532
新しい標準モジュールにtestだけ書いたらできました
何かが干渉してるってことなんでしょうか
2022/01/21(金) 15:22:29.45ID:RFcu/rPfd
自分はWin10(20H2)+Excel2013とWin10(21H1)+Office365(サブスクリプション版)の2つで試したけど
どちらもTrueになるね

ちなみに「ret = True」のretをマウスクリックして右クリックのメニューに出てくる「定義」を選択するとどこにジャンプする?
自分はpublic変数にとぶんだが
2022/01/21(金) 15:24:18.40ID:aZlF8gD40
>>534
まさかイベントプロシージャの宣言部を自分で入力かコピペしてない?
フォームデザイナーでコマンドボタンをダブルクリックすると空のプロシージャが自動生成されるんだよ

あと、試したのはWin10 Excel2021 64bitだけど、この部分の仕様はずっと変わってないはず

>>533
悪いけど指摘の意味がよくわからん
スクショの通り、これでちゃんと動いてるんで
さらに細かいことを言うとCommandButton1_ClickじゃなくてCommandButton1.Clickね
2022/01/21(金) 15:30:59.33ID:aZlF8gD40
>>529
Dimを外すとエラーが出るってことは、どこかで今回の件とは関係ない別の何かをタイプミスしてる
Option Explicitをコメントアウトした状態でステップ実行するとローカルウィンドウに使用中の変数の一覧が出るから、よーく見直せ
539デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 15:46:49.49ID:R2BsGPNsa
>>537
フォームデザイナー使ってます

>>536
Publicに飛びます
2022/01/21(金) 16:13:39.82ID:RFcu/rPfd
>>537
コントロールとイベントの接続文字はアンダーバーじゃない?
ピリオドで構文エラーになるけどならない場合もあるの?

>>539の作ってるサンプルは>>528通りなの?
自分のサンプルはこんな感じで作ったけど
1.新規ブック作成
2.開発メニューからエディター起動
3.プロジェクトツリーで新規フォーム作成
3.1.コマンドボタン追加
3.2.コマンドボタンダブルクリック
3.3.CommandButton1_Clickに「ret = True」を記述
結果ユーザーフォーム内のコードは下記の状態になる
Option Explicit
Private Sub CommandButton1_Click()
ret = True
End Sub
4.標準モジュール作成
4.1.下記のコードを貼り付け
Option Explicit
Public ret As Boolean
Sub test()
ret = False
UserForm1.Show
MsgBox ret
End Sub
5.test内をクリックしてF5押下で実行
2022/01/21(金) 16:23:57.05ID:IxcxpS5S0
ユーザーフォーム閉じるまでメッセージボックスまで行かないわけか
いつもモードレスだから気づかんかった
542デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 16:24:33.06ID:R2BsGPNsa
>>540
新規ブックで一からやったらできました
組み込みたい既存のブックでやろうとしたところ、Public retに入らない感じでしたが、新しい標準モジュールを作ってやったらできました
なので、最初に書いた先の標準モジュールが原因っぽいんですが、それが何か分からない状態です
上手く動いたコードをそのまま一番上に持ってきているんですが、エラーは出ずに実行されるもPublic retにTrueが入らずにFalseになります
543デフォルトの名無しさん (ワンミングク MM52-/2yr)
垢版 |
2022/01/21(金) 16:40:12.64ID:1Ed+zt1pM
理屈もわからずあちこちからコピペコピペとやってる奴によくある
そろそろ消えろや
2022/01/21(金) 16:45:47.13ID:uPLc80ynd
ファイルもみてないからなんともいえないけどボタンに紐づけたイベントは正しく実行されるの?
ret = Trueの行でF9おすとブレークポイント設定されるからそこで止まるかたしかめたら?
それで止まったなら1行ステップ進めてretに何が入ってるか確認したほうがいいよ
モノづくりするときは1つずつつぶしていくのが大事よ
2022/01/21(金) 19:18:17.67ID:vzv4Kcp20
標準モジュールじゃなくてThisWorkbookに書いてる予感
2022/01/21(金) 19:27:54.79ID:7hLshO/z0
インターネットのブラウザ IEとかedgeとかで任意のページを開いてそこから日付とか番号とか特定の決まった箇所にある文字や数字をWordの特定の場所にコピー、挿入する方法はありますか?
できればボタンひとつでできるようになりたいです
2022/01/21(金) 19:45:58.42ID:uPLc80ynd
あります。
「vba スクレイピング」「vba word 操作」でぐぐればいくらでもサンプル出てくると思うから好きなのえらぼう
548デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
垢版 |
2022/01/21(金) 22:29:10.29ID:NFZs9l3R0
>>546
Ruby馬鹿だろ
549デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
垢版 |
2022/01/21(金) 22:34:52.59ID:nlcE6d040
整然としてねえコーディングだな。

頭の中身が現れてるわ。
2022/01/21(金) 22:37:38.53ID:nlcE6d040
>>546

VBSか、JavaScript の方が
早いかもしれん。
2022/01/22(土) 00:26:58.95ID:XmCgkfSL0
コピペプログラマー
2022/01/22(土) 00:35:52.61ID:9zfa7ona0
>>547
vbaでのスクレイピングは懲りた
標準だとIEしか使えないんだもん
2022/01/22(土) 01:04:10.75ID:NynwR7VqM
>>552
どの言語でも外部ライブラリは必要
2022/01/22(土) 08:00:34.93ID:HGIIomOF0
他社製のweb受注システムから社内の生産管理システムに流し込むときにやったな
CSVダウンロードくらい用意しろってんだ
2022/01/22(土) 08:21:46.11ID:R1iyPI8Z0
>>550
同意
どうせ深くWeb系を扱うのであればJavascriptは必須になってくるから勉強するに越したことはないと思うよ。
VBSもVBAの知識があれば何とかなる・・・多分。
IISの知識があればそれでクラシックASPの出来上がりですよ。
本格的にやるならASP.NetだけどObject指向の概念が分かっていないとVBAからだとVB.Netでも少し敷居が高いかも。

どうせWeb版のEXCELとか弄るときはJavascriptだし、今の内に慣れておいた方がいいと思う。
556デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/22(土) 08:34:08.56ID:DLYfLGcJ0
>>554
同じく
csvDL自体がないってのはさすがに見たことないけど、
DLに項目が不足してる時はスクレイピングで抜いてるな
557デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/22(土) 08:36:01.91ID:DLYfLGcJ0
chromeの拡張機能でスクレイピングするのが最も安心安全
サーバーからすれば一番ユーザーに近い
IEは対応してないどころかもうすぐなくなる。

そういやvbaのブラウザはどうなるんだろ?
2022/01/22(土) 10:08:57.53ID:r24PNXTk0
for i= 1 to 100 step 1
#If conEnv = 1 Then
 ans = d1 * d2
#Else
 ans = d1 / d2
#End If
Next i

こんな感じに条件付きコンパイルをしてる場合、
ループ毎にIF判定してるんですか?
559デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/22(土) 10:56:45.31ID:DLYfLGcJ0
>>558
しない
条件つきコンパイルってのは、実行前にコードを書き換えるようなものと思って良い。実行後は消えて無くなると思って良い。
>>558は、以下と同等に解釈される

Sub foo()
For i = 1 To 100 Step 1
conEnv = 1
ans = d1 + d2
Next i
End Sub

ちなみにこれも上記と同じ。 ans = d1 * d2 は実行されない
for i= 1 to 100 step 1
conEnv = 1
#If conEnv = 1 Then
 ans = d1 * d2
#Else
 ans = d1 / d2
#End If
Next i

分岐させたいならこう
for i= 1 to 100 step 1
#conEnv = 1
#If conEnv = 1 Then
 ans = d1 * d2
#Else
 ans = d1 / d2
#End If
Next i
560デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/22(土) 11:00:33.05ID:DLYfLGcJ0
あと、下手に条件つきコンパイルは本当にやめたほうがいい。絶対にややこしくなる
唯一使える最適な場面は、コンパイル時にエラーが起こる可能性がある箇所。
パッと思いつくのは、バージョン違いへの対応程度

テスト環境の切り替え〜という人もいるけど、関数でどうこうするのと変わらん
2022/01/22(土) 12:09:48.37ID:r24PNXTk0
>>559
ありがとうございます
質問の後で気付いてやってみたステップ実行でも
ループ毎にIF判定やってませんでした
2022/01/22(土) 12:12:56.15ID:Zx7T2GTSM
>>557
フォームに貼り付けるブラウザコントロールが標準で入ってるから、これは簡単には廃止できない
アプリは消えてもオブジェクトは残り続ける
2022/01/22(土) 12:58:31.26ID:2RwNzJk50
.netだとWebView2が使えて便利なんだけど実装されないかな
ついでにコントロールのスクロールをマウスでできるようにして欲しい
564デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
垢版 |
2022/01/22(土) 13:04:36.26ID:6LO0uF920
ID:DLYfLGcJ0

こいついつもの馬鹿か
565デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/22(土) 13:13:07.59ID:DLYfLGcJ0
笑w
2022/01/22(土) 13:50:16.42ID:RiKtYPqw0
頭痛が痛い
2022/01/22(土) 19:51:56.45ID:NrxysVpy0
バファリン飲め
2022/01/22(土) 22:48:31.49ID:XmCgkfSL0
頼んでもないのに長々と知識披露してくる人ってなんなんだろうね?
569デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/22(土) 23:15:30.08ID:DLYfLGcJ0
知識の共有だろ
俺は好きだから長文どんどん書いていいぞ
歴史的経緯とかがあると尚グッド
570デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/23(日) 00:04:39.53ID:MiYFwUbv0
>>569
馬鹿が嘘を書くなよ
571デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/23(日) 00:35:00.90ID:HSIItn8m0
めっちゃ怒ってて草w
2022/01/23(日) 00:38:42.06ID:sfiZCcaw0
>>569
TK80から語り出すがいいのか?
573デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/23(日) 00:41:37.63ID:HSIItn8m0
>>572
そこまで遡るとさすがにエクセル関係なくなるような
俺はいいけど、他の人には迷惑だと思うぞ
2022/01/23(日) 13:50:31.72ID:SdYMRJnE0
今時5chの専門版に張り付いてる異常者なんて現実じゃ誰にも相手にされない教えたがりおじさんぐらいしか居ないんだから
その辺弁えてもっと敬意持って質問しろよ
575デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/23(日) 18:52:30.22ID:HSIItn8m0
条件付きコンパイルで、OSのバージョン違い以外の使い方ってありますか?
2022/01/23(日) 19:43:03.21ID:2ddsSarEM
>>575
Excelのバージョン違い
独自にデバッグモードなどを設定している場合

逆に、OSのバージョンによって作り分けるケースってそんなにないと思うなあ
577デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/23(日) 23:04:13.46ID:HSIItn8m0
ようやっと終わる

米Microsoftは1月19日(現地時間)、「Excel 4.0」(XLM)マクロを予定通りデフォルト無効化したと発表した。「Excel 4.0」マクロの利用を制限するオプションは昨年7
https://news.yahoo.co.jp/articles/8e4dd5e97b3b094d0d98e692b48e65864848136c
578デフォルトの名無しさん (アウアウウー Sa4b-ZIwK)
垢版 |
2022/01/24(月) 10:20:53.44ID:7Kajjflda
>>575
好きに使えばいいと思う
579デフォルトの名無しさん (ワッチョイ 275f-8IZx)
垢版 |
2022/01/24(月) 10:34:32.16ID:0XRM59Ri0
ClassモジュールとFunction と
多次元配列を使いまくると
優秀に見られるよ。
2022/01/24(月) 11:54:29.81ID:5FJvHF790
引き継いだ人が困るわ
581デフォルトの名無しさん (アウアウウー Sa4b-ZIwK)
垢版 |
2022/01/24(月) 12:20:26.60ID:0SZZxpxwa
コメント残せ
2022/01/24(月) 13:00:01.29ID:5FJvHF790
コメント残したけど、後任の者がそもそもマクロの知識がないパターンがあったよ
その内に部署でマクロ禁止令が入ったよ
2022/01/24(月) 13:33:12.64ID:iw4K3rH6d
程度にもよるけどVBAのマクロ程度で禁止とかかなしいね
2022/01/24(月) 17:18:50.82ID:j9lgzOiA0
Webやhtmlのメールも危険だから禁止かな
2022/01/24(月) 17:21:37.60ID:WNHxRwF80
普通の事務員にメンテできるようなもの残せと言われればそうするしかない
2022/01/24(月) 17:27:47.92ID:xAZorvxa0
1セルの中に長大な式を書くようにならないかそれ。
2022/01/24(月) 18:12:53.56ID:JIfRBOPe0
パソコンの苦手な人材が来てもいいように、みんな紙と電卓でやればいいんじゃない?
2022/01/24(月) 19:32:09.39ID:QSZRM/el0
パソコン苦手な人にエクセル触らせんなよ
2022/01/24(月) 20:07:49.12ID:JR1WCq5+d
メインモジュールには処理の流れだけ書いて後はCall Function Classから引っ張れって言う風潮があるのがイマイチ理解出来ない。あと出来るだけ変数に入れて処理しろって言う風潮も。

人に引き継ぐ時に初見で見たこともない変数名や関数名を解読させたりいちいち流れをぶった斬ってあちこちプロシージャ間を行ったり来たりさせるのが本当に可読性を上げることに繋がんのか?
2022/01/24(月) 20:23:59.31ID:E1L8nOD4M
規模の大きなプログラミングをするなら重要
でもVBAで規模の大きなプログラミングをする時点で間違っているのでそんなことはしなくていい
591デフォルトの名無しさん (ラクッペペ MM8f-DS0X)
垢版 |
2022/01/24(月) 20:25:55.48ID:iJSI2wDaM
は?
変数なんか使わずに Range("A1") を直接使ってるよ
分かりやすいからね
2022/01/24(月) 20:47:26.58ID:xAZorvxa0
>>589
「グローバル変数」とか「構造化プログラミング」とか「オブジェクト指向」とかググってみればいいかも。

「関数型プログラミング」までは行かなくてもいいと思うけどw
2022/01/24(月) 21:02:33.82ID:JIfRBOPe0
そりゃ読む人による
知識と経験がある人にとってはセオリー通りに書かれてる方が読みやすい
594Mickey (オッペケ Sr7b-8IZx)
垢版 |
2022/01/24(月) 21:25:54.13ID:HmIH0Tmsr
Excel は使う人によっては、ただの表計算ソフトでしかないし、

優秀なプログラマーが、VBAを駆使すれば、大規模なデータベースのフロントエンドや
ActiveDirectory等、インフラ管理のツールにもなる。

Windows環境でなら、Excelがあれば、ほぼできない事は無いかと。
Accessなら、なおさらのこと。
2022/01/24(月) 21:31:57.98ID:w+KnMuAHM
>>592
VBA でオブジェクト指向は要らんやろ
2022/01/24(月) 21:32:13.51ID:9LuFH7rJ0
シート参照難しいんですが…

フルパス必要な時とそうでないときのかき分けがさっぱりです
597デフォルトの名無しさん (オッペケ Sr7b-8IZx)
垢版 |
2022/01/24(月) 21:33:33.84ID:HmIH0Tmsr
弘法筆を選ばず と言うが、
無能なプログラマに限って
プログラミング言語にこだわったり
たかが、Excelマグロだろ?w
などと見下す。

もっとも安価に、いろんなシステムを組める
至極優秀なツールだよ。Excelは。


まあ、俺なら開発環境なんて、
メモ帳だけで十分だけどね。
2022/01/24(月) 21:34:37.02ID:hdMr3QU+0
わかんなかったら覚えろよ勉強しろよ 努力無しで成果が出るとでも思ってんのか?
工場の現場で加工機のプログラムわかんないから手動で加工していいか?ってダダこねてるのと一緒だぞ
だいたいこんくらいでいいか なんてぇ精度で製品造るつもりか?1/1000精度求められる加工で?
それを認める上司も上司だ 一歩でも前に進む気概が無いから他の国に後れを取るってぇことにはよ気付け
2022/01/24(月) 21:36:18.43ID:HmIH0Tmsr
>>595

ん?
VBA自体がオブジェクト指向言語だけどね。

まぁ、ここのあたりは、不毛な宗教論争になるので
ここまでとするが。
600デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/24(月) 21:39:41.61ID:0uV4r5KA0
workbookという巨大なオブジェクトがあるじゃろ
601デフォルトの名無しさん (オッペケ Sr7b-8IZx)
垢版 |
2022/01/24(月) 21:43:12.08ID:HmIH0Tmsr
WorkBook、正直邪魔だよね。

少人数の給料計算くらいなら良いけど

大量のデータ管理には重くて使えないし。
602デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/24(月) 21:51:17.38ID:aObfNlgq0
>>601
馬鹿にはわからん使い方があるのだろ
2022/01/24(月) 22:27:03.42ID:0XRM59Ri0
そういえば初心者の頃は、配列とか定数変数の代わりに
WorkBook を使ったりしてたな。
これはデメリットだらけ。
2022/01/24(月) 22:46:11.44ID:5FJvHF790
マクロ禁止になった理由はいろいろあるけど、一番は属人化になるからという理由でしたわ。
関数も長々とした入れ子はダメというローカルルールできた。
605デフォルトの名無しさん (ワッチョイ 275f-8IZx)
垢版 |
2022/01/24(月) 22:53:36.30ID:0XRM59Ri0
職場を無能だけで構成しようとすれば
そうせざるを得ない

そこが欧米企業と旧日本型企業との違い
2022/01/24(月) 22:58:12.91ID:0XRM59Ri0
セルに五重くらいのIF,OR文の関数を入れて
悦に浸ってるオッサン居たけど
アホにしか見えんかったわ
2022/01/24(月) 23:00:41.29ID:5FJvHF790
あと、上席が言うには「うちはVBAを書くのが仕事じゃないんだから、そればっかにとらわれて本来の業務を疎かにしないでくれ」と。
2022/01/24(月) 23:09:57.20ID:0XRM59Ri0
出たw
大多数の日本企業の実態がソレ。

業務効率化という
意識が30年遅れてます、とね…

VBAは隠れてやった方がええよ。
2022/01/24(月) 23:10:32.49ID:0XRM59Ri0
アテクシなんざ
手作業で、一日かかる作業
(大量のドキュメント作成)を
マクロで1時間で終わらせて
残りの時間はVBAで遊んでましたぜ。

Word VBAも出来ると素敵だよ。
2022/01/24(月) 23:32:47.93ID:j9lgzOiA0
>>589
自己流だけどメインルーチンはあらすじ、グローバル変数は登場人物みたいな感じで使ってるわ
フォームやシートに書くコードはイベントハンドラくらいで、ちょっとでも長ければ似た名前のモジュール(Form1bみたいな)の中に
コントロールごとに分類して関数なりなんなりを作ってそれを呼んでる

複数のフォームで使い回せるものは複数のフォーム名が入ったモジュールを作って入れてる
プロシージャ名はフォーム名_コントロール名(略せれば略)_処理名で統一してる

グローバル変数もPbという名前の専用のモジュールに突っ込んでる
登場人物一覧みたいな感じで参照ができる

多分これでだいぶ解りやすくなると思うんだが……
VBAもxmlコメントが使えれば解りやすいんだけどな
2022/01/24(月) 23:42:30.31ID:veuEuZMi0
VBAなんて自分の作業効率化するときだけにしとき
他人に使わせて良い事無い
612デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/24(月) 23:43:46.42ID:0uV4r5KA0
>>607
最初の一回だけ構築すれば、後は全自動・ミスなしの瞬殺なのにねぇ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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