[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/16 07:47 / Filesize : 287 KB / Number-of Response : 1010
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part74



1 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 01:40:59.22 ID:jnlr9GaR0.net]
!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

477 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 13:46:34.45 ID:BPf7HX0l0.net]
1ファイル45個のクエリーを含む同様のファイルが
13地点×6ヶ年分=78個あって、
これをシーケンシャルに1つずつ、For Nextで更新するよう組んだ。

最初の2ヶ月目くらいまでは7時間くらいで更新出来てたが、
3ヶ月目以降は毎回どこかの、
 Set tblQ = ThisWorkbook.Worksheets(ws).ListObjects(q)
と、ワークシート名とクエリー名を変数に代入するところでコケる・・・

その都度、コードを削除していったん保存、
再度貼り付けてデバッグし続行させる
沼にはまった。

478 名前:デフォルトの名無しさん [2022/01/20(木) 13:49:08.24 ID:aoz8cIff0.net]
>>474
そういう時は、ファイル保存を挟むと良い
エクセルは立ち上げっぱなしだと、どんどんテンポラリファイルが巨大化する
保存すると、それが一旦整理される

479 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 13:57:12.27 ID:BPf7HX0l0.net]
>>475
アドバイス、ありがとう。

一応、開く78個のファイルは1個ずつ保存して閉じているけど、
大元のVBAを持つbookをその都度保存せよ
ということかしら?

そういや、プロジェクトエクスプローラーに
既に処理が終わって閉じたbookのファイル名が残って
どんどん増えて行ったような・・・

こっちは1ファイル処理後ごとに上書き保存とかの処理は入れてなかった。

480 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 13:57:52.65 ID:HwD0Q83s0.net]
なんで全部Excelでやろうとするかね ボリューム見て将来鑑みて、どっかの時点で「これはパンクする」
ってぇ判断をしなかったツケだろ 経費抑制? むしろ無駄な経費が膨大に掛かってるのには目を瞑るんだ へー

481 名前:デフォルトの名無しさん [2022/01/20(木) 14:17:24.56 ID:gV+Fwxtn0.net]
>>474
変数は毎処理ごとに開放してる?

482 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 14:28:11.68 ID:mCK9tQrM0.net]
>>477
本人はやれる中で頑張ってるんだと思う、きっと
でも確かにそれはAccessのほうがってことはあるよね
VBAできる人なら覚えるのも簡単だと思うし

483 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 14:32:45.01 ID:bfB7zVPYM.net]
kintoneとかでいいでしょ

484 名前:デフォルトの名無しさん [2022/01/20(木) 14:40:11.29 ID:aoz8cIff0.net]
>>476
>一応、開く78個のファイルは1個ずつ保存して閉じているけど、
もし、
set foo = workbook.open~~~)
みたいにしてたら、最後に
set foo = nothing
を挟まないと、ずっとメモリ残り続けることになると思う。>478さんの指摘がこれ

>大元のVBAを持つbookをその都度保存せよ
これはかなりオススメ。
コードの内容がわかって無くても、エクセルファイルを保存すると大体うまくいく
※保存時に色々とうまくやってくれてるっぽい

>>477
それ言い出すと全企業が大企業並の設備を整える必要がある
ある程度拡張性を備えた上で、「5年後は別システムに移行しているだろう」のような判断ができればいいね
基本、要素(営業や取引先)がドカドカ増えないなあ、システムは特に移行しなくていいと思う。
多少使いにくくても、ノウハウが切り捨てられる方が惜しい

485 名前:デフォルトの名無しさん [2022/01/20(木) 14:41:43.21 ID:aoz8cIff0.net]
>>480
使ってから言えよ
あれ柔軟性が全くない

柔軟性の必要がない、タピオカ屋さん、ワッフル屋さんなんかにはドンピシャだろうね



486 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 14:41:48.98 ID:BPf7HX0l0.net]
>>478
してなくて、ぼんやり「まずはこのあたりをやらなきゃアカンのかなぁ・・・」とは思って

487 名前:た。
次に更新する月初めまでにやりまする。

大元のbookで、
"For i To k" より後の、
"Next i" までに使った変数全てについて
 Set 変数名 = Nothing
を "Next i" の直前に入れる感じで?
[]
[ここ壊れてます]

488 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 14:48:42.80 ID:bfB7zVPYM.net]
>>482
本当にその柔軟性必要?勝手にそう思い込んでるだけじゃない?
方眼紙に自由自在にレイアウトできなくても情報は伝わるんだぞ

489 名前:デフォルトの名無しさん [2022/01/20(木) 14:49:07.12 ID:gV+Fwxtn0.net]
一つのプロシージャで全処理するより

Class とか、Function 使う方が良いかもね。

490 名前:デフォルトの名無しさん [2022/01/20(木) 15:07:43.50 ID:aoz8cIff0.net]
>>484
必要
もちろん100社で100通りじゃない。100社で10通りぐらい。今後も増えるだろう
この柔軟性は、エクセルだとかなり受け入れやすい

>>485
正直、なるだけ1プロシージャは維持したほうが良いと思う
エクセルVBAは他の言語と違って、あまりにファイルへの依存性が強すぎる

491 名前:デフォルトの名無しさん [2022/01/20(木) 15:16:04.35 ID:gV+Fwxtn0.net]
ふーん。

オレなら処理毎にFunction プロシージャに引数で渡してあげて
ループ処理終わったら、変数開放するけどな。

変に長ったらしいのより、そっちの方が解読性がよくなる。

492 名前:デフォルトの名無しさん [2022/01/20(木) 15:19:27.67 ID:n5KSDES60.net]
>>481
お前みたいな奴がメンテできないシステムを作り出すのだぞ

493 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 15:20:13.56 ID:gV+Fwxtn0.net]
まあ、オレはAccess VBA専門なので
Excel VBA は遠い記憶ですが…

シンプル・イズ・ベスト。

494 名前:デフォルトの名無しさん [2022/01/20(木) 15:20:30.61 ID:/dOetE+CM.net]
バカがやると引数地獄かグローバル地獄になんだよ

495 名前:デフォルトの名無しさん [2022/01/20(木) 15:21:57.99 ID:aoz8cIff0.net]
>>488
言いたい事は分かるんだけど、エクセルはOSの依存が妙に強くて
OSの機能借りないとキツイ部分が多々ある
未だにMSGBOXがどうしようもなかった



496 名前:デフォルトの名無しさん [2022/01/20(木) 15:22:53.50 ID:aoz8cIff0.net]
>>490
なるほどw

497 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 15:24:46.85 ID:gV+Fwxtn0.net]
>>490

初心者はね。

最近は設計工程ばかりで、コーディングもしてないから
下流ビギナーの思考はわからんけど。

498 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 15:38:37.39 ID:gV+Fwxtn0.net]
確かにグローバル変数は使わない方が良い。

ホーム・プロシージャからFunction へ飛ばして
処理させてあげて
戻り値を次のFunctionへ…

って感じで作ると、テスト工程の時に楽になる。

デッカいシステムを組むとそっちの方が絶対楽だし
改修の時も、解読に困らないからね。

499 名前:デフォルトの名無しさん [2022/01/20(木) 15:56:22.20 ID:n5KSDES60.net]
>>491
いや、お前の能力が足りないだけだぞ

500 名前:デフォルトの名無しさん [2022/01/20(木) 16:21:54.83 ID:aoz8cIff0.net]
エクセルの場合は、エクセルという超グローバルオブジェクトがある
それをメインに据えれば良いと思うけどな

501 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 17:01:00.66 ID:ovHTHlPT0.net]
ホント、マクロは組む人によってその人のカラーや癖が出るとは言ったもんだね。

502 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 17:03:05.54 ID:GNfzU0ds0.net]
変数を日本語というか漢字とか使うのって邪道?
行とか列とかそのまま漢字文字で使ってるんだけど

503 名前:デフォルトの名無しさん [2022/01/20(木) 17:03:18.69 ID:aoz8cIff0.net]
>>497
んなもんプログラムならどれも一緒
エクセルは一段回上のファイルがあって、目に付きやすいだけ

504 名前:デフォルトの名無しさん [2022/01/20(木) 17:06:10.63 ID:aoz8cIff0.net]
>>498
2buyte文字ね
全然良い、というかむしろそっちの方が読みやすい
気をつけるのは、海外の漢字や絵文字
上でも出てたけど、半角ポンドなどエラーが起こりやすい文字がある

505 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 17:34:30.16 ID:BPf7HX0l0.net]
>>498
漢字をマクロ内で使って、
この5〜6年くらいの間で知ってるだけで少なくとも2回、
MSのupdateで動かなくなってた記憶があるので
それに対処出来ればOKかと。

Rangeで引っ張る定義名とかsheet名は
特殊な記号は避けて漢字使っちゃってる。



506 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 17:50:55.00 ID:HwD0Q83s0.net]
日本語(漢字)でもいいんだ へー   っていうレベルのが真似して安易に使い出したらカオス
他人事だから後は野となれ山となれ  っていう発想としか思えない
日本語OSが出来てからやれよ とは思う  米語OS使わざるを得ないなら粛々と従ってろや と
 ま、だからってローマ字に換えて30文字ぐらいのモジュールが40ヶぐらい並んでるのを見た時には一時間ぐらい気絶したけど
getsumatsukoushinn() nenjikoushintokuisakibetuhinmokubetsu()   あのさ、、、 これにOK出したの誰よ?

507 名前:デフォルトの名無しさん [2022/01/20(木) 17:51:21.68 ID:aoz8cIff0.net]
そういや何年か前、accessVBAだっけ?2byte文字あると全部エラーになるみたいなのあったな

508 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 18:02:49.63 ID:mCK9tQrM0.net]
>>502
ワロス

509 名前:デフォルトの名無しさん [2022/01/20(木) 18:26:03.22 ID:aoz8cIff0.net]
>>502
こういうの見るとoption explicit必須何やなって思わされる

510 名前:デフォルトの名無しさん [2022/01/20(木) 18:30:19.80 ID:NS2MNDvFr.net]
開発現場のローカルルールは
2バイト文字禁止が普通だけどね。

色んな環境で使うことを想定したら
日本語とかありえん。

コーディングの時は日本語だけど、
最終的に全置換で英語表記に変える。

511 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 20:06:44.42 ID:KxaVQnjRM.net]
> 色んな環境で使うことを想定したら
Excel VBA でそんなことを気にしないといけない状況って相当珍しいだろw

512 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 20:09:21.62 ID:WDmMC3D+M.net]
俺が前に行ってた派遣先ではC#で漢字の変数名や関数名とか自由に使ってたわ
業界ではそれなりに知られた老舗のソフトメーカーなんだけど
まあ、そういう職場もあるってことで

513 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 20:34:21.90 ID:NL1fx3HA0.net]
日本語以外での展開を考えてるならまあ2バイト文字禁止で良いんじゃね
日本語環境で開発してる段階で漢字禁止とかあんまり見ないけどな

ただ、メソッド名に日本語は過去にえらいことになった例があるからなぁ...

514 名前:デフォルトの名無しさん [2022/01/20(木) 23:42:09.41 ID:n5KSDES60.net]
ID:aoz8cIff0

いつもの馬鹿でしたとさ

515 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 02:47:14.61 ID:XETJK2Tn0.net]
派遣てなになに?
VBA技術者の派遣とかあるんだ?



516 名前:デフォルトの名無しさん [2022/01/21(金) 03:05:10.67 ID:iDAtgXvmr.net]
派遣業(ピンハネ屋)を禁止にすれば
日本人の給料は上がります。

517 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 05:15:31.24 ID:XETJK2Tn0.net]
派遣て確か専門職だからめちゃめちゃ稼げると聞いたけど、どうなの??
那須は出ないとは聞いたけど時給はめっちゃ高いと聞いたものでして。

518 名前:デフォルトの名無しさん [2022/01/21(金) 07:53:02.69 ID:U4E8wi5/0.net]
>>513
1500-2000円ぐらいだったかな。ただもう募集自体がほとんどない。
ほぼ全てローカル環境での作業のため、リモートも出来ない

>>512
下がる

519 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 08:07:59.20 ID:XETJK2Tn0.net]
へえ、1500から2000円ねそうなんだ。
自分田舎住みだからその時給はかなり水準高いわ。
こっちなんてどんだけExcelの技術あっても良くて時給1200円前後。
マクロ書ける人材は貴重だからもっと給料上げるべきだと思う。

520 名前:デフォルトの名無しさん [2022/01/21(金) 08:29:03.61 ID:U4E8wi5/0.net]
企業常駐型だから、基本かなり居づらいし
VBAでゴリゴリの開発や保守なんて絶対にやらんほうがいいわ

521 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 08:45:23.59 ID:XETJK2Tn0.net]
あ、常駐型SEを思い出した。
給料はもっと貰うべき。

522 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 08:51:43.72 ID:k97g2FVL0.net]
適正が有るだけで大した労力使わないのに給料は高いんだよ
楽だよな

523 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 09:29:31.93 ID:KSflUQH80.net]
ExcelでEnumChildWindowsを使って他アプリの子ウィンドを取得するプログラムをテストしています。
と言っても知識がないのでネットからソースをコピーしてテストしているレベルです。
EnumChildWindowsの引数でコールバック関数をしているのですが、コールバック関数を実行した時に順調に
実行される時とEnumChildWindowsを実行した途端Excelが終了する時があります。
何かよくあるミスとかあれば教えてください。
APIの宣言、コールバック関数は標準モジュール、その他はシートモジュールに書いています。
プログラムを張り付けて良いか分からないので張り付けていませんが良いならご指示ください。
よろしくお願いします。

524 名前:デフォルトの名無しさん [2022/01/21(金) 09:44:43.07 ID:U4E8wi5/0.net]
>>519
コードは貼ってくれ

525 名前:519 mailto:sage [2022/01/21(金) 11:25:52.95 ID:KSflUQH80.net]
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



526 名前:519 mailto:sage [2022/01/21(金) 11:29:13.91 ID:KSflUQH80.net]
標準モジュール

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

527 名前:519 mailto:sage [2022/01/21(金) 11:35:16.64 ID:KSflUQH80.net]
標準モジュールの続きです。

Public Function EnumChildProc(ByVal hwnd As Long) As Long
Dim Ret As LongPtr
Dim Leng As LongPtr
Dim Name As String * 255

528 名前:519 mailto:sage [2022/01/21(金) 11:39:21.83 ID:KSflUQH80.net]
書込みができないようで中途半端なところで切れてしまいすみません。
残り数行なのですがもう少し後で投稿します。
よろしくお願いします。

529 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 12:02:38.78 ID:Pj4yIAd6M.net]
>>524
長くなる時はコードをシェアできるサービス使って
https://collabedit.com/3dgh5

530 名前:デフォルトの名無しさん [2022/01/21(金) 12:24:55.64 ID:R2BsGPNsa.net]
標準モジュールからユーザーフォームを呼び出して、そこで入力された値を持ってきて処理したいです

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


標準モジュール
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をメッセージボックスに表示するようにしたいです

531 名前:519 mailto:sage [2022/01/21(金) 12:37:47.66 ID:KSflUQH80.net]
>>525
指示してもらったことろへ貼り付けました。
よろしくお願いします。

532 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 12:39:51.71 ID:aZlF8gD40.net]
>>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

533 名前:デフォルトの名無しさん [2022/01/21(金) 12:47:38.25 ID:R2BsGPNsa.net]
>>528
Dimを抜くと、変数が定義されていませんと出てしまうんです
Option Explicitを入れなければ通りますが、やはりTrueは返ってこないでFalseになります

534 名前:デフォルトの名無しさん [2022/01/21(金) 14:13:07.69 ID:U4E8wi5/0.net]
>>519
多分引数が間違っている。ノートパッドを起動して以下を試して、
返り値の違いを確かめてみて。
修正前は0が返ってるけど、修正後はポインタか参照が返ってるはず

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

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

後は、検索ボックスがどうこう書いてるけど、そういうプログラムを持ってないから検証できないわ

535 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 14:50:07.67 ID:RFcu/rPfd.net]
>>526>>529
ユーザーフォーム側で「Dim ret As Boolean」を宣言するとスコープの近い変数に格納されてしまうから不要
自分も同じようなコードをかいたがなくても正しくretにTrueが入る
(「CommandButton1.Click」は構文エラーになると思うが「CommandButton1_Click」だよね)
変数がどうとかいわれるならそもそも変数がpublicでないか参照している変数名がまちがってるとかないか?



536 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 14:57:28.11 ID:aZlF8gD40.net]
>>529
528は、ちゃんと動作確認してから貼ったんだけど
コード書く場所間違ってない?
https://i.imgur.com/76hGtGx.png

537 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 15:01:17.70 ID:RFcu/rPfd.net]
>>532
細かくてすまんが
CommandButton1_Clickの代入先って最初大文字にしても勝手に小文字にならない?

538 名前:デフォルトの名無しさん [2022/01/21(金) 15:11:34.91 ID:R2BsGPNsa.net]
>>531
何回も確認してるんですが、間違ってないんですよね・・・
CommandButton1.Clickも、>>526で間違えただけです
>>528で書いていただいたものをそっくりそのまま書いてるんですが、retにTrueが入ってくれないです
環境はエクセル2010のwin7です

539 名前:デフォルトの名無しさん [2022/01/21(金) 15:17:23.81 ID:R2BsGPNsa.net]
>>532
新しい標準モジュールにtestだけ書いたらできました
何かが干渉してるってことなんでしょうか

540 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 15:22:29.45 ID:RFcu/rPfd.net]
自分はWin10(20H2)+Excel2013とWin10(21H1)+Office365(サブスクリプション版)の2つで試したけど
どちらもTrueになるね

ちなみに「ret = True」のretをマウスクリックして右クリックのメニューに出てくる「定義」を選択するとどこにジャンプする?
自分はpublic変数にとぶんだが

541 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 15:24:18.40 ID:aZlF8gD40.net]
>>534
まさかイベントプロシージャの宣言部を自分で入力かコピペしてない?
フォームデザイナーでコマンドボタンをダブルクリックすると空のプロシージャが自動生成されるんだよ

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

>>533
悪いけど指摘の意味がよくわからん
スクショの通り、これでちゃんと動いてるんで
さらに細かいことを言うとCommandButton1_ClickじゃなくてCommandButton1.Clickね

542 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 15:30:59.33 ID:aZlF8gD40.net]
>>529
Dimを外すとエラーが出るってことは、どこかで今回の件とは関係ない別の何かをタイプミスしてる
Option Explicitをコメントアウトした状態でステップ実行するとローカルウィンドウに使用中の変数の一覧が出るから、よーく見直せ

543 名前:デフォルトの名無しさん [2022/01/21(金) 15:46:49.49 ID:R2BsGPNsa.net]
>>537
フォームデザイナー使ってます

>>536
Publicに飛びます

544 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 16:13:39.82 ID:RFcu/rPfd.net]
>>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押下で実行

545 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 16:23:57.05 ID:IxcxpS5S0.net]
ユーザーフォーム閉じるまでメッセージボックスまで行かないわけか
いつもモードレスだから気づかんかった



546 名前:デフォルトの名無しさん [2022/01/21(金) 16:24:33.06 ID:R2BsGPNsa.net]
>>540
新規ブックで一からやったらできました
組み込みたい既存のブックでやろうとしたところ、Public retに入らない感じでしたが、新しい標準モジュールを作ってやったらできました
なので、最初に書いた先の標準モジュールが原因っぽいんですが、それが何か分からない状態です
上手く動いたコードをそのまま一番上に持ってきているんですが、エラーは出ずに実行されるもPublic retにTrueが入らずにFalseになります

547 名前:デフォルトの名無しさん [2022/01/21(金) 16:40:12.64 ID:1Ed+zt1pM.net]
理屈もわからずあちこちからコピペコピペとやってる奴によくある
そろそろ消えろや

548 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 16:45:47.13 ID:uPLc80ynd.net]
ファイルもみてないからなんともいえないけどボタンに紐づけたイベントは正しく実行されるの?
ret = Trueの行でF9おすとブレークポイント設定されるからそこで止まるかたしかめたら?
それで止まったなら1行ステップ進めてretに何が入ってるか確認したほうがいいよ
モノづくりするときは1つずつつぶしていくのが大事よ

549 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 19:18:17.67 ID:vzv4Kcp20.net]
標準モジュールじゃなくてThisWorkbookに書いてる予感

550 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 19:27:54.79 ID:7hLshO/z0.net]
インターネットのブラウザ IEとかedgeとかで任意のページを開いてそこから日付とか番号とか特定の決まった箇所にある文字や数字をWordの特定の場所にコピー、挿入する方法はありますか?
できればボタンひとつでできるようになりたいです

551 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 19:45:58.42 ID:uPLc80ynd.net]
あります。
「vba スクレイピング」「vba word 操作」でぐぐればいくらでもサンプル出てくると思うから好きなのえらぼう

552 名前:デフォルトの名無しさん [2022/01/21(金) 22:29:10.29 ID:NFZs9l3R0.net]
>>546
Ruby馬鹿だろ

553 名前:デフォルトの名無しさん [2022/01/21(金) 22:34:52.59 ID:nlcE6d040.net]
整然としてねえコーディングだな。

頭の中身が現れてるわ。

554 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 22:37:38.53 ID:nlcE6d040.net]
>>546

VBSか、JavaScript の方が
早いかもしれん。

555 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 00:26:58.95 ID:XmCgkfSL0.net]
コピペプログラマー



556 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 00:35:52.61 ID:9zfa7ona0.net]
>>547
vbaでのスクレイピングは懲りた
標準だとIEしか使えないんだもん

557 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 01:04:10.75 ID:NynwR7VqM.net]
>>552
どの言語でも外部ライブラリは必要

558 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 08:00:34.93 ID:HGIIomOF0.net]
他社製のweb受注システムから社内の生産管理システムに流し込むときにやったな
CSVダウンロードくらい用意しろってんだ

559 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 08:21:46.11 ID:R1iyPI8Z0.net]
>>550
同意
どうせ深くWeb系を扱うのであればJavascriptは必須になってくるから勉強するに越したことはないと思うよ。
VBSもVBAの知識があれば何とかなる・・・多分。
IISの知識があればそれでクラシックASPの出来上がりですよ。
本格的にやるならASP.NetだけどObject指向の概念が分かっていないとVBAからだとVB.Netでも少し敷居が高いかも。

どうせWeb版のEXCELとか弄るときはJavascriptだし、今の内に慣れておいた方がいいと思う。

560 名前:デフォルトの名無しさん [2022/01/22(土) 08:34:08.56 ID:DLYfLGcJ0.net]
>>554
同じく
csvDL自体がないってのはさすがに見たことないけど、
DLに項目が不足してる時はスクレイピングで抜いてるな

561 名前:デフォルトの名無しさん [2022/01/22(土) 08:36:01.91 ID:DLYfLGcJ0.net]
chromeの拡張機能でスクレイピングするのが最も安心安全
サーバーからすれば一番ユーザーに近い
IEは対応してないどころかもうすぐなくなる。

そういやvbaのブラウザはどうなるんだろ?

562 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 10:08:57.53 ID:r24PNXTk0.net]
for i= 1 to 100 step 1
#If conEnv = 1 Then
 ans = d1 * d2
#Else
 ans = d1 / d2
#End If
Next i

こんな感じに条件付きコンパイルをしてる場合、
ループ毎にIF判定してるんですか?

563 名前:デフォルトの名無しさん [2022/01/22(土) 10:56:45.31 ID:DLYfLGcJ0.net]
>>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

564 名前:デフォルトの名無しさん [2022/01/22(土) 11:00:33.05 ID:DLYfLGcJ0.net]
あと、下手に条件つきコンパイルは本当にやめたほうがいい。絶対にややこしくなる
唯一使える最適な場面は、コンパイル時にエラーが起こる可能性がある箇所。
パッと思いつくのは、バージョン違いへの対応程度

テスト環境の切り替え〜という人もいるけど、関数でどうこうするのと変わらん

565 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 12:09:48.37 ID:r24PNXTk0.net]
>>559
ありがとうございます
質問の後で気付いてやってみたステップ実行でも
ループ毎にIF判定やってませんでした



566 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 12:12:56.15 ID:Zx7T2GTSM.net]
>>557
フォームに貼り付けるブラウザコントロールが標準で入ってるから、これは簡単には廃止できない
アプリは消えてもオブジェクトは残り続ける

567 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 12:58:31.26 ID:2RwNzJk50.net]
.netだとWebView2が使えて便利なんだけど実装されないかな
ついでにコントロールのスクロールをマウスでできるようにして欲しい

568 名前:デフォルトの名無しさん [2022/01/22(土) 13:04:36.26 ID:6LO0uF920.net]
ID:DLYfLGcJ0

こいついつもの馬鹿か

569 名前:デフォルトの名無しさん [2022/01/22(土) 13:13:07.59 ID:DLYfLGcJ0.net]
笑w

570 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:50:16.42 ID:RiKtYPqw0.net]
頭痛が痛い

571 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 19:51:56.45 ID:NrxysVpy0.net]
バファリン飲め

572 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 22:48:31.49 ID:XmCgkfSL0.net]
頼んでもないのに長々と知識披露してくる人ってなんなんだろうね?

573 名前:デフォルトの名無しさん [2022/01/22(土) 23:15:30.08 ID:DLYfLGcJ0.net]
知識の共有だろ
俺は好きだから長文どんどん書いていいぞ
歴史的経緯とかがあると尚グッド

574 名前:デフォルトの名無しさん [2022/01/23(日) 00:04:39.53 ID:MiYFwUbv0.net]
>>569
馬鹿が嘘を書くなよ

575 名前:デフォルトの名無しさん [2022/01/23(日) 00:35:00.90 ID:HSIItn8m0.net]
めっちゃ怒ってて草w



576 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 00:38:42.06 ID:sfiZCcaw0.net]
>>569
TK80から語り出すがいいのか?

577 名前:デフォルトの名無しさん [2022/01/23(日) 00:41:37.63 ID:HSIItn8m0.net]
>>572
そこまで遡るとさすがにエクセル関係なくなるような
俺はいいけど、他の人には迷惑だと思うぞ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<287KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef