1 名前:デフォルトの名無しさん [2015/05/21(木) 10:52:44.71 ID:KLv0vQmm.net] VBAを使った質問ならなんでもござれ 本来の対象であるオフィスアプリを操作する以外の話もOK ゲーム作り、Webアクセス、外部アプリの操作 COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど VBAで実行するものであればなんでも質問してください VBAを開発環境としていろいろ作っちゃいましょう 前スレ VBAなんでも質問スレ peace.2ch.net/test/read.cgi/tech/1342087380/ 関連スレ Excel VBA 質問スレ Part36 [転載禁止]©2ch.net peace.2ch.net/test/read.cgi/tech/1419718732/ Access VBA 質問スレ Part1 peace.2ch.net/test/read.cgi/tech/1328536426/ VBプログラマ質問スレ(Ver.6.0 まで) part64 peace.2ch.net/test/read.cgi/tech/1393069842/ Excel総合相談所 118 [転載禁止]©2ch.net peace.2ch.net/test/read.cgi/bsoft/1430352555/
175 名前:デフォルトの名無しさん [2016/04/09(土) 15:25:31.33 ID:8VJ1WNjN.net] >>167-170 DLLはこんな感じで Declare PtrSafe Function funcABC Lib "ABC.dll" (ByVal n As Long, ByRef v As Variant) As Long 本来1が返ってくるべきところに0が返ってくるんです。 だけど、〜 Lib "C:\tmp\ABC.dll" 〜 とすると、ちゃんと1が返ってくる。 どちらの場合もDLL名を変えると「ファイルが見つかりません」という実行時エラーになるので、同じDLLファイルを 指しいてるのは間違いないと思います。
176 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 16:35:57.82 ID:kbPPFUQM.net] >>172 そんなの "ABC.dll" の作り次第だろ 作者に聞けよ dll のパス取得して何かしてるのかもしれないし frog.raindrop.jp/knowledge/archives/000316.html
177 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 16:55:41.43 ID:DA1syyI4.net] >念のため他のフォルダに同名のDllがないか確認しましたが、そんなものはありませんでした。 限りなくこれが怪しいと思うんだが
178 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 16:57:28.60 ID:XGWfr4Pw.net] >>165 同名のdllが無いことをどうやって確認した?
179 名前:デフォルトの名無しさん [2016/04/09(土) 18:20:08.40 ID:uD9Ltjj7.net] >>165 挙動が変わることはあります。 おわり
180 名前:デフォルトの名無しさん [2016/04/09(土) 18:32:34.00 ID:8VJ1WNjN.net] >>175 パスが通っている全フォルダとカレントフォルダからの目視です。 環境変数(PATH)をまず確認して、 kernel32.dllにあるAPI 「GetEnvironmentVariableA」 に引数"PATH"を渡して出てきたフォルダを対象にしました。 問題のfuncABC も GetEnvironmentVariableA も同じVBAから発行しています。
181 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 18:41:03.58 ID:DA1syyI4.net] カレントフォルダをどうやって確認したかとか システムディレクトリにdllがないかとか まあ、確認漏れ自体はいっぱいありそうだな
182 名前:デフォルトの名無しさん [2016/04/09(土) 18:46:44.36 ID:8VJ1WNjN.net] >>178 C:\windowsやC:\Program Files、C:\Program Files (x86)は入ってますよ。 目視も検索フィルタにとりあえず *.dll で全DLLを出してからやっています。 >>176 マジですか...
183 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 19:45:00.69 ID:mXQNErhc.net] >>179 本当にひとつしかないならあり得ない挙動だと思うけど。 dllの内容を明かしてみな。
184 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 19:57:07.07 ID:zSVIlalC.net] Windows が使用する DLL 検索パス 1.実行中のプロセスの実行形式モジュールがあるフォルダー。 2.現在のフォルダー。 3.Windows システム フォルダー。このフォルダー
185 名前:へのパスは、GetSystemDirectory 関数が取得します。 4.Windows ディレクトリ。このフォルダーへのパスは、GetWindowsDirectory 関数が取得します。 5.環境変数 PATH 内に記述されたフォルダー。 https://msdn.microsoft.com/ja-jp/library/7d83bc18.aspx [] [ここ壊れてます]
186 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 20:29:56.83 ID:XGWfr4Pw.net] >>177 ウインドウズの検索機能を使ってみたら?
187 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 20:38:17.27 ID:KOaWU5bX.net] 何か仕事でもしながら、ディスク全部の範囲で、検索すればいい
188 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 21:28:53.86 ID:yIzAT5uL.net] windows なら黙って search everything 入れろ 考える余地なし
189 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 21:30:12.16 ID:yIzAT5uL.net] あ、業務用のマシンだとマズいか
190 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 21:43:59.08 ID:YC7vrxdl.net] >>179 > 目視も検索フィルタにとりあえず *.dll で全DLLを出してからやっています。 プログラマーに向いてないんじゃね? コマンドプロンプトで dir /s /b \ABC.dll ってやればいいだけだろ
191 名前:デフォルトの名無しさん [2016/04/09(土) 23:15:48.61 ID:8VJ1WNjN.net] >>180 ODBCのコネクションを張る関数で、特に自分の場所が関係する処理はしてないですね。 >>181-186 全ドライブを検索した結果(search everythingは入れてませんが dir/s はやってみた) C:\Users\*****\Google ドライブ\ に見つかりました。 しかし、これを消しても現象は変わらなかった(もともと参照パスに入ってない)ので、諦めの気分です。
192 名前:デフォルトの名無しさん [2016/04/10(日) 00:12:20.49 ID:TaPFtU7E.net] 元々の質問は、挙動が変わることがあるか?で、 あるって回答で解決だと思うけど、どうしてもないってことにしたいの? ゴールが見えないよ
193 名前:187 [2016/04/10(日) 00:39:39.00 ID:9vV3r8su.net] >>188 あるって回答(>>176 )もあり、ないって回答(>>180 )もありで、判断がつかない状況です。
194 名前:187 [2016/04/10(日) 00:47:04.09 ID:9vV3r8su.net] それと、>>173 と>>176 もいまいち理解できておりません。 「dllのパスを取得」とは、実際の存在はひとつでもDeclare文での指定のしかたまでも検知できるんでしょうか?
195 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 01:04:43.27 ID:9zYVMe1H.net] まさか、パス・ユーザー名など、システムに関係する部分に、 日本語を使ってないだろうな? それで、バグってるとか?
196 名前:187 mailto:sage [2016/04/10(日) 01:08:14.87 ID:9vV3r8su.net] >>191 ないですね
197 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 01:14:27.05 ID:9zYVMe1H.net] そのDLLの作者が外人で、DLL内で、パス・ユーザー名を扱っていた場合、 もしその中に日本語が入っていれば、バグるかも
198 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 01:22:30.64 ID:9zYVMe1H.net] >>187 >ODBCのコネクションを張る関数で それなら、そのDBのメーカーが(ドライバーが)、絶対パスしか許可していないのかも。 相対パスの危険性も考慮して、そういうアクセス許可にしているのかも 絶対パスを使えばいい
199 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 05:47:22.16 ID:v52RcnsN.net] >>187 > 特に自分の場所が関係する処理はしてないですね。 ん? 自分で作った dll なの? だったら自分でデバッグしなよ
200 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 10:59:47.17 ID:KR5BT3Be.net] 全ドライブを検査してひとつしかdllファイルがなかったって言ってるんだろ。 それが本当なら何も対処できないよ。OSレベルの不具合。
201 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 17:49:12.01 ID:r0zhudqC.net] VBAをコーディングするのに最適な画面サイズとモニターの台数は何台ですか? 縦と横どっちでつかってすか? 4Kディスプレイはどうですか?
202 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 18:54:26.34 ID:oV0tVvW7.net] (´・ω・`)
203 名前:デフォルトの名無しさん [2016/04/10(日) 19:33:25.31 ID:Y5yf6QHK.net] >>197 3台 縦 4Kいいよ
204 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 21:49:20.13 ID:Wsz3hpAs.net] エクセルのVBA質問があります。 一番前のTOTALシートのA22:H26までを複数シート(20シートくらいある)の最終行の次の行に貼り付けたいのです。 各シートの最終行はバラバラで多いのは数千とあります。 しかも、G列には\と$の通貨マークH列には金額が書いてあり、SUMIFが組んであります。 記録マクロでやると下記みたいになりますが、こんなこと可能なのでしょうか? 調べても出てこないので誰か教えてください。 Sub Macro2() Rows("24:28").Select Selection.Copy Sheets("A").Select Rows("22:22").Select Selection.Insert Shift:=xlDown Range("H22").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=SUMIF(R9C7:R19C7,RC[-1],R9C8:R19C8)" Range("H23").Select End Sub
205 名前:デフォルトの名無しさん [2016/04/28(木) 00:18:56.90 ID:Vq22azhO.net] >>200 可能です
206 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 07:31:01.70 ID:TNqjmghT.net] >>201 教えてください。
207 名前:デフォルトの名無しさん [2016/04/28(木) 08:26:47.90 ID:RqXO/zBw.net] >>202 具体的にあなたが躓いているところがわかりません
208 名前:デフォルトの名無しさん [2016/04/28(木) 12:27:24.37 ID:xB9gNSEq.net] >>203 具体的にあなたが何がわからないのかわかりません
209 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 12:29:10.17 ID:gq5pmM2C.net] >>200 For Eachで全シートループして、各シート最終行取得して貼り付ければ良いと思いますが、ダメですか?
210 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 20:07:58.00 ID:iqsXmWMg.net] >>200 ですが、出直してきます。
211 名前:デフォルトの名無しさん [2016/05/01(日) 15:15:56.13 ID:tKi6j9CT.net] 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、 BitTorrentがオープンソースで開発されています 言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか? Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします https://twitter.com/Lyrise_al ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw The Covenant Project 概要 Covenantは、純粋P2Pのファイル共有ソフトです 目的 インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します 特徴 Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW) 接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です DHTにはKademlia + コネクションプールを使用します UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません l
212 名前:デフォルトの名無しさん [2016/05/01(日) 23:24:37.04 ID:u17iQe5m.net] EXCELのVBAでメール返信(OUTLOOK)をする仕組みを作りたいのですが、 元メールを引用するにはどうしたら良いでしょうか? タイトルやらアドレスやら本文がくっついてないと、 どうも返信感がでないと思いまして。
213 名前:デフォルトの名無しさん mailto:sage [2016/05/03(火) 10:11:50.64 ID:YSERRocv.net] >>208 Outlookヘルプから 次の例は、現在のフォルダを受信トレイに設定し、フォルダの 2 番目のメッセージを表示します。 Visual Basic for Applications Set myOlApp = Outlook.Application Set myNamespa
214 名前:ce = myOlApp.GetNamespace("MAPI") Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox) myFolder.Display Set myItem = myFolder.Items(2) myItem.Display [] [ここ壊れてます]
215 名前:デフォルトの名無しさん [2016/06/04(土) 14:31:26.42 ID:ZLbjql14.net] Excel向けだとVBA関連の本は結構あるのにOutlookのVBA本って あんまり無いですね。 Outlookの仕分け機能では宛先とCCに○○から来た時に動作する 条件を付けられますが、宛先○○から来た時には動作するけど CCに何か入っていた場合は動作しないマクロは作れないでしょうか。 環境はWin7、Outlook2010です。
216 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 17:57:25.97 ID:+2vTx5YA.net] >>210 作れるよ
217 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 17:59:26.06 ID:+2vTx5YA.net] outlook vba mail とかでググれ
218 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 21:08:48.99 ID:xa1tVlDu.net] >>210 多分こんな感じでできるかと Public WithEvents InboxItems As Items Private Sub Application_Startup() Set InboxItems = Application.Session.GetDefaultFolder(olFolderInbox).Items End Sub Private Sub InboxItems_ItemAdd(ByVal Item As Object) Dim mailItem As Outlook.mailItem Set mailItem = Item If InStr(mailItem.To, "○○") > 0 And mailItem.CC = "" Then MsgBox "何かする" End If End Sub
219 名前:デフォルトの名無しさん [2016/06/12(日) 09:42:53.63 ID:D40PIOb3.net] 【Win10】 こんな犯罪級OS薦めんなよwww ↓ 【スパイウェア】 この使用許諾契約書には書かれています ”最後にあなたのコンテンツを含む個人データ(例えばあなたの電子メールの内容や―プライベート通信やプライベートフォルダ内のファイル)にアクセスし―開示し保全します” 開示する ここ重要だよ 契約がなければ通常 高度な違法行為になりうることです それはあなたが自分の意思としてこの契約書に同意したのです https://www.youtube.com/watch?v=ZBwEmgdqB1c 【秘密保護法】 ナチスの手口でサヨクを捕まるんだろ? 早くやってみろよ m9(^Д^) 【緊急事態法】 スノーデン氏→国家秘密法は諜報機関NSAの日本での活動を容易にするために米国が設計して日本政府に導入を要求したもの。 全日本人が調査の対象であり、NSAはあなたの交際関係、信仰等の個人情報を把握している。 https://twitter.com/hopi_domingo/status/740193540529999873 今朝、辺野古で新基地建設に反対するママの会メンバーに対して、機動隊員が「お前たちには汚い血が流れている」などと暴言を吐いたそうです。 自分のやっていることを「だってお金欲しいもん〜」「俺の写真を待ち受けにしろ」とも (顔写真) https://twitter.com/MothersNoWar/status/690357793702940672 サンマ以降のバラエティ芸人の大半が、暴走族出身で極右思想。原発反対派を「放射脳」と嘲笑する連中。 芸能界極右は石原慎太郎一家を筆頭に、上田晋也 草野仁 津川雅彦 向井理 松本人
220 名前:u 宇多田ヒカル マツコ 春日俊彰 田村淳 北村晴雄 https://twitter.com/tokaia mada/status/630627400552845312 [] [ここ壊れてます]
221 名前:デフォルトの名無しさん [2016/06/14(火) 02:34:53.84 ID:2DTiTbF7.net] vbaでshell関数を使って指定パスのエクスプローラをファイル選択状態で開いてるのですが、 家でやると何でもないのですが、会社でやると、その方法で立ち上げたエクスプローラは 1分〜数分以内に「エクスプローラは停止しました」となって落ちます。そのフォルダだけ 落ちるので他のは巻き込まれないだけマシですが、手動で立ち上げた他のエクスプローラで このように不意に落ちた事はないので、プログラムから立ち上げたエクスプローラが特別 不安定だとしか思えないのですが、原因が不明です。 それで、家と会社の違いは、会社だと共有フォルダを開いている事です。 家ではテスト環境をローカルで構成している為か、全く問題は起きません。 色々ぐぐってみたのですが原因が不明です。 vbaから開く方法で、解決策、あるいは次善の方法等ありますでしょうか。 shell関数はこのように使っております。 Shell "Explorer.exe /select, """ & path & """", vbNormalFocus 環境はWindows7 Excel2010(32bit)です。
222 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 06:56:55.57 ID:wwwgAdKU.net] >>215 試しに自宅の環境で共有フォルダをshell関数でファイル選択状態で開いてみたけど 特に問題なかったよ 原因は共有フォルダであること ではないのじゃないかな その共有フォルダへのショートカットを作って それをshell関数を使ってexplorerで開いてみるとかは?
223 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 08:10:13.51 ID:BcKyLCvc.net] 手動で起動したプロセスは、親プロセスが無く、単独のプロセスだから、ずっと生き残るのかな? Aプログラム(Aプロセス)から起動したプロセスは、親プロセスがAとなり、 Aを終了すると、その子プロセスもすべて、連鎖して終了するのかな? プロセスを起動する際、親子関係を切れば? ただしそうすると、起動されたプロセスは、A終了後も残り続けるから、 誰がそのプロセスを終了するのかが、問題となる 漏れは、Windowsはよく知らない。Linuxから推測して書いた
224 名前:デフォルトの名無しさん [2016/06/14(火) 08:45:39.28 ID:2DTiTbF7.net] >>216 ショートカットから開く方法ですか、考えもしなかったです。 確実に再現するバグではない(場合によっては20分くらい経ってからクラッシュしますし、端末によっては何も起きなかったりします。) なので、原因を掴むのが難しいです。 >>217 なるほど、プロセスが分離されているから巻き込まれなかったんですかね。 前後のコードを見返しているのですが、shell関数を読んだ直後に Kill thisworkbook.fullName thisworkbook.close を読んで終了させているんですが、ひょっとしたらこの兼ね合いが原因かも?とふと思いました。 shell関数は非同期処理で、会社の共有フォルダを開くときはローカルと違って若干起動に時間がかかります。 shell関数の処理が完了しきっていないのに即終了させるから、動作が不安定になってる可能性はありますかね・・。 なのでとりあえずShell関数を、Wscript.ShellのRunメソッドの同期処理に置換えてみました。 それで明日会社でテストしてみます。
225 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 20:38:23.92 ID:985LHqkd.net] それVBAとか関係なく、普通にネットワーク上のフォルダを表示してるエクスプローラでも発生してるんじゃないのか? https://support.microsoft.com/ja-jp/kb/972685#/ja-jp/kb/972685 https://support.microsoft.com/ja-jp/kb/2494427#/ja-jp/kb/2494427 とりあえず俺はこの二つで直ったが、エクスプローラ 落ちる とかでググってみ
226 名前:218 [2016/06/16(木) 07:48:37.40 ID:MO4h1nff.net] >>219 同期処理に変えたら全く落ちなくなりました。 どうやら推測は当たったみたいです。 手動で立ちあげてる時には同じトラブルは一度も起こったこと無く、誰からも聞いていないので、 VBA処理が原因で間違いないと思います。 ぐぐっては見てたんですけど、VBA関連でのエラー報告は0でしたね。 しかし、元々この手のトラブル報告がかなり多いことにはびっくりしました。 とりあえずは解決です。皆さんどうも有難うございました。
227 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 14:05:29.72 ID:tOwQ8tvq.net] タイミングの問題で、バグが起きるときは、 sleep 3秒などで、時間稼ぎすることが多いな
228 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 16:27:03.77 ID:YtVxucfB.net] >>221 タイミングというか処理を待ち合わせる必要があるって事だよな 3秒で完了しない処理だと問題が起きる 90%くらい解決出来れば実用上は問題にならないかも知れないけど
229 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 21:40:45.67 ID:JOmdLZoV.net] ' キャッシュ反映を待って5秒待つ ↑これなんとかして
230 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 21:53:33.23 ID:EpEOLr57.net] >>223 何のキャッシュか判らないけど キャッシュをフラッシュするインターフェイスがあればそれを使えば良いのでは 無いなら知らない
231 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 01:16:02.29 ID:Sh+IdTol.net] 起動方法と起動のタイミングの問題で >1分〜数分以内に「エクスプローラは停止しました」 >場合によっては20分くらい経ってからクラッシュ のような症状が出るとは考えにくいけどな まあ、直ったって言うならそれでいいけど
232 名前:樵の結び目。 [2016/09/03(土) 18:27:18.44 ID:Ms7vNg4j.net] この作者について img.atwikiimg.com/www9.atwiki.jp/gensouv/attach/346/23/ExcelVBAPractice.html どう思いますか??
233 名前:デフォルトの名無しさん [2016/09/28(水) 19:27:48.59 ID:BVBInYIb.net] vbaの And, Or って短絡評価してくれないの???
234 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 20:30:34.84 ID:X231kNmm.net] >>227 普通しない (常にしないかどうかは知らんけど)
235 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 22:20:25.14 ID:w7cfX4QA.net] X(n) And Y(m) で X(n) = False だった場合、Y(m) は評価しなくても式が False と確定する Or でも同様のことが可能 VBAがショートサーキットしているかどうかは、各関数で Debug ログを出力してみればわかる
236 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 04:55:17.68 ID:IF5lu7hc.net] >>229 いちいち短絡評価の説明なんてしなくていいよ...
237 名前:227 mailto:sage [2016/09/29(木) 08:22:26.74 ID:l2tsRcXf.net] くぅ。 短絡評価してくれるもんだと思って、 True, False, Nullを返す関数の結果で、 NullをFalseに倒したくて、 左辺でNot isNullやってたけど、 右辺もNullで動いてしまってエラーになってはまったわ。
238 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 12:46:05.66 ID:tIM+raH6.net] VBAあるある
239 名前:デフォルトの名無しさん mailto:sage [2016/10/06(木) 19:51:33.65 ID:prbbit7d.net] .NetならOrElseやAndAlsoが使えるし Nullable指定も出来るから便利なんだけどなー まあ無いものねだりしても始まらないか
240 名前:デフォルトの名無しさん mailto:sage [2016/10/08(土) 17:43:11.29 ID:fiaM9vLl.net] VB(A)はWithとかある割にそういうとこは全然気が利かないよな C言語すら知らない人が作った言語なんだろう事は判る
241 名前:デフォルトの名無しさん mailto:sage [2016/10/08(土) 22:59:38.27 ID:315EhZFM.net] VBって元々はMSじゃないんだよね BASIC好きのゲイツが惚れ込んで買収しただけ
242 名前:デフォルトの名無しさん mailto:sage [2016/10/27(木) 20:44:38.40 ID:LE0ob9Yw.net] vbaの中、上級者向けの書籍を教えて
243 名前:ュださい [] [ここ壊れてます]
244 名前:デフォルトの名無しさん mailto:sage [2016/10/27(木) 21:44:23.99 ID:BIHhfe0H.net] 漠然と「VBAの初心者向けの本を教えてください」ってのはよくあるが、上級者向けは珍しいね ある程度基礎が身に付き、やりたいことが分かってきていれば ○○に関する本、ってなるように思うんだが・・・ 田中亨氏の「Excel VBA 逆引き辞典パーフェクト 」は名著だよ
245 名前:デフォルトの名無しさん mailto:sage [2016/10/28(金) 04:23:54.86 ID:s9odN72t.net] >>237 ありがとうございます。 クラスや多段階配列、イベント自作、擬似コントロール配列あたりの情報がある書籍はありませんか?
246 名前:デフォルトの名無しさん mailto:sage [2016/10/28(金) 15:06:05.95 ID:Sg+Wt/Uz.net] アプリ作成で学ぶExcel VBAプログラミングユーザーフォーム&コントロール(横山達大著) かんたんプログラミング 応用編(大村あつし著) 同じく、かんたんプログラミング コントロール関数編 デバッグ関連だと 立山秀利著の本
247 名前:デフォルトの名無しさん mailto:sage [2016/10/29(土) 23:22:10.90 ID:b3lytwnZ.net] VBAでコードを抜き出してSVNやgitで管理したりするとそれだけで上級者っぽくなる
248 名前:デフォルトの名無しさん [2016/10/30(日) 08:10:21.54 ID:R4QvvoTp.net] それ以上にバカっぽいけどなw
249 名前:デフォルトの名無しさん mailto:sage [2016/10/30(日) 09:23:46.57 ID:2kQlDpFE.net] 今時差分管理もしてないのかよ
250 名前:デフォルトの名無しさん mailto:sage [2016/10/31(月) 23:59:17.10 ID:9abcSnRr.net] VBACとか使ってんの?
251 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 12:06:59.89 ID:1XFRepCN.net] PowerPointのVBAでファイルを閉じた後も変数の値が保存されるようにしたいんですが外部のテキストに書き出す以外にファイル本体にどうにかして埋め込む方法はありますか?
252 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 14:57:53.43 ID:atuXlQHb.net] 透明のシェイプとかに書くとか色々あるけど 実際本体ファイルを更新されるとバージョン管理とか使う側が気持ち悪がるとか運用面で問題が出そう
253 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 19:29:23.46 ID:4FxLnD3n.net] Excel脳っすなぁ 標準的なユーザーデータ保存場所がちゃんとあるんだからそれ使えばいいじゃん
254 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 19:58:54.20 ID:KOZLaxG/.net] >>246 どうすればいいでしょうか
255 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 21:21:37.88 ID:VJg+IRhi.net] >>244 Presentation.CustomDocumentProperties https://msdn.microsoft.com/ja-jp/library/office/ff744661.aspx
256 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 07:09:26.95 ID:HIDKMkau.net] >>246 条件によるだろ 思いつきで即答すんなアホ
257 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 07:27:10.54 ID:ff698yUf.net] >>249 条件って ファイル本体に埋め込みたい ってことだろ >>246 の保存場所がどこの事を言ってるのかよくわからんが >>245 より >>248 の方がはるかにマシ
258 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 07:40:32.09 ID:xddq+MTq.net] ファイル本体に埋め込みすんのがアホなんだよわかれよ素人 ゴミを量産して人に迷惑かけないでくれ 独りよがりの仕事してんじゃねえよ
259 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 08:07:27.12 ID:ff698yUf.net] 単なる基地害だったのか
260 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 20:25:02.30 ID:1dqSFjs6.net] 実際に仕事してるとそれこそ基地外避けを作る必要が出てきたりするんだよな
261 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 21:24:47.40 ID:lpX4EXgF.net] ユーザーデータを変な場所に保存したりするやつとか避けないとな
262 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 22:43:16.46 ID:diTiDCUQ.net] >>254 > 変な場所に 透明のシェイプとかのことですね、わかります
263 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 17:14:33.92 ID:QPcPOced.net] 50枚のスライドが入ったパワポが5個あります。 これを統合したいのですが ファイル1の1枚目 ファイル2の1枚目 ファイル3の1枚目 ファイル4の1枚目 ファイル5の1枚目 ファイル1の2枚目。。。 という順番にしたいのです。 どういうマクロを書けばいいでしょうか?
264 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 21:36:30.61 ID:MAF656mM.net] >>256 その通りのマクロを書けばいいのでは?
265 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 21:54:55.31 ID:1gaAmlEB.net] 新規で作ったらコピペを繰り返すだけ
266 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 00:38:49.96 ID:hvVJhpIb.net] パワポってマクロ使えるんだ そらそうだわな
267 名前:デフォルトの名無しさん [2017/02/14(火) 01:58:27.90 ID:ahDpDw9M.net] ExcelVBAをつかいこなしていても パワポはマクロの記録がないと腰が重いな
268 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 08:18:34.60 ID:uIQboeV9.net] >>256 この作業用を何回も繰り返さないといけないの? 1度きりならあなたの場合は手作業の方が早い気が
269 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 13:14:12.73 ID:zgJtAmDR.net] >>256 スマホからだから試してないけどこんな感じかな Application.Presentations.Open(ひとつ目のファイル) Application.Presentations.Open(ふたつ目のファイル) ... Application.Presentations.Open(いつつ目のファイル) Set P = Application.Presentations.Add For I = 1 To 50 For J = 1 To 5 Application.Presentations.Item(J).Slides(I).Copy P.Slides.Paste Next Next P.SaveAs(新規のファイル)
270 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 13:32:21.69 ID:xPy6pfR0.net] 選択されているセル範囲内の文字、図形を削除する手順を作ってみましたが、処理がえらく重いです。 もっと処理を早くする方法はないでしょうか? Sub sakujo() Application.ScreenUpdating = False '画面更新を停止 Dim shp As Shape Dim rng As Range If TypeName(Selection) <> "Range" Then Exit Sub For Each shp In ActiveSheet.Shapes Selection.ClearContents Set rng = Range(shp.TopLeftCell, shp.BottomRightCell) '図形の配置されているセル範囲をオブジェクト変数にセット If Not (Intersect(rng, Selection) Is Nothing) Then '図形の配置されている範囲と選択されているセル範囲が重なっているときに図形を削除 shp.Delete End If Next Application.ScreenUpdating = True '画面更新を再開 End Sub
271 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 14:40:32.47 ID:bekNjoMq.net] >>263 再計算とイベントも停止してみた? あと、コレクションに対するループの中で自分自身のコレクションが変化するのは、なんとなくまずい気がする 根拠はないけど、それって遅くなる要因と違う?
272 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 15:02:34.32 ID:Q2T7iSLN.net] 処理の基本をよく考えるべき。 1.Shape毎にSelection.ClearContentsする意味は? 2.shp.Delete後もループする意味は? 3.そもそもSelectionって何?つまり何が選択されている時に削除したいの? For Each shp In ActiveSheet.Shapes If shp Is Selection Then shp.Delete Exit For End If Next じゃ駄目?
273 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 15:08:21.72 ID:Q2T7iSLN.net] 選択されているセル範囲については最初のIf文でExit Subしてるから削除されないんじゃ? 処理がよく分からん。 選択されているShapeの下のRangeの内容を削除したいならshp=Selectionの場合に Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents で良いんじゃ?
274 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 15:10:34.31 ID:Q2T7iSLN.net] shp=Selectionの場合じゃなくてshp Is Selectionの場合だな。 shp.Deleteの前ね。
275 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 15:24:01.29 ID:5OVH7aZj.net] >>265 質問者じゃないけど変わって説明するよ ・シート上に文字と図形が複数箇所に設定されている ・消す範囲を選択して、その範囲内の文字と図形を消すコードを書いた ・でもなぜか遅い 質問者に言えるのは、 ・Selection.ClearContentsはfor eachの外でいい ・試しに100個のshapeを貼り付けて50個くらいが入る範囲を選択して消してみたら一瞬で終了(もちろんコードでだよ) ・遅いって具体的にどれくらいなの?
276 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 16:00:14.32 ID:Q2T7iSLN.net] >>268 コード見りゃわかる。 でもコードがやってることは無駄な部分が多いから聞いてる。 最初のIf文を見ればRangeを選択した場合はExit Subしたいみたいだがら範囲選択した場合は処理して欲しく無いんだよな。 →じゃ、どんな時に処理して欲しいの? For Each shp In ActiveSheet.Shapes If shp Is Selection Then Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents shp.Delete Exit For End If Next じゃ駄目なの?
277 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 16:07:14.86 ID:xPy6pfR0.net] 今までは長い時で1〜1.5秒程止まっていました >>268 さんの言われた通り、Selection.ClearContentsの位置を変えたらスムーズになりましたのでこれで行こうと思います たくさんご意見頂きありがとうございました
278 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 16:14:41.52 ID:5OVH7aZj.net] >>269 > If TypeName(Selection) <> "Range" Then Exit Sub だよ
279 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 14:44:16.79 ID:nMuhJunv.net] エクセルのマクロでも質問大丈夫でしょうか? 名前と同じファイル名の画像を名前セルの隣に貼り付けるプログラムなんですが Sub ボタン1_Click() Const n As Long = 2 Dim i As Long Dim x As Double Dim s As String Dim t As FileDialog Dim m As VbMsgBoxResult With ActiveSheet For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row Step 6 Set r = .Cells(i, 3).MergeArea s = "D:\画像\1\" & .Cells(i, 2).Value & ".jpg" Dir Application.Path With .Pictures.Insert(s).ShapeRange .LockAspectRatio = msoTrue x = Application.Min(r.Width / .Width, (r.Height - n) / .Height) .Width = .Width * x .Left = r.Left + (r.Width - .Width) / 2 .Top = r.Top + (r.Height - .Height) / 2 End With Next End With End Sub この"D:\画像\1\"の部分をフォルダ選択できるようにしたいので Dim s As String Dim t As FileDialog Set t = Application.FileDialog(msoFileDialogFolderPicker) s = "t" & .Cells(i, 2).Value & ".jpg" としたら「1004 PicturesクラスのInsertプロパティを取得できません。」と実行できません どうしたら"D:\画像\1\"の部分をフォルダ選択できるようにできるのでしょうか?ご教示お願い致します。
280 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 16:00:22.84 ID:nt1S72uw.net] >>272 Dim s As String Dim t As String With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub t = .SelectedItems(1) & "\" End With '途中省略 s = t & .Cells(i, 2).Value & ".jpg" じゃないかな? あと 元コードもそうだけど フォルダ内に その画像ファイルが存在してなかった時の対策も必要だと思うよ 同じエラーになるぞ それとも絶対 あるのが 確定してる?
281 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 16:45:49.33 ID:nMuhJunv.net] >>273 大変ありがとうございます! ただ、貼り付ける画像は複数あり、貼り付けるたびにフォルダ選択画面が出てしまいますので、一気に貼り付けられないものでしょうか? ファイルが存在してない時の対策は、セルの状態を色変えて罫線で斜線を挿入したいと考えてますが、まだそこまで進む前段階がクリアできないので困ってます よろしくお願いします
282 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 16:51:45.39 ID:nt1S72uw.net] >>274 ん? そこは分ってるとおもたよ フォルダ選択部分は Forループの外だよ ↓ここねw With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub t = .SelectedItems(1) & "\" End With
283 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 16:57:59.74 ID:nMuhJunv.net] >>275 あっ!できました!ありがとうございます!助かりました!
284 名前:デフォルトの名無しさん [2017/03/06(月) 23:29:36.96 ID:QCgyLcj6.net] こんにちは。 パワーポイント2013のVBAについて分かる方教えて下さい。 やりたいことは、グラデーションの塗りつぶしがあるシェイプのGradientStopsのそれぞれの色を変化させるアニメーションの方法です。 2013ではできないけど2016ではできる等の情報もあればお願い致します。
285 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 21:50:45.20 ID:DO0ivfK5.net] vbaだけでhttpサーバーって出来る?
286 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 23:04:04.36 ID:Tpob7EG8.net] 俺が手を下すまでもないな 答えてやれよ >>280
287 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 01:39:01.40 ID:UFk6xx1O.net] VBAだけってのが 外部コントロール使用禁止 API呼び出し禁止 なら不可能です
288 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 15:56:17.26 ID:9WwYB+FH.net] VBAの変数の値を次回の処理を行う時まで記録しておくのにセルに書き込みをしたりしていますが、 セルにアクセスするのを減らすためにセルに記録しなくて処理終了時に変数値をVBA内で保存しておいてくれる一次記憶領域みたいな物はないのでしょうか?
289 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 16:02:56.39 ID:9WwYB+FH.net] ちりも積もればの話ですが 足し算引き算割り算レベルの計算をセルに関数を割り当てて行うのと 同じ計算式を変数を用いてVBAで書いて実行するのとで、より処理速度が速いのはどちらでしょうか?
290 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 16:09:57.30 ID:Lq/WJuQk.net] >>281 セルでいいんじゃないの? ただそのIOは配列アクセスを使うべき ループで1セルづつ読み込むとかがナンセンス
291 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 16:14:42.36 ID:K8MFArI9.net] >>281 説明がいまいち分かりにくい。 次回ってのは何時のことを言ってる? グローバルな変数じゃダメなの? 次にそのブックを開くまで保持したいならセルってのも分かるんだが。 で、その場合にセルの代わりに保持したいならCustomDocumetProperties使ったりするかな。
292 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 16:27:32.06 ID:9WwYB+FH.net] >>283 ありがとうございます。 >配列アクセス 勉強してみます。 >>284 Bookを閉じずに他からデーターを取り込み再度VBA実行を繰り返します。 >グローバル変数 >CustomDocumetProperties 勉強してみます。 グローバル変数に代入した数値は処理を中断しても生き続けるのであればそれで解決しそうです。
293 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 16:44:07.10 ID:9WwYB+FH.net] >>284 プロシージャの上に定義すると処理が終了しても最終定義された内容は残ったままなんですね! 今まで処理を中断する必要がある場合は変数をすべてセルに書き出していましたが大発見です。ありがとうございました。
294 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 19:39:59.08 ID:9WwYB+FH.net] Public変数もしくは通常の変数の指定数の限界はあるのでしょうか? 問題なく動くレベルは何個ぐらいでしょうか? 50個 100個 1000個 10000個でも平気だっり? 実は 100000個以上でも問題ないとか?
295 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 19:51:50.86 ID:0T9WQSVM.net] >>287 使えるメモリは決まってる 変数の個数じゃなくてそれぞれのバイト数の合計
296 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 23:55:43.90 ID:K8MFArI9.net] >>287 グローバル変数(Public)は便利に見えるけどスコープを考えて必要無い所では使わない方が良い。 PublicかPrivateかプロシージャ内で宣言するかを意識して使った方が良いね。
297 名前:デフォルトの名無しさん mailto:sage [2017/04/10(月) 02:47:06.39 ID:AhmZ51rM.net] 日曜の午後からずっとVBAを書いてるけどまだおわらね〜 てかやればやるほど選択肢が爆発的に増えてきて一生かかってもおわりそうにね〜!w
298 名前:デフォルトの名無しさん mailto:sage [2017/04/10(月) 04:05:13.85 ID:sRLMXvmn.net] >>287 しかもEndやErrorで抜けたら破棄されるという罠
299 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 00:40:18.97 ID:egN7ZnVO.net] 素数や組み合わせ爆発のような数学の迷宮的な問題に陥って 一生かかってもコードを完成させるのは無理ですよみたいな場合もあるのでしょうか?
300 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 10:41:22.79 ID:Ei1BFwyD.net] >>292 数学的バックグラウンドがなければコードが書けないという類いの問題はあるね。 たとえばNP困
301 名前:難なやつ。 巡回セールスマンとかナップサック問題とか、ナーススケジューリング問題とか。 自力でなければ、それなりの回答が得られる解法(コード)が既に存在してるものもある。 [] [ここ壊れてます]
302 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 11:01:45.96 ID:o/k96Ri6.net] 問題を解く方法を考案するのと、その方法をコンピューター言語に翻訳する作業は別ですわ それぞれに異なった知識と才能が必要となりますので
303 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 11:03:15.94 ID:6dnWkPrh.net] >>291 End Subの行にブレークポイント、これ
304 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 22:41:46.94 ID:iuenojzm.net] パブリック変数で 1000個 10000個でも平気だっり? とかどんな拷問なんだよw
305 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 23:26:11.80 ID:92wBssf5.net] テストしてみたがパブリック変数500個は問題なく動いた。 もっと使ってる人いる?
306 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 19:40:41.67 ID:TpPjDerb.net] いらない
307 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:22:06.10 ID:BWuBR5xw.net] 変数の一部を変数にする事は出来ないのでしょうか?(代入 とかではなく) たとえば↓はイメージですが変数名の箇所を文字列をつなぎ合わせる時と 同じように変数をわりあてられないのでしょうか?(以下は動きませんがphpではこれができます。) dim aaa1 dim aaa dim no dim bbb aaa1=例文1 aaa=aaa no=1 aaa & no = bbb msgbox bbb ↓ 結果は「例文1」 と表示されますみたな、、
308 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:28:31.62 ID:BWuBR5xw.net] >>299 最終的には aaa1=「例文1」 aaa2=「例文2」 aaa3=「例文3」 ・ ・ とし aaa & no のno番号だけ差し替えて制御するみないな感じで使います。 ただしnoの番号は連続した数字ではなく他の集計結果からランダムに発生するため ループ処理等では成り立たず変数のように扱う必要があります。
309 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:10:11.53 ID:9tskJEPF.net] >>300 aaa1とかaaa2を変数として捉えず、文字列と数値を要素に持つ2次元配列と見れば良い で、データ全体を制御するときは、aaa1,aaa2...の2次元配列全てを要素として持つコレクションオブジェクトを生成して操作する
310 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:18:30.36 ID:TpPjDerb.net] >>300 Dictionaryのkeyにすれば良いんじゃね
311 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:25:23.50 ID:9tskJEPF.net] CollectionよりDictionaryだな、確かに
312 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 23:24:44.93 ID:3F+Ljh12.net] そういう質問、初心者によく聞かれるわ 普通は配列を使えと教えるもんだが
313 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 06:16:50.97 ID:zUhE/Mll.net] >>302 >>301 ありがとうございます。Collection Dictionary 調べてみましたが どちらも説明をざっと読んでも使い方が理解できませんでしたが挑戦してみます。 phpのように (aaa & no) = と変数名自体を複数の変数で合成する事は出来ないのですね。
314 名前:299 mailto:sage [2017/04/22(土) 08:27:20.54 ID:zUhE/Mll.net] >>300 >>301 >>302 >>304 aaa1=「状況に応じて変化する数値1」 aaa2=「状況に応じて変化する数値2」 aaa3=「状況に応じて変化する数値3」 ・ ・ すみません説明を単純にするために「例文1」としてましたが 変数に格納されるのは状況に応じて変化する数値(他の集計の計算結果)でした。 固定された文言であればDictionary keyで処理できるというのはわかりましたが 格納されている物が変化する数値の場合かつ 変数名を数字で管理(他の集計から3という結果が出たら→aaa3が適応されるみたいな) したい場合こういうことを実現する方法はありますでしょうか?
315 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 08:53:12.92 ID:MM2jcjjz.net] >>306 変数名を数字だけで管理する方法はない。 VBAの仕様上、できない。 というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。 やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。
316 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 11:27:30.44 ID:6RXuRSFv.net] >>306 Dictionaryのvalueは変更可能
317 名前:299 mailto:sage [2017/04/22(土) 15:29:06.19 ID:zUhE/Mll.net] >>308 >>307 理解するのにかなり時間がかかりましたがDictionaryなんとなくわかりました。 これって Dim とかPublicとかの変数とは別に存在できるんですね。 全く未知の分野ですが使ってみます。ありがとうございました。
318 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 20:43:48.30 ID:zUhE/Mll.net] Dim dic As New Dictionary Dim i As Integer dic.Add "キー1", "アイテム1" dic.Add "キー2", "アイテム2" dic.Add "キー3", "アイテム3" Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、 グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
319 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 22:48:51.75 ID:AOzJBbd9.net] >>310 プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
320 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 23:30:15.48 ID:zUhE/Mll.net] >>311 ありがとうございます。 今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして 全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
321 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 05:30:19.61 ID:t5ve42Di.net] >>312 Dim dic As New Dictionary の宣言を何処でしているかによるんじゃね?
322 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 10:16:09.39 ID:wfwXXeKO.net] >>312 標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
323 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 16:51:51.75 ID:fs201BJ1.net] >>311 引数に渡すってのを忘れてるぞ。 一番使われてるんじゃないか?
324 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 17:11:32.92 ID:yvJyPXpi.net] >>315 何の引数に渡すことを指してるのかな?
325 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 18:02:04.26 ID:fs201BJ1.net] >>316 プロシージャを跨ぐって話だろ。 別のプロシ−ジャに引数として渡せば形の上ではそれぞれのローカル変数でも値は保持されるだろ。
326 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 18:27:09.16 ID:yvJyPXpi.net] >>317 >>310 を読んでなんとなく、一個のルーチンのプロシージャ間の値の受け渡しの話ではなく、ルーチン内で一度AddしたDictionaryのKeyとItemを何らかの形で保存して、同じルーチンを再実行したときにKeyとItemを再利用することが出来るかどうかという話だと思ったんだが まぁ、オブジェクトプロパティへの値の保存も実際はそのオブジェクトを定義してるクラスのメソッドに引数を渡してるのと同じだから、変わらないといえば変わらないけど
327 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 17:33:41.10 ID:krqKI6DB.net] 超既出FAQですな。 『Public 宣言された変数の有効期間』 https://support.microsoft.com/ja-jp/help/408871 簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。
328 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 19:14:11.69 ID:AZu
] [ここ壊れてます]
329 名前:qyiJa.net mailto: >>319 俺は使う時にクリアされてるかチェックしてクリアされてたら再設定するようにしてるな。 値が0だったら値を取得するFunctionを呼び出すって感じ。 [] [ここ壊れてます]
330 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 22:13:43.74 ID:A3VkBONm.net] Publicな静的変数は使わない。 エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
331 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 02:16:02.91 ID:2iGvQ1xG.net] >>321 いや、それは格好悪いんじゃね? セルを使ったりCustomDocumentPropertiesも使うけど、それに合ったものだから使うわけでPublic変数に合ったものもある。 適材適所だろ。
332 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 20:51:55.45 ID:yS9f0RVc.net] ontime で実行するプロシージャって標準モジュールに書かないとあかんのか。 このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。って出た。
333 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 21:07:30.77 ID:JTnnq+Q0.net] >>323 スコープ 普通にCallで呼び出せる場所にないと実行できないのは、どの方法でも同じ
334 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 00:03:34.69 ID:Fw61rXsb.net] >>324 ThisWorkBookのモジュールからOnTimeでThisWorkBookのモジュール内のPrivate Sub を予約したんですが・・・これじゃ駄目なんですかね?
335 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 23:19:52.51 ID:Fw61rXsb.net] >>325 です OnTimeで実行予約するプロシージャを標準モジュールに移動したら動くようになりました〜
336 名前:デフォルトの名無しさん [2017/06/05(月) 21:02:56.92 ID:bd1ggU41.net] 特定の文字が含まれているセル(複数ある)を検索し、 検索されたセルを含む行全体(Entirerow)を同時選択する方法 以上お願いします。
337 名前:デフォルトの名無しさん [2017/06/05(月) 21:06:49.56 ID:bd1ggU41.net] その文字を含むセルを、行ごと削除したり、行ごとコピーしたりと、いろいろしたいので質問致しました。
338 名前:デフォルトの名無しさん mailto:sage [2017/06/05(月) 21:25:48.60 ID:nSGQpg3a.net] 鮮やかな丸投げっぷりにワラタ 作成依頼OKな Excel VBAスレと間違えてない?
339 名前:デフォルトの名無しさん mailto:sage [2017/06/05(月) 21:31:47.51 ID:tRFV5HQ5.net] >>328 とりあえず、複数行を選択するところをマクロの記録で見てみたら? ctrlキー押しながら選択するのとshiftキーを押しながらのとで。
340 名前:デフォルトの名無しさん mailto:sage [2017/06/05(月) 21:41:12.12 ID:jKyX/qwq.net] 検索対象のセル範囲でForループを回す セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく ループ終了後にSelectする 以上
341 名前:デフォルトの名無しさん [2017/06/05(月) 21:45:35.27 ID:epzJZZwH.net] >>327 Ctrl+Fで検索しろやボケナス ちゃんと行選択までしてくれるぜ
342 名前:デフォルトの名無しさん [2017/06/05(月) 22:37:03.17 ID:bd1ggU41.net] ごめんなさい、質問者です。 ここじゃなかったのですね。上に上がったやり方でできそうなのでやってみます。ありがとうございます
343 名前:デフォルトの名無しさん mailto:sage [2017/06/06(火) 05:49:03.11 ID:tznXutzN.net] 色々細かい条件でどんなコードが効率いいか、変わってくるでしょ。 例えばそのセルがあるのは、特定の行だけとか、検索文字列はセルに完全一致なのか含まれるのか、など。
344 名前:デフォルトの名無しさん mailto:sage [2017/06/06(火) 09:11:47.41 ID:YhE+Nuz8.net] 331だが、同じ行に該当セルが複数ある場合は無駄が生じるな 実現したい機能次第だが、工夫が必要かもな
345 名前:デフォルトの名無しさん [2017/06/07(水) 19:31:10.77 ID:e13xfCG0.net] はじめまして。以下2点、教えていただけると幸いです。 環境は、OS:Windows7, Excel2010です。よろしくお願いします。 1.プルダウンの初期値設定 セルA1にりんご、A2にバナナ、・・・のようにA列にある項目をプルダウンで選択したいです。 このとき、「A列のj行目(パラメータ選択可能)を初期値にしたプルダウンをB1に設置する」VBAのコマンドを教えていただきたいです。 2.ファイル名の変更 aaa.txtというファイルをデスクトップに出力するマクロを作れました。 このマクロ実行後、再度実行するとaaa(2).txtのファイルを、再度実行するとaaa(3).txtのファイルを出力・・・ このようなVBAのコマンドを教えていただきたいです。
346 名前:デフォルトの名無しさん mailto:sage [2017/06/07(水) 21:49:32.12 ID:nqbSOdK9.net] >>336 コマンドはありません
347 名前:デフォルトの名無しさん mailto:sage [2017/06/07(水) 22:23:27.64 ID:L3ua+fDn.net] >>336 txtファイルをデスクトップに出力っていう日本語の破壊力がやべぇ
348 名前:デフォルトの名無しさん mailto:sage [2017/06/08(木) 05:33:24.44 ID:1DKX/Vru.net] >>336 1 ・B1セルを選択してからマクロの記録を実行 ・入力規則でリストを選択にリストの内容でA列を選択する ・マクロ記録の終了をする ・できたコードを修正してA列の任意のセルをデフォルトにするように変更する 2 ・デスクトップにaaa.txtが存在するかチェックする。 ・存在しない場合はaaa.txtを作成して終了。 ・存在する場合はDo~Loop中にデスクトップにaaa(i).txtが存在するかチェックする ・存在する場合はiをカウントアップして次のループ ・存在しない場合はそのiを使用してaaa(i).txtを作成して終了。
349 名前:デフォルトの名無しさん mailto:sage [2017/06/25(日) 17:10:56.20 ID:/fEFwdln.net] A1セルに =NOW()-TODAY() と入力すると 現在時刻が表示されますが。 MsgBox Range("a1") とすると 0.0110212・・・と言ったような数値が出ます。 Dim now As Date now=Range("a1") と型を指定した変数に格納してやると MsgBox now で 21:49:32 といった一般的な時間表記を示せますが、 変数化を省略して MsgBox Range("a1")〜に補足コードを書くなどで同じ処理を実現する方法は無いのでしょうか?
350 名前:デフォルトの名無しさん mailto:sage [2017/06/25(日) 17:20:36.10 ID:A4A49pvi.net] MsgBox Range("A1").Text とか MsgBox Format(Range("A1"), "hh:mm:ss") とか
351 名前:デフォルトの名無しさん mailto:sage [2017/06/25(日) 17:26:03.97 ID:/fEFwdln.net] >>341 なんと!! 変数をだらだら定義すること無く綺麗さっぱり解決できました!ありがとうございました。m(_ _ )m
352 名前:デフォルトの名無しさん mailto:sage [2017/07/17(月) 17:20:20.62 ID:7pjXcMGR.net] プロシージャの中で1回しか使わないのに、わざわざ変数にするやつとかいるよね。(しかもハンガリアン記法で) 100行に満たない程度のコードなら、Withステートメント使ったほうがむしろ可読性は上がる。
353 名前:デフォルトの名無しさん mailto:sage [2017/07/17(月) 17:25:26.05 ID:l3sSLpQS.net] マシンパワーが貧弱だった大昔ならともかく、今時はリソースを気にする必要なんてないんだから、可読性を最優先で記述するべきだよ。
354 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 22:54:52.46 ID:EbUz/UVB.net] >>343 ああ、俺だ。 Ubound(配列)とか、For〜Nextの中で何回も実行すると、 なんか遅いような気がして、一度変数に入れちまう。
355 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 03:07:48.10 ID:/3vdoRrW.net] >>345 何回も実行するなら変数に入れたほうがいいんじゃね?
356 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 23:04:37.73 ID:RmCwgyLh.net] >>345 (1) For I1 = 1 to UBound(xxx) For I2 = 1 to UBound(xxx) (2) J=UBound(xxx) For I1 = 1 to J For I2 = 1 to J 普通に考えて本のチョット早いと思われますが、記述の労力ほどじゃない。 他の方の書いてますが、今は、処理速度が物凄く早くなっています。 気にしなくていいと思います。 ただし、私はEXCELでVBAを書くのですが、シートのセルに書き出すと物凄く遅くなる。 VBAの配列とかメモリーならばほとんど気にしなくていいです。 ですから、メモリー内で処理して最後の最後にシートに書くようにしてます。
357 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 08:26:52.52 ID:tqo/3wkP.net] >>347 > ですから、メモリー内で処理して最後の最後にシートに書くようにしてます。 基本中の基本だからいちいち書かなくてよろし
358 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 10:53:29.80 ID:WmSrV0rS.net] アノニマスに入会したいんですがVBA知ってるだけで入れますか? あと入会ってどうやんの? スーツ着て履歴書持って事務所に面接に行くの?
359 名前:デフォルトの名無しさん [2017/09/05(火) 12:25:17.40 ID:P2jRu54V.net] たまにハローワークに求人出てるから行ってみれば?
360 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 02:10:43.27 ID:2wFcaigK.net] 超初心者です 同じブック内の複数のシートにある顧客データをUserFormを用いて(検索するイメージ)抽出し、別のシートへ出力するコードを書きたいのですがいまいちわかりません。 大変困っているのでヒントをくださればありがたいです。
361 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 02:30:21.88 ID:U3/YorLf.net] >>351 超初心者には無理です パソコン教室に通ってせめて初級をクリアしてから質問してください
362 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 04:10:40.96 ID:2wFcaigK.net] >>352 返信ありがとうございます Excel自体触ったことない超初心者ですが頑張っているところです( ??? )
363 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 08:28:28.15 ID:GFFccSR9.net] >>351 自称初心者がどこでUserFormとか覚えたの? まずはシート上でやってみようね
364 名前:デフォルトの名無しさん [2017/09/12(火) 12:27:40.35 ID:7XJfZGpJ.net] どこで覚えようとお前の知った事じゃねえだろw なんだこのバカはwww
365 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 13:06:30.39 ID:N1ygkJfx.net] >Excel自体触ったことない超初心者 ユーザーフォームを作ったことはあるのか? 無けりゃ、この時点でやろうとしていることはもう無理 VBAはほんの少しでも書いたことはあるのか? まぁ最初は>>354 の言うようにシート上で実現して、それをユーザーフォームにもっていくのが順当 というか触ったこと無いって時点で釣り確定
366 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 16:38:53.70 ID:2wFcaigK.net] VBA参入門書とネットの知識を詰め込みました。 Excel初心者は本当です。友達に教えてもらいつつやっています。気分を害された方、すみません。 >>356 さん非常に分かりやすいです。 二日間くらい最初からコードを書こうとしてもがいていましたが、マクロの記録が使えそうな気がします。 そのコードをいじってボタンで起動するユーザーフォームとくっつけるイメージで挑戦してみます。
367 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 16:41:08.80 ID:2wFcaigK.net] >>354 さんもありがとうございます!参考&励みになります
368 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 20:34:49.57 ID:/wKXVszF.net] このスレで一番の基地外が満を持して遅れて登場
369 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 20:51:47.27 ID:U3/YorLf.net] 俺のことかな?
370 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 00:17:05.57 ID:DHqL5rdG.net] >>357 ユーザーフォームでその機能を実現する必然性が感じられない フィルタオプション機能を用いて、検索結果の出力先を新規シートに設定するだけで事足りると思うぞ
371 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 07:47:53.75 ID:w7wWQUJY.net] フィルタオプションとマクロの記録で8割方完成できるな
372 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 10:19:31.10 ID:wFtq+9vG.net] ADOの事でちょっと質問です 変数を定義する時に Dim wkR as New ADODB.Recordset ってするんだけど、RecordsetとRecordの違いって何?
373 名前:あ mailto:sage [2017/09/15(金) 10:57:55.87 ID:oEkV+GvG.net] matsuri.2ch.net/test/read.cgi/morningcoffee/1472464096/
374 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 06:42:59.71 ID:xbe9SlrW.net] >>361-362 ありがとうございます、簡単なプログラムですが完成して感動しました。 Ifとマクロの記録が万能すぎることを肝に銘じてこれからもがんばります( ??? )
375 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 15:10:56.93 ID:7Xxpypu9.net] >>365 万能過ぎないけどね。 そればっかり使ってる人は永遠に初心者なままだし、色々な面で出来の悪いプログラムになる。 自動生成されたコードのそれぞれの意味を理解して自分なりに書けるようになると上達する。 例えば Range("B4").Select Selection.Value=10 のようなコードが生成されると思うけど意味を考えたら Range("B4").Value=10 で良いとわかるよね。
376 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 20:44:49.78 ID:ydCO3vgD.net] >>363 Recordset オブジェクト https://msdn.microsoft.com/ja-jp/library/cc364264.aspx Record オブジェクト https://msdn.microsoft.com/ja-jp/library/cc364270.aspx
377 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 23:50:59.42 ID:XctjYupl.net] すみませんお力添えをお願いします! エクセルマクロ(VBA)の件でお尋ねいたしたく思います! まずグラフの系列名はセル参照で表示させてます シート名:あいうえお 適用グラフ:グラフ4 系列範囲:A11:Z11 必要なデータ選択は全ての系列で済ませています あとはグラフで不要な系列を削除したいため、グラフに乗せたくない系列名は”×”になるようにしてます この系列名”×”をVBAで自動的に削除させることは可能でしょうか? またグラフは別シートの数値入力をもって自動作成される仕様にしているので、トリガーは設けません デフォルトだと全部”×”のため(初めは数値データの入力がないため) 数値が入ると正しい系列名に変更されるため、VBAではまず”×”で削除して、”×”以外の系列名に変わったら復活するという構想を練っています とりあえず、まず”×”を消すコードを見よう見まねで書いてみたのですが動作しませんでした 消すのは良いですが復活させるのも組み込むとなるとちんぷんかんぷんです 是非ともご教示お願いします! Sub test() Dim d As Long Dim i As Long Dim j As Long For i = 2 To Sheets.Count d = Range("A11:Z11").End(xlUp).Row With Worksheets(i).ChartObjects("グラフ 4").Shapes.AddChart.Chart .ChartType = xlLineMarkers For j = .SeriesCollection.Count To 1 Step -1 If .SeriesCollection(j).Name <> "×" Then .SeriesCollection(j).Delete End If Next j End With Next End Sub
378 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 20:55:54.78 ID:2SFxAhMD.net] >>367 説明サイトへのリンク、ありがとう。 取り敢えず、「階層構造のデータ間を移動する手段として」のRecordオブジェクトは使うこと無さそうw
379 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 01:17:31.22 ID:2dxgF4qE.net] IF文初心者ですが 3つ数字の中から一番小さい数を判定したいのですが、 elseや入れ子で複数書けば判定できるというのは推測がつきますが 最も簡潔に記述するとしたらどんな記述方法がありますでしょうか? 例) 33 12 3 ↓ 3を抽出
380 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 05:19:03.75 ID:mkPuPLWs.net] >>370 最小値 = WorksheetFunction.Min(Array(33, 12, 3))
381 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 05:37:31.94 ID:mkPuPLWs.net] >>370 x = 33 y = 12 z = 3 If x < y And x < z Then 最小値 = x ElseIf y < x And y < z Then 最小値 = y Else 最小値 = z End If
382 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 21:28:21.10 ID:j1SDXypf.net] >>372 >>371 明確な答えをありがとうございます。 やはりIFの場合は372が妥当なようですね。
383 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 22:56:33.81 ID:8rkXkN3+.net] >>372 は < じゃなくて <= にしないと誤判定する
384 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 06:56:36.59 ID:zUC9dslV.net] 例題の対象が3ではなくて1000とかに増えたら破綻するだろw
385 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 07:13:14.29 ID:TPoybrYY.net] >>375 数字3つという前提を勝手に変えるこういう馬鹿はなんだろう
386 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 09:34:43.90 ID:KphHXryq.net] 汎用性を考慮しないのか。 なかなかひどい。こういう人もいるという参考になったわ。
387 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 09:37:13.81 ID:oVXNeyl2.net] ソートアルゴリズム書くだけやん
388 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 09:54:47.89 ID:yLI54yGL.net] 372のはアルゴリズムと言うよりその場しのぎの対応
389 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 10:13:30.00 ID:yLI54yGL.net] 配列に入れてループで最小値と比較して小さければ最小値を更新していくのが定石なのでは。
390 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 10:29:30.23 ID:WIc1mdfR.net] だからMin関数で一発なのに、無駄に車輪の再発明をしたがるやつが多くてリンダ困っちゃう
391 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 10:32:40.77 ID:4is4PUWl.net] >>379 順次比較も立派なアルゴリズムの一種なんだが
392 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 14:42:52.69 ID:KphHXryq.net] これはひどい
393 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 14:57:48.38 ID:WETwNkme.net] IF初心者とか言ってる人に何言ってるんだか あといつからこのスレはEXCEL VBA限定になったんだ
394 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:39:03.91 ID:zUC9dslV.net] >elseや入れ子で複数書けば判定できる >最も簡潔に記述するとしたらどんな という問いに、elseや入れ子の回答するのは無能以前に答えになってないのとちがう?
395 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 22:15:07.62 ID:250/7oh7.net] え?え?日本語理解できてる? 質問には「Elseを使わずに」なんてどこにも書いてないぞ ざっくり意訳すれば「IfとElseの数を最小に」する方法を聞いてるんだろ
396 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 06:12:18.34 ID:6cN/4Ux4.net] 372のは374が書いてるように、例えば x=1 y=1 z=3 と入れただけで誤判定する。アルゴリズムの最低限を割ってるぞ。 372がベストアンサー(笑)だと質問者が思ったなら気の毒なので念のため。
397 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 07:50:16.98 ID:nAanI8EG.net] そもそも計算量も最少じゃないしな 普通に 最小値 = x If y < 最小値 Then 最小値 = y If z < 最小値 Then 最小値 = z ってやる方がわかりやすい
398 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 10:07:44.78 ID:hX9NlXap.net] うん、ベストアンサーはMin使った方だね。 俺だったら迷わずMin使用する。 同時にMin使わない方法も考える。 配列ループも考えた。 でも、別にIf文使っても良いんじゃない? そんな目くじらを立てるようなことじゃない。
399 名前:デフォルトの名無しさん [2017/09/23(土) 12:22:56.52 ID:/uotOgAp.net] >>386 が分かってないバカ多すぎw
400 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 14:36:58.57 ID:OMtgmcpv.net] だから372はif elseだとしても最小(計算量的に)の答えにもなってないし、そもそも答えとして間違ってるって話だろ
401 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 17:06:13.24 ID:HTwX+3ra.net] それは勉強する奴と仕事にしてる奴のスタンスの違いだな。 仕事にしてる奴はIfを使わなきゃならないなんてことに遭遇しないから、はなっから抜けてる。
402 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 23:00:39.63 ID:9AVefP05.net] 必ずIfを使う縛りなら>>388 がベストアンサー ソートアルゴリズムの最初の1回目のループを展開してるだけなんだけど、基本中の基本のやり方
403 名前:デフォルトの名無しさん [2017/09/23(土) 23:28:57.04 ID:UvR7p8sn.net] >>392 if文の使い方を聞かれてmin()関数を教えるような人はプログラムを仕事にしないで欲しいのです いえ、仕事をしないで欲しいのです
404 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 23:49:29.12 ID:9AVefP05.net] 仕様書はちゃんと読んで、条件は無視しちゃいけないよね
405 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 02:12:05.73 ID:3B64fACL.net] 勉強のため何が何でもIfだけで解決しなきゃいけなかったのか、 まだ初心者だからMinという便利な物があることを知らなかったのか それによって変わってきちゃうからー
406 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 08:43:50.06 ID:LX+6AD0q.net] >>395 仕様書ならそれが正解 しかし案件定義なら顧客が何をしたいかを読み取ってより良い方法を提案することも必要 そもそも>>370 にはIf使えとは書いてないし
407 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 09:20:40.69 ID:SDtHFGLj.net] >>394 分かってねえなあ。 勉強を教える仕事じゃないならユーザーにとって一番使いやすいとか、速度が速いとか、ユーザーが満足するようなものかどうかが大事なのであって、どんなコードじゃなければならないとかの要望は普通無い。 そして、メンテナンス性とかコードの書き方に関してもMinの方が良いとなればそもそもの問い掛け自体仕事で発生することは無い。 そして実際には、何でMinじゃ駄目なのと問い掛けられない奴は仕事の出来ない奴ということになる。 (もちろん明確に理由が有るならIfで書く。) 指示通りにしか作れない奴じゃ単なるコーダって奴になるしかない。 仕事ではMinを使わないなら明確な理由が存在するし、打ち合わせなんかのやり取りで既に意思統一されてる筈だ。 つまり今回の問い掛けのような事態は存在しない。
408 名前:デフォルトの名無しさん [2017/09/24(日) 10:07:44.74 ID:lViLIhLn.net] >>393 だな、簡素で分かりやすく奇麗なコードだ
409 名前:デフォルトの名無しさん [2017/09/24(日) 15:00:43.73 ID:3BjqQEbI.net] >>398 なんか仕事をしてる体で話してますけど あなたの想像上の仕事では自分にとって都合の悪い事態は存在しないのですね さぞかし楽しかろうとは思いますが あなたは社会に出ないでください
410 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 16:46:42.97 ID:jWeMnfEt.net] >>400 仕事をしたことの無い奴には分かるまいw
411 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 05:55:55.96 ID:mrDDFdOE.net] こっちを再利用?
412 名前:デフォルトの名無しさん [2017/11/08(水) 09:41:10.42 ID:VRSOCYqC.net] 再利用したいけどExcelの話をしたいときに困るのかな
413 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 10:15:34.15 ID:6WBHyYXn.net] そのうち立つんじゃね
414 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 11:10:32.82 ID:JKxKdsR3.net] 「Excelの話」したいんだったら総合相談所でやれ
415 名前:デフォルトの名無しさん [2017/11/08(水) 11:59:42.12 ID:VRSOCYqC.net] なるほどなるほど
416 名前:デフォルトの名無しさん [2017/11/08(水) 12:50:47.32 ID:+KUB1/9h.net] 早速質問 今vbaでマップ使って とある表の集計を行なっております 一つのkeyに対しアイテムが複数あるので 配列で入れようと思ったのですがうまくいきません 何か良い方法はありませんか?
417 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 16:45:58.99 ID:pE/cp7rq.net] もう少し具体的にどうぞ
418 名前:デフォルトの名無しさん [2017/11/08(水) 21:23:36.05 ID:+KUB1/9h.net] >>408 一つのキーに対して複数のアイテムがある これをどうにかこうにか出来ないか やりたいことは キーが重複された二次元配列を グループ化&合計を取りたい
419 名前:デフォルトの名無しさん [2017/11/08(水) 21:28:10.43 ID:aQlO1Uq5.net] >>409 エクセルならピボットテーブルでいいんじゃない?
420 名前:デフォルトの名無しさん [2017/11/08(水) 21:32:09.19 ID:+KUB1/9h.net] >>410 自動で計算させるんだよ
421 名前:デフォルトの名無しさん [2017/11/08(水) 21:33:56.61 ID:aQlO1Uq5.net] >>411 ピボットテーブルをvbaで作ればいい
422 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 21:38:43.05 ID:vt31E4Mm.net] エスパーじゃないんだから、もっと具体的に説明しないと、何がしたくて何ができないのか判んないよ。 そして多分だけど普通にifで分岐するプログラムを書くだけだと思う。
423 名前:デフォルトの名無しさん [2017/11/08(水) 21:40:37.09 ID:0sSRKP/b.net] いや多分
424 名前:forでループするプログラムを書くだけだと思う [] [ここ壊れてます]
425 名前:デフォルトの名無しさん [2017/11/08(水) 22:38:17.07 ID:+KUB1/9h.net] データシート キー 金額a 金額b 1 10 20 2 20 50 1 30 90 結果(期待) キー 金額a 金額b 1 40 110 2 20 50 上のような感じのシートがあって 集計かけたり 平均とったり 最大値だったりしたい
426 名前:デフォルトの名無しさん [2017/11/08(水) 23:08:47.37 ID:aQlO1Uq5.net] >>415 そのくらいの事を自分でできないなら ピボット使った方がいいと思うぞ バグって計算結果が合わないから
427 名前:デフォルトの名無しさん [2017/11/08(水) 23:25:51.57 ID:0sSRKP/b.net] そのくらいの事を自分でできないから質問してんだろ そのくらいの事を理解できないなら質問スレに来ない方がいいのに
428 名前:デフォルトの名無しさん [2017/11/08(水) 23:38:17.91 ID:aQlO1Uq5.net] そのくらいの事も判らない人にも実現できる方法を提案してるだろ
429 名前:デフォルトの名無しさん mailto:sage [2017/11/09(木) 00:17:55.65 ID:hDRDp7cw.net] https://i.imgur.com/wtkTdlA.png 上のように各列の情報に応じて、一定の条件にヒットしたら評価欄に追記、ということをしているのですが、 上手い書き方が思いつかず、冗長で読みにくいコードになってしまいます https://i.imgur.com/cE0kOho.png どうすれば綺麗で読みやすいコードになるでしょうか? 特に、変数(ここでは「評価」)の参照先のセルに書き込みつつ、変数の値自体も更新するスマートな方法と If文で2つの条件が当てはまった場合に両方の処理を実行させる(ここでは40点以下と60点未満のIf文を一つで済ませるとか)方法があれば知りたいです
430 名前:デフォルトの名無しさん mailto:sage [2017/11/09(木) 03:11:02.61 ID:HAMnFTNh.net] >>419 配列を使え あとソースを読んだり修正したりやりにくいから画像にせずそのままテキストとして貼ってくれ 科目 = Array("国語", "算数", "理科") For j = 0 to 2 点数 = i.Offset(0, j + 1) If 点数 <= 40 Then i.offset(0, -1).Value = i.offset(0, -1).Value & 科目(j) & "の点数が以下略" & vbCrLf みたいな感じで教科の数に関わりなく記述を1回にできる 条件が3つ以上ある時はCaseで分ける方法もあるけど、どんどん文字列を追加するならIfを並べる今の書き方で別に悪くない
431 名前:デフォルトの名無しさん mailto:sage [2017/11/09(木) 08:39:48.02 ID:m3IDSHjM.net] ありがとうございます、やってみます (コードは行数制限とインデントが反映されなかったのでつい画像に…すみません)
432 名前:デフォルトの名無しさん [2017/11/10(金) 08:15:39.86 ID:vvDXnBRS.net] オートフィルの連続データでA1が0なら終わりでそれ以外なら下にオートフィルの連続データを追加して行くってどうやればいい?
433 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 08:52:12.12 ID:EDTrdPIL.net] 何をどこまで追加すんの?
434 名前:デフォルトの名無しさん [2017/11/10(金) 09:18:59.30 ID:vvDXnBRS.net] 下に一つオートフィルの連続データを追加してもしもその数が0以外ならばその下に一つづつ追加してもし0になったら終わるってことです オートフィルの連続データまでは成功しました!
435 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 12:58:08.94 ID:MIqJX5DT.net] >>424 何をやりたいのかさっぱりわからんから > オートフィルの連続データまでは成功しました! のコードを晒してくれ
436 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 22:07:12.41 ID:KbRkXeO5.net] 何をどーしたいのかよーわからんが、 オートフィルの連続データが完成したならDo While Loopでも使えばいいんじゃね
437 名前:デフォルトの名無しさん [2017/11/11(土) 10:59:01.85 ID:t1iacSS7.net] そうですね連続データと探す作業分けてDo until使ってみたら目的は達成できました ありがとございます
438 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 11:42:09.40 ID:DcGHOE5h.net] 漠然とした質問で申し訳ない コレクションというのがあるけど、その利点というかこういう場合に使うとかという のを教えてくれないだろうか。配列は動的配列も含めてよく使うけどコレクション というのはあるのは知ってるけどどういう場合に使うものなのか判らない。 (まぁそれでも何とかなってるということは今の時点ではそれでも問題ないって ことでもあるんだけど)
439 名前:デフォルトの名無しさん [2017/11/16(木) 12:38:12.83 ID:Xd3mhum+.net] >>428 Dictinonaryだとキーが重複してたらエラーになるから 重複させたくない場合は便利だと思う あと既にそのキーが登録してあるか調べるメソッドがあるから便利 配列でも実現出来るけど生産性の問題だと思う
440 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 12:40:16.53 ID:+IKZz2Nz.net] >>428 Excelならコレクションは知らないうちに必ず使ってるから心配しなくてもいい オブジェクトを複数まとめた物がコレクションで、例えばワークシートオブジェクトをまとめた物もコレクションの一種 新規ブックを作るとワークシートが3枚あるじゃろ?それがもう既にコレクションなんだわ 名前をよく見ると「Worksheets」って複数形になっとるじゃろ?これが「複数まとめた」コレクションを示しておるのじゃ
441 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 16:08:34.06 ID:mcjOn36E.net] >>428 コレクションの便利さを実感できるのは、For Each 〜 Nextとか
442 名前:デフォルトの名無しさん [2017/11/16(木) 17:01:22.70 ID:yjV64GpF.net] For Each 配列でも使えるけどね
443 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 19:57:40.06 ID:NwFToy+4.net] 広い意味では配列もコレクション 元質問のコレクションが何指してるか質問からは分からん
444 名前:デフォルトの名無しさん [2017/11/16(木) 22:05:24.15 ID:CQAbf3aD.net] >>433 どの言語でもコレクションの定義は曖昧だからなあ。 配列のように物理的に連続したメモリ領域で動かせないものが配列。
445 名前:428 mailto:sage [2017/11/17(金) 16:52:50.63 ID:wkN6jGAZ.net] 気付かないうちにコレクションを使ってたってのは、あぁそうなのかって感じですけど >元質問のコレクションが何指してるか 思い浮かべてんのは連想配列とかディクショナリとかってやつですかね。 ディクショナリが重複チェックにも使えるってのは知りましたが。 今現在動かしているのをディクショナリに変えて見ようかなとと思ってます。 どちらにしろ自分で判らないことにはすすまんので。 後、曖昧模糊とした質問に答えてくれた皆さん、ありがとう
446 名前:デフォルトの名無しさん [2017/11/17(金) 18:29:39.77 ID:71HLXjvB.net] 連想配列は配列と言いながら実体はコレクション
447 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 09:55:58.36 ID:8LVfn2cG.net] 配列数の制御がめんどいし 個々のデータ型も合わせんでいいし
448 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 20:25:41.56 ID:TCtIBT5G.net] 感覚的な話になるけど、例えばA列、B列、C列には○と×が入っててD列には何かの名前が入ってる時に、A、B、Cの組み合わせが×、○、○の時のD列の名前を表示したいとするわな。 こういう場合は一行ずつ見て行って×、○、○の組を探すわな。 こういう場合はFor Next使うわな。 つまり普通の配列が感覚に合う。 一方、A1:F100の範囲の各セルで1つだけ○、他は全て×の時に○のアドレスを知りたいなんて時には見つかるまで全てチェックすれば良いわけで、どう見ていくかなんて関係無いわな。 こういう場合はFor Each Next使うわな。 つまり連想配列が感覚に合う。
449 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 22:00:10.14 ID:jY4FOG+m.net] >>438 そんなもん普通はvlookup使うわな。
450 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 09:52:50.14 ID:6BLE5ZLY.net] >>439 ばーか。 感覚を例として挙げてることが分からないバカは黙ってろ。 もっと上手い方法があるだろうことは最初から分かってる。 順番を意識しないIteratorの感覚を説明してる。 コレクションにだって順番は実際はある。 しかしそれを意識しないような場合にぴったりということだ。
451 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 11:39:33.25 ID:VyTKZ5qI.net] ああ言えばこういうわな
452 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 19:55:38.19 ID:9xFKx2hL.net] 他人の回答の批判とかするほうがおかしいね 質問に対して自分の考えで回答すればいいのに
453 名前:デフォルトの名無しさん [2017/11/20(月) 20:06:38.53 ID:Pkea+7u9.net] 適当に批判してやらなきゃお前ら好き勝手に質問と関係ない事ばかり言うじゃん 批判してくれる奴に感謝しろよw
454 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 22:04:34.15 ID:9xFKx2hL.net] 質問と関係ないこと言ってもいいと思うけどなんでそれが駄目なのかな?
455 名前:デフォルトの名無しさん [2017/11/20(月) 22:24:58.18 ID:Pkea+7u9.net] >>444 自分は質問と関係ない自分語りするけどそれを批判されるのは許せないってか? どんだけワガママに育てられたんだお前は
456 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 23:53:15.67 ID:9xFKx2hL.net] >>445 感謝しろよ
457 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 12:35:10.96 ID:rUGEU7g7.net] ドカタ仕事の憂さ晴らしをここでやるのはやめてほしいと思うのです 汚い言葉を使うのは本人は無頼漢的にイケてるつもりかもしれないけど 側から見ると貧乏くさいのです
458 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 15:23:49.10 ID:3jZS2ju5.net] のです
459 名前:デフォルトの名無しさん mailto:sage [2017/11/30(木) 12:22:49.90 ID:xlQjmi4Q.net] accessの条件付き書式について質問です。 FormatConditions.Add(acExpression,, の後の式は変数を展開してくれないでしょうか? また、関数の呼び出しも出来ないでしょうか? 例えばmonth関数は呼び出して戻り値が得られるのですが、自作関数だと呼び出せなくて困っています。
460 名前:449 mailto:sage [2017/11/30(木) 21:43:31.97 ID:xlQjmi4Q.net] 解決しました。関数使えますね。変数はまだ試していませんが、たぶんダメでしょうね。
461 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 18:18:22.33 ID:pnEu13zx.net] Includeのようなことはできないでしょうか? 参照設定ではありません。 現在、ユーティリティ関数を集めたxlamファイルがあるのですが、中身が膨れ上がってきました。 機能単位でファイルを分割したいのですが、 そうすると今まで参照設定でutility.xlam1つで済んでいたのが、 utility_picture.xlam utility_text.xlam utility_workSheet.xlam ... と、いくつも参照しなくてはならなくなります。 utility_xxx.xlamをすべてインクルードした1つのファイルを作り、 それを参照すればすべて使える、というようにしたいのです。 こういうことはできるでしょうか。
462 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 18:51:00.09 ID:eRljVU/z.net] 似たようなことはできるんじゃね
463 名前:デフォルトの名無しさん [2017/12/01(金) 19:38:52.29 ID:xB5YUWoV.net] >>451 ひとつのxlamがいくつの標準モジュール、クラスモジュールを持ってるの? VBAでそんなに大きくなるイメージがいまいち湧かないんだが
464 名前:デフォルトの名無しさん [2017/12/01(金) 19:54:29.89 ID:WVxyYcg9.net] なんでも詰めこめばいくらでも大きくなるだろw どんだけ貧困なイメージ力だよw
465 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 22:49:56.60 ID:kRHH2X4z.net] なんでも詰め込んで大きくなったならダイエットしろというアドバイスになるだろw
466 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 00:01:54.31 ID:ab3YxIeg.net] ダイエットするとチンコも細くなるんじゃね
467 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 00:51:50.91 ID:aL/u+cy3.net] >>451 そういう運用は良いのかという問題がある。 それぞれのアドインがバッティングしないのなら、そもそもアドイン1つに纏めるべきじゃね? カテゴリが別だからとか色々理由が有るんだろうけど、その理由がそのままいくつも参照すべきという理由になるだろ。 アドインを1つに纏めるべきかいくつも参照すべきのどちらかじゃね?
468 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 10:54:25.96 ID:7He58R5A.net] >>457 ・プロジェクトエクスプローラが縦に長くなりすぎて使いづらい。 ・巨大なクラスになるとfacadeパターンを使って分割しているのですが、 その際に処理を委譲するクラス名にxxx_reader, xxx_outputter等つけています。 ファイルを分けられれば単にreader, outputterで済むのですっきりさせたい。 この辺が分けたい理由です。 触るのが久しぶりだったので忘れていたのですが、a→b→cで参照が連鎖している場合、 a→cの参照がないとaからcの関数を呼び出せないだけで、プログラム自体は動くんですね。 いくつも参照でやってみようと思います。 >>453 単一目的のマクロ(そのutilityを呼び出す側)はそれほど大きくならないのですが、 画像操作、データシート処理のラッパー、デバッグ機能など 汎用的に使える機能をutility一つにまとめて行ったら大きくなってしまいました。 この辺を別ファイルにしようと思っています。
469 名前:デフォルトの名無しさん [2017/12/02(土) 12:26:31.44 ID:zSxtsSJv.net] どうせ使う時は全部必要なんだろw 無駄なことすんなw
470 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 13:17:30.17 ID:7He58R5A.net] 使うときは割と全部必要ですが、細かく分かれていないと 機能追加やリファクタリングが面倒なんですよ。 モジュールをディレクトリ分けしてツリー構造にするような ことができれば一番いいんですが。
471 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 00:26:04.64 ID:R5bnWQiD.net] 出来るかどうか知らんが 親のユーティリティで子を自動的に参照設定すればいいんじゃね たしか参照設定もVBAからいじれたはず
472 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 12:49:30.75 ID:C5q9p8Fb.net] ほまは
473 名前:デフォルトの名無しさん [2017/12/09(土) 18:42:21.44 ID:YxeiwW1g.net] Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) Dim objMe As Recipient Set objMe = Item.Recipients.Add("domon@sapporotakusho.co.jp") objMe.Type = olBCC objMe.Resolve Set objMe = Nothing End Sub 検索すると出てくるこのプログラムだと、 再送しようとした場合、BCCが複数追加されてしまいます Outlookで自動的にBCCを設置するプログラムは調べたら乗っているのですが BCCに既に設定したいアドレスがあった場合は追加処理をしないというプログラムを追加したいです
474 名前:デフォルトの名無しさん mailto:sage [2017/12/09(土) 22:22:36.98 ID:kQB3PqQK.net] >>463 変数objMeを宣言している行の直前に以下の処理を追加 Item.BCCプロパティに設定されている文字列を取得して、その中にdomonなんたらっていうアドレスが含まれているかどうかをInStr関数で調べる 含まれていたらExit Sub
475 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 10:15:21.59 ID:DS9ojUbh.net] ありがとうございます 間違えてメールアドレスそのまま載せてしまいました やってしまった… もう一度頑張ってみます
476 名前:デフォルトの名無しさん mailto:sage [2017/12/16(土) 05:30:44.06 ID:LzUTFJWj.net] 滅入るよね
477 名前:デフォルトの名無しさん [2017/12/18(月) 22:21:50.88 ID:gUtmU3pD.net] Excelに「Python」搭載検討 Microsoftがアンケート実施中 https://headlines.yahoo.co.jp/hl?a=20171218-00000045-zdn_n-sci Python知らんけど余計なことすんなボケ
478 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 07:02:00.39 ID:hrV3NPqq.net] VBAとPythonが併用できるのかな? 前例あるの?
479 名前:デフォルトの名無しさん [2017/12/19(火) 08:02:47.16 ID:QIKPQsgo.net] 一営利企業の一製品に過ぎませんから
480 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 06:37:14.56 ID:LSGNQ/gQ.net] ざんねん!
481 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 11:51:23.41 ID:3p
] [ここ壊れてます]
482 名前:B/qkZc.net mailto: python入る言うてもどのバージョンかとかライブラリかとかアップデートはするのかとか色々課題あるだろ [] [ここ壊れてます]
483 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 12:20:39.14 ID:HAPJI9RJ.net] 質問なのですが、別表の項目から他の表の項目(セルの位置)にデータを飛ばしたいんですが、できますか?
484 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 12:55:31.94 ID:MSU0yE0z.net] できます。
485 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 13:07:55.93 ID:HAPJI9RJ.net] ご教授ねがいたいのですが
486 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 13:19:32.33 ID:Hqq1J0vI.net] ×ご教授 ○ご教示 あと、見も知らぬ他人にタダで教えてもらうんならそれ相応の作法は必要じゃないのって、端で見てて思う
487 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 13:38:48.56 ID:ULmYwE81.net] >>472 もっと具体的にどんなのが作りたいか書いてもらわないと難しいです。 5列目を変更した時に同じシートの1列目を選択するようにしたい、とか。 あるいは、別のシートのA1セルを選択したいとか。 飛ばすといっても、そのタイミングが変更した時なのか、選択したときなのか、特定の数値が入ったときなのか。
488 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 14:35:16.74 ID:HAPJI9RJ.net] こんな感じの表Aがあって、似たような表Bが別シートにあるんですけど、 表Aのセルの色を付けると同時にB表のセルのイロを変える または、セルの文字も一緒に持ってくる できますか? https://i.imgur.com/u3mc1ot.jpg
489 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 14:36:19.20 ID:HAPJI9RJ.net] すいません、よろしくおねがいします
490 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 16:44:16.87 ID:WTDPcIn+.net] できるけど、コード教えてもらって、それを標準モジュールなり、sheet1モジュールなりに書き写せます? それを使いやすいように改良できます?
491 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 17:08:48.29 ID:WTDPcIn+.net] できるって書いたけど、色を変えるのをイベントにするのは無理だから、マクロをボタンに登録するか、何かほかのイベントに割り当てるかしないとダメだわ。
492 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 17:26:04.37 ID:HAPJI9RJ.net] 書き写しくらいはできます!
493 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 18:45:37.13 ID:/25QAGMM.net] >>477 RaiseEventを使う
494 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 19:01:57.40 ID:KaDWqQ6/.net] >>482 お忙しいのにみなさんありがとうございます ちょっと詳しく説明すると、こんな感じです 左のsheetの表は一項目につき3段、その3段目の情報で仮にA,Bが記載されてある色つきのセルの情報のみを抜き出し、右にある別sheetの表に反映させたいのです 分かりづらかったらすいません どのように組めば行けるのか、詳しく教えて頂くとありがたいです https://i.imgur.com/M5bti06.jpg
495 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 08:27:26.24 ID:zry4uQ/L.net] 指1本で核ボタン押せる
496 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 08:28:00.51 ID:zry4uQ/L.net] >>484 スマン激しく誤爆
497 名前:デフォルトの名無しさん [2018/01/26(金) 09:48:49.15 ID:zry4uQ/L.net] おわび 御貴兄たち、何卒添削お願いします。変数colとかrowのほうが良かったな Const OFFSET_X = 1 Const OFFSET_Y = 1 Const BLOCKS_Y = 3 Const WIDTH = 6 Const HEIGHT = 6 Private Sub CommandButton1_Click() Dim src As Worksheet Dim dst As Worksheet Dim x As Integer, y As Integer Dim des_x As Integer, des_y As Integer Set src = ThisWorkbook.Sheets("sheet2") Set dst = ThisWorkbook.Sheets("sheet3") dst.Cells.Clear des_x = 1 + OFFSET_X des_y = 1 + OFFSET_Y For y = 1 + 3 To HEIGHT * BLOCKS_Y Step 3 For x = 1 To WIDTH If src.Cells(y, x + OFFSET_X).Value <> "" Or _ src.Cells(y, x + OFFSET_X).Formula <> "" Or _ src.Cells(y, x + OFFSET_X).Interior.ColorIndex <> xlNone Then 'エラー判定は無し src.Range(src.Cells(y, x + OFFSET_X), src.Cells(y, x + OFFSET_X)).Copy _ Destination:=dst.Cells(des_y, des_x) End If des_x = des_x + 1 Next x des_x = 1 + OFFSET_X des_y = des_y + 1 Next y End Sub
498 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 10:05:41.40 ID:cX+GX3c5.net] これ色付き以外のセルにも文字列は入ってるんだよな?
499 名前:486 mailto:sage [2018/01/26(金) 11:04:59.89 ID:HJtMv0FJ.net] あー〜スマン >表Aのセルの色を付けると同時にB表のセルのイロを変える この仕様を見逃してたわ 見なかったことにしてくれ
500 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 19:09:34.97 ID:o3fzSqcU.net] >>487 入ってます 欲しいデータは1色で統一されてますが ちなみに他に文字が存在しており、それらはほかの色で存在しています >>488 お手数お掛けしております ほんとにありがとうございます 色で判断をなくして、(条件で変えるので)>>483 に書いてある欲しいデータ4種類を転記させるものでも良いのですが、難しいでょうか
501 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 19:28:54.13 ID:s5W3X/Fy.net] できると思うけど、見本の写真がよく見えない。
502 名前:490 mailto:sage [2018/01/26(金) 21:06:22.97 ID:K81AssZX.net] パソコンで見たら見えた。 これ、変更したところだけ反映したいの? それとも、元表の3行目全てを反映したいの? というか、データだけなら=で結べばいいのでは?
503 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 21:17:19.09 ID:o3fzSqcU.net] >>491 そこまでして見ていただいて申し訳ないです 三段目だけを反映させたいのですが、その手書きの表の列、行ともに結構長い表なのです 手っ取り早く一瞬で作れたらと思って質問した次第です
504 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 21:21:20.15 ID:Vo+OzJVu.net] Excel VBAスレいけば寄ってたかってみんなで教えまくってくれんじゃね?行けば?
505 名前:デフォルトの名無しさん mailto:sage [2018/01/28(日) 00:24:57.82 ID:NUwCXosq.net] >>493 いまはゴキブリが湧いてるからあっちは行かない方が良さそう
506 名前:490 mailto:sage [2018/01/28(日) 01:47:10.17 ID:xXGJMKWE.net] >>492 結構長いというけど、どれくらい? 数十列数十行くらいで、1回だけなら右にオートフィルして、行ごとコピペするのが早いと思う。 =で繋ぐだけなら1回やっておけば、あとは自動でかわる。 マクロでやるとしても、数式で=を入れればいいのか、値を持ってくるようにした方がいいのか。 表の範囲指定はどうするか? current.regionか、usedrangeか、直接指定するか。(元の表に罫線が引いてあるか、空欄があるかで変わってくる)
507 名前:デフォルトの名無しさん mailto:sage [2018/01/28(日) 14:19:41.49 ID:Erw8GBm0.net] 数式だって絶対参照、相対参照をきちんと意識して書けばRange=数式でアドレスに併せて変えてくれるから1回の代入で終わる。 以外と知らずに1セルずつ代入する人もいるけど。
508 名前:デフォルトの名無しさん mailto:sage [2018/01/28(日) 14:51:25.14 ID:fbEFMaxh.net] >>495 3段目に毎回同じ文字がくるとは限らず、最低3種類の文字がくるので、とりあえずif分使って作成しました 横に日数1年分、縦に各項目50程です 絵にある通り、全く同じ表をコピペして使いますが(線あり)、ほんとは転記先の表は1段で済ませたい所でした 日替わりで最低3種類のうちのひとつが返ってきたらいいので わかりづらくてすいません
509 名前:デフォルトの名無しさん mailto:sage [2018/01/28(日) 14:52:48.13 ID:fbEFMaxh.net] >>496 そうなんです やり方を知らないので今は1セルずつ代入しています
510 名前:490 mailto:sage [2018/01/28(日) 17:27:50.85 ID:z3VzjyNA.net] >>498 fast-uploader.com/file/7072682105190/ 目的のものと全然違うかもしれないけど作ってみました。 データの最初のセルだけは自分で指定してください。
511 名前:490 mailto:sage [2018/01/28(日) 17:29:06.20 ID:z3VzjyNA.net] パス 0128
512 名前:デフォルトの名無しさん mailto:sage [2018/01/28(日) 18:08:34.70 ID:745uG8BQ.net] >>499 乙です 老婆心ながらアップする前に「ブックの検査−ドキュメント検査」したほうがよろしいかと。
513 名前:499 mailto:sage [2018/01/28(日) 18:41:56.85 ID:UOLejiJq.net] サンクスです。 渡辺明さんになるところだったか。
514 名前:デフォルトの名無しさん mailto:sage [2018/01/28(日) 21:37:23.53 ID:4m06L1KL.net] >>499 見れないのですが、消されたのでしょうか
515 名前:デフォルトの名無しさん mailto:sage [2018/01/28(日) 23:12:38.58 ID:Erw8GBm0.net] >>498 やり方も何も、例えばA1からA列に1、2、3、・・・と入力されてるとしてRange("B1:B10").Value="=A1"を動かしてみな。 全部A1を参照したいならRange("B1:B10").Value="=$A$1"とする。 本当はValueではなくてFormulaだけどValueでもちゃんと相対参照してくれる。
516 名前:499 mailto:sage [2018/01/28(日) 23:23:45.53 ID:9bi4pzKP.net] fast-uploader.com/file/7072704922415/ パス 0128
517 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 00:30:08.47 ID:flk0qVid.net] >>504 >>505 みなさん、無知ですみません ほんとに助かります ありがとうございます >>505 ひとまずダウンロード致しましたので明日内容を確認します お時間割いて作っていただいて、ただただ感謝です おやすみなさい
518 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 00:48:46.52 ID:rWIIKeXW.net] 下から5行くらいにtext ってあるの、valueに直した方がいいかも。 textでも問題ないかもしれないけど。
519 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 08:59:53.06 ID:flk0qVid.net] おはようございます 昨日ダウンロードさせてもらったファイル開かないのですが、どうやったら開きますか?
520 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 18:12:06.82 ID:acQcDZwj.net] エクセルのバージョンは? 当方2013で開けましたよ。
521 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 21:31:37.99 ID:flk0qVid.net] >>509 2010です すいません、どうやって開きました?
522 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 14:43:09.33 ID:xQQ90zOV.net] プログラマですがvbaの初心者です。 C,java,lisp,python 基本的な言語とその意味論はだいたい知ってます。 vbaで書籍を探すと、大抵業務問題の解決という文脈で本が書かれているようですが 純粋に言語的な機能を抽出した言語仕様、あるいはリファレンスに相当するものを求めています。 そのような書籍のうちもっとも簡潔に記述されているような本はないでしょうか?
523 名前:デフォルトの名無しさん mailto:sage [2018/02/04(日) 02:06:08.04 ID:Nq0C9+DR.net] >>511 本職のPGならマイクロソフトのディベロッパーセンターの英語版リファレンスを直に読んだ方が良い あと、場合によってはVBAとほぼ同じシンタックスになってるVB.NET用のMicrosoft.Office.Interopクラス以下の各アプリケーションのオブジェクトのリファレンスの方が役に立つこともある
524 名前:デフォルトの名無しさん mailto:sage [2018/02/04(日) 09:03:45.01 ID:PHOmwLAR.net] テスト
525 名前:デフォルトの名無しさん mailto:sage [2018/02/04(日) 09:08:27.88 ID:PHOmwLAR.net] VLOOKUP関数の応用で、2列のリストがあり、検索セルではどちらかを入力するともう片方が入力されるものをVBAで作りたいのですが、、、
526 名前:デフォルトの名無しさん mailto:sage [2018/02/04(日) 09:30:57.37 ID:VbMnR6W2.net] >>514 左をキーにしてvlookup 、次に左をキーにしてvlookup すれば良いんじゃないか? 右と左に同じ内容が存在するとダメだけど。
527 名前:デフォルトの名無しさん mailto:sage [2018/02/09(金) 20:30:22.36 ID:fQxgZtkH.net] テスト
528 名前:デフォルトの名無しさん mailto:sage [2018/02/12(月) 15:08:18.20 ID:IVihLGwq.net] グラフを作成するときにXValuesってすべての系列で統一しないといけないんですか? x1={0., 1., 2.}, y2={0., 1., 4.} x2={0., 0.5, 1., 1.5, 2.},y2={0., 0.25, 1., 2.25, 4.} みたいな2つの系列があったときにplot(x1,y1), plot(x2,y2)みたいに扱いたいのですがどうしたらいいでしょうか
529 名前:デフォルトの名無しさん mailto:sage [2018/02/15(木) 06:58:28.28 ID:oNAH0wTr.net] 特定のフォルダ内のすべてのブックにC列に複数存在する特定の文字列『a』のすべてに対して右隣のセルに文字列『aa』を入力して、さらに同じシート内でC列に複数存在する特定の文字列『b』のすべてに対して右隣のセルに文字列『bb』を入力するようにしたいのですがどのような感じになりますでしょうか?
530 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 06:08:56.24 ID:W1XJdyx1.net] ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
531 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 15:07:23.94 ID:1VKCp1qU.net] 518ですが、自己解決しました。
532 名前:デフォルトの名無しさん mailto:sage [2018/02/19(月) 16:09:20.27 ID:CaXwZ0Gg.net] vbacでmdbファイルをcombineしていると、「このアクションを実行するとプロジェクトがリセットされます。実行しますか?」というダイアローグが出てくるのですが、回避策をご存じの方いますか?
533 名前:デフォルトの名無しさん [2018/03/07(水) 08:26:06.09 ID:tPOSTBDK.net] VBA初心者です。 省略可能なキーワードOptionalに関して質問がございます。 ・質問内容 以下のコードにおいて、なぜ"ABC"が2回繰り返されるのでしょうか? Optionalで指定した1が初期値としてtmpに格納され、For〜Nextステートメントの処理が0〜1となり、回答は”ABC”のみだと考えました。 ・コード Sub Sample1() Call Sample2 End Sub Sub Sample2(Optional tmp As Long = 1) Dim i As Long For i = 0 To tmp Debug.Print "ABC" Next i End Sub 基礎的な質問で恐縮ですが、ご解説いただければ幸いです。 よろしくお願いします。
534 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 09:34:45.98 ID:1c1zt9Ui.net] >>522 0も1回と数えるから、i が0の時に1回、1の時に1回、合計で2回です For i = 1 To tmp にすれば1回になるよ
535 名前:デフォルトの名無しさん [2018/03/08(木) 09:50:20.87 ID:kgkGNmtQ.net] >>523 解説頂きましてありがとうございます。 0も1と数えるのはややこしいですね。。 しっかり復習します。
536 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 17:16:49.20 ID:1OkrDYdr.net] 配列は0スタートとか知っておいたほうが良い(VBAの場合はOption Baseで切り替えられるけど)
537 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 18:23:37.87 ID:bSaoLb8p.net] >>524 理屈で覚えればややこしくはないぞ。 配列の添字は距離のようなもので、「当該配列の1個目の要素のポインタを起点としたときに、そのポインタにどれだけ(何回)加算した場所に、その要素の格納されているメモリが存在するか」を示す数字。 1個目の要素から1個目の要素に移動するための加算回数=距離は0だから、1個目の要素にアクセスするときの添字は0になる。
538 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 20:23:06.52 ID:wcvra3LB.net] >>514 if文でセルの指定範囲の時実行で1列目の時と2列目の時で分けたらどうですか?
539 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 21:31:26.55 ID:Tr04o/zO.net] >>525 0スタートどころか-100スタートとかも可能
540 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 21:40:28.86 ID:Og1NJDFT.net] こればかりはプログラマーを混乱させるために導入されたとしか思えない謎仕様
541 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 07:32:15.03 ID:KC7p8RhA.net] こんなので混乱してるのはお前だけじゃね? w
542 名前:デフォルトの名無しさん [2018/03/09(金) 19:02:04.18 ID:M2r/B6Zk.net] >>530 お前はバカなんだからしゃべるな
543 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 19:32:06.94 ID:CekgNpjO.net] >>531 配列添字の範囲指定なんてPascalの時代からあるのに
544 名前:バカって悲しいな w [] [ここ壊れてます]
545 名前:デフォルトの名無しさん [2018/03/09(金) 19:47:08.42 ID:M2r/B6Zk.net] >>532 あれ?発言を許可した覚えはないけど?
546 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 04:04:01.67 ID:hJ8m/Sii.net] >>529 C#だとint[] intArray = new int[2]で要素は[0] と[1]になるんだが、 vbaだとdim Array(2) as Longが0,1,2の三つになるからたまにコンパイルエラーで悩む。Collectionは一から始まるが Dictionaryは0からというのもたまに嵌る。
547 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 12:36:10.36 ID:f+B2oLbA.net] >>534 > vbaだとdim Array(2) as Longが0,1,2の三つになるからたまにコンパイルエラーで悩む。 0,1,2になるか1,2になるかはOption Baseによる コンパイルエラーは意味わからんが >>533 お前が黙っとけよ w
548 名前:デフォルトの名無しさん [2018/03/11(日) 13:41:16.21 ID:1qbV0tMy.net] >>535 オマエも黙っとけハゲ
549 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 14:02:07.49 ID:z1FVyjSJ.net] >>536 お前もなー
550 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 14:18:05.90 ID:AoygmFYl.net] ExcelのCellsの添え字が1オリジンだからデフォルトで使うしかない
551 名前:デフォルトの名無しさん [2018/03/11(日) 16:09:32.52 ID:auu5o0Ru.net] >>535 cell番地が1から始まるからbaseも1じゃなきゃ書けないバカはレス禁止
552 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 16:12:01.55 ID:ULAXnW5C.net] Cellsはコレクションオブジェクトを返すプロパティ関数だから、インデクサが1オリジンなのは文法上当たり前
553 名前:デフォルトの名無しさん [2018/03/11(日) 16:16:16.76 ID:auu5o0Ru.net] >>540 配列の話してんだよバカチョン黙ってろや
554 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 16:36:25.15 ID:z1FVyjSJ.net] >>539 誰にレスしてんだよ、ボケ w >>540 アホすぎ、そんなもん仕様によるだろ
555 名前:デフォルトの名無しさん [2018/03/11(日) 17:04:17.63 ID:sEfAJdP7.net] Excelが開発された当初はまだ0の発見前だったからだろ。 今作るなら0から始まるようになる。
556 名前:デフォルトの名無しさん [2018/03/11(日) 19:02:59.32 ID:lvju0XX+.net] あーこれはスベったな
557 名前:素人 [2018/03/11(日) 22:39:56.16 ID:/xAIuEgQ.net] こんばんは! おしえてください! VBAでフリーフォームを書いたり、既にあるフリーフォームの頂点編集をしようとしています。 書く方は上手くいって、Shapes.BuildFreeformに、AddNodesコマンドで10点頂点を追加して、 楕円を書きました。 続いて、頂点の編集を行うべく、書かれたshapeのnodesや、Verticesで頂点情報を取得したら、 なぜか30点あります。ベジェ曲線で描かれた頂点の座標はもう残っていないのでしょうか??
558 名前:デフォルトの名無しさん [2018/03/15(木) 07:48:53.70 ID:O8Mn8lcP.net] >>545 コード貼ればレス付くかも
559 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 15:42:57.45 ID:5WWUtLn7.net] こんにちは。 VBA初心者です。 Excelで知恵袋のような社内用のQ&Aを作成中です。 質問フォームに入力すると質問が縦に書き込まれていくところまで作りました。 しかし回答を質問に対応させることができません。 回答は対象の質問の横に入力されていくように作りたいですが、どうしたらよろしいでしょうか。 教えて下さい。 分かりづらいかもしれませんが、下記のように作りたいです。 質問1 回答1 回答2 回答3… 質問2 回答2-1 回答2-2… 質問3
560 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 17:19:37.49 ID:S4dIExI6.net] シートを別にする 質問ごとにIDを振って回答にその質問IDを保持させる
561 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:51:44.63 ID:S3aSBsrx.net] いけそうです。ありがとうごさいました。
562 名前:デフォルトの名無しさん mailto:sage [2018/04/26(木) 06:16:16.15 ID:5eP/vpMI.net] htmlからidやnameに属さない、独自の名前を付けられた値を取得したいです。 <li id="result_1" result-rank="1" data-original="hoge"> <li id="result_2" result-rank="2" data-original="fuga"> ・・・ <li id="result_123" result-rank="123" data-original="hage"> data-original="hoge"の「hoge」を取得したいです。 常にidのresult_1を取得したいわけではなく、またidの値も検索結果によっては変動します。 data-originalは必ずliタグの中にあります。 htmlは変更できません。 ウィザード級の方々何卒お力をお貸しくださいませ。m(_ _)m
563 名前:550 mailto:sage [2018/04/27(金) 04:34:25.39 ID:HRYENVs1.net] 自己解決しました。
564 名前:デフォルトの名無しさん mailto:sage [2018/04/27(金) 17:39:47.51 ID:Ewgb7+aM.net] ExcelVBAの質問です adodbStreamを使って、jisコード(ISO-2022-JP)で書かれたテキストファイルを読み込んで色々するマクロを作っています 対象のテキストは1行120バイトのレコードが何行も含まれるという体裁になっているファイルです このファイルを入力ファイルに指定したところ、なぜか3行目のみ最初の12バイト分が読み込まれません レコードの内容を変えて何度か試してみたのですが、決まって3行目のみ行頭の12バイトが抜け落ちてしまいます adodbを使う際に何か必要なことがあるのでしょうか?
565 名前:デフォルトの名無しさん [2018/04/27(金) 17:40:39.83 ID:Ewgb7+aM.net] 上げておきます
566 名前:デフォルトの名無しさん [2018/05/07(月) 00:53:53.60 ID:Zjii9/TV.net] Webにあるスクリプト入れても動いたり動かなかったり 厳しいね、これは。
567 名前:デフォルトの名無しさん [2018/05/11(金) 11:32:55.94 ID:Vbz54Hwk.net] ファミコンゲームを再現したいんですが、単純な構造のゲームってありますか?
568 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 12:17:07.84 ID:Pz/tQeeR.net] シート1のA44:I44のセルの内容を、マクロでシート2の最後列に貼り付けていきたいです。 下記のマクロだと、シート1のA44のセルをシート2の最後列のAのセルにのみ、コピーするだけになってしまいます。 どう変更すればいいのか、よかったら教えて頂きたいです。 よろしくお願いします。 Sub テスト() Dim LastRow As Long With Worksheets("シート2") LastRow = Worksheets("シート2").Range("A"&Rows.Count).End(xlUp).Row + 1 Range("A"&LastRow).Value=Worksheets("シート1").Range("A44:I44").Value End With End Sub
569 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 12:32:44.52 ID:p+/wpzED.net] >>556 Resizeで貼り付ける範囲を広げてあげる 幅を9セルにしたいならResize(, 9)って付け足す
570 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 15:54:14.26 ID:Pz/tQeeR.net] >>557 できました!ありがとうございました!
571 名前:デフォルトの名無しさん [2018/05/23(水) 19:25:31.94 ID:Au5e7VGg.net] 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 HCSP8
572 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 10:45:12.88 ID:cPlRxlDn.net] HCSP8
573 名前:デフォルトの名無しさん [2018/05/30(水) 16:34:41.89 ID:C5TotkC4.net] VBAってリボンにメニューを作成出来る?
574 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 12:50:35.76 ID:TWLhtyG5.net] できるよ
575 名前:デフォルトの名無しさん [2018/05/31(木) 22:00:54.69 ID:mTNxmz5w.net] 出来ないだろ
576 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 22:10:43.12 ID:tlOTml64.net] シートにボタンがいくつかあって、押したときの処理が結構複雑なんです とりあえずclickedをシートモジュールに書いて、そこから呼び出される関数も全部シートモジュールに書いたら分量がすごいことになりました やっぱりクリック検出だけにしぼって残りは全部標準モジュールにすべきなんですかね。そのシートでしか呼び出されないわけで分けるのも分かりにくいような気もして
577 名前:デフォルトの名無しさん mailto:sage [2018/05/31(木) 23:13:50.53 ID:eZ3BghFT.net] >>563 Excel2003までのツールバーにメニュー追加するコードを書くと2007以降ではリボンにメニューが追加されるけど違う話かな?
578 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 19:23:11.48 ID:kZ0RH16R.net] Access2016でコンボボックスの規定値をnullから1へ変更したくて フォーム!コンボボックス.DefaultValue = """1"""とするフォーム上は1と表示されるんだが、プロパティーシート上は全く変化なくて、フォームをとじてから開くと規定値が変わっていなくてNullのまま。 VBAからは既定値の変更が出来ないのかな?
579 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 18:36:07.99 ID:uOrTSuCX.net] フォームを閉じるときに変更を保存しなけりゃ普通に考えてもとに戻るわけだが
580 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 19:06:38.06 ID:SBPTcvBw.net] >>567 仰るとおりでした
581 名前:デフォルトの名無しさん [2018/07/04(水) 22:40:17.29 ID:gFgZc5FG.net] 5OK
582 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 12:23:43.73 ID:uTPDH9XV.net] 5OK
583 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 23:25:17.04 ID:10W3NzaF.net] ここはjscriptはアカンけ?outlookをjsで弄りたいんだが
584 名前:デフォルトの名無しさん mailto:sage [2018/07/27(金) 11:07:24.57 ID:zSlylfXh.net] Jscriptなら近いのはVBSじゃないか?
585 名前:デフォルトの名無しさん mailto:sage [2018/07/27(金) 11:15:30.85 ID:OAh4kN9K.net] HTAとか
586 名前:デフォルトの名無しさん [2018/08/01(水) 19:27:32.96 ID:sloNm1e3.net] Wordで読みとり専用推奨で保存されてるファイルをVBAで書き込み可で開いて編集して上書き保存したいんですが、やる方法はありますか?
587 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:01:52.24 ID:oaZVWoyy.net] 読み取り専用推奨なんて属性ビットがあるのか?
588 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:05:26.28 ID:oaZVWoyy.net] マジだったカオスと思ったが 開くと読み取り専用か聞いてくるのか まあ、OS側でなくワード側で制御してそうだから、回避は厳しそうな気がする
589 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:15:26.91 ID:HUVD91D/.net] カオス言いたい年頃なのでどうか大目に見てやって下さい
590 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:18:30.88 ID:NozJFPGH.net] カオスは天地が分かれる前の状態 あるいは光と闇が分かれる前の状態
591 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:21:17.59 ID:6UiRsc0v.net] カオスエンジェルで抜いた
592 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 00:14:28.59 ID:isxfR7GW.net] >>576 VBAを使わずにファイルを開いてダイアログのウィンドウをつかまえて「いいえ」ボタンにメッセージを送るという力技ぐらいしか方法はないんでしょうか? Excelでは開くときにIgnoreReadOnlyRecommenedというのを指定すれば良さそうなんですが
593 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 01:48:50.77 ID:I4e8JJGh.net] document.openメソッドにも引数readonly があるみたいだけど
594 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 08:52:11.65 ID:L3mOQQ2h.net] >>581 ReadOnlyにFalseを渡しても読みとり専用で開かれるのは確認済みです
595 名前:デフォルトの名無しさん [2018/08/02(木) 12:49:47.07 ID:rM6odxjs.net] >>574 ありません。 Wordは手動でやるしかない。 Excelとは違いますから。
596 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 18:55:35.87 ID:kRv3+o5C.net] >>580 VBAでもその力業で出来るけどね。 でも読み取り専用推奨で保存する目的はそのメッセージを出すことにあると思うからそれをスキップするコードを書くべきかという問題もある。
597 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:38:51.82 ID:CFW8XzdE.net] >>582 すくなくともうちの環境では、ReadOnly:=Falseで書き込み可能で開いてるけど? その状態からReadOnlyRecommended = Falseにして保存したら、読み取り専用推奨は外れてるが まあうちの環境がかなり古いから最近では出来ない可能性もあるが それホントに推奨なだけなのか?
598 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:14:42.01 ID:L3mOQQ2h.net] >>585 試した環境はWord2010ですがここに書いてある通りです。できません。 https://support.microsoft.com/en-us/help/275976/word-document-opens-as-read-only-when-you-try-to-programmatically-open
599 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 21:07:22.34 ID:CFW8XzdE.net] >>586 じゃあ2010から出来なくなったんだな うちの2007ではできてるから ただそこの文書 Note The following example applies to Word 2003 and 2002: とか書いてあるな Last Updated: Apr 19, 2018 らしいけど、適用対象バージョンがよくわからんな
600 名前:デフォルトの名無しさん [2018/08/08(水) 01:24:38.39 ID:vu1bVHsA.net] ACCESSでオートルックアップクエリを使用したフォームでマスタにないものを入力した際、 フィールドとキーが一致しているレコードをテーブルで探すことができません。 と出ますが、マスタにないデータを入力しようとしたとき、上のメッセージを出すことなく、マスタ登録用フォームを呼び出すにはどうすればよいでしょうか?教えていただけると助かります。
601 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 19:57:58.33 ID:I61xiysx.net] スパークラインをVBAで挿入したいんだけど範囲指定のところがうまくいきません。 わかる方いたら教えてください。よろしくお願いします。 call cells(10 , h ).SparklineGroups.Add(xlSparkLine, "n5: n100") "n5: n100" のところなのですが、 range(worksheets(h).cells(14,5) , worksheets(h).cells(14 , G )) のようにして ワークシートごとの数値群をスパークラインにしていきたいのですが、、、 何か良い方法を教えてください。 よろしくお願いします。
602 名前:デフォルトの名無しさん [2018/09/02(日) 12:36:29.88 ID:/2qGDDvp.net] 質問 Outlook2010なのですが 受信トレイの検索(Ctrl+E)で「請求書」を検索するのと同じ動作を VBAにしたいのですがどのように記述すればいいのでしょうか ボタンに登録して使うつもりです。 OutlookVBAを使うのは初めてでしてお手引きをお願いいたします
603 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 16:03:58.04 ID:v7+8Ol2A.net] VBAで質問です 【前提】 ・デスクトップにフォルダA ・フォルダAの中に9月1日分のExcelファイル"0901"とマクロ作動用の.xlsmファイル 【したいこと】 ・フォルダAの中に9月2日分のフォルダ"0902"を作成 ・"0901"を開き、B2セルの2018/9/1を2018/9/2に書き換え ・フォルダ"0902"内にファイル名を"0902"にして保存 日毎のレポートのひな形を作ろうとしています あまり知らないながら書いてるのですがエラー出まくりで泣きそうです
604 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 16:16:35.28 ID:7fXcCHFS.net] >>590 Application.Searchメソッド、もしくは Application.Session.GetDefaultFolder(olFolderInbox).GetTable(DASLクエリの引数) を使えば良いのでは
605 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 16:51:32.22 ID:Q0JGCJ3q.net] >>591 悪いこと言わないから、手でやるか詳しい人に頼みなさい 複数のブックが同時に開かれている状態でのVBA処理には いろいろ面倒なところがあり、経験が必要 5ちゃんでサクっと説明できるものではない しかもフォルダ処理も伴っているので、エラー処理を含め きっちり作ろうとするとけっこうな規模のアプリになってしまうと思う
606 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 17:27:55.14 ID:1l6OdzeH.net] >>591 thisworkbook.path\フォルダA\0901を開いてあとはブック名から指定して必要事項を書き換え。 ブック名を指定してsaveAsで thisworkbook.path\フォルダA\0902で保存。 蛇足だが、必要無くともブックもシートも常に指定した方が良い。
607 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 17:44:00.59 ID:GR8jnF/5.net] >>591 とりあえず作ったコードを晒せば色々添削してもらえるかと >>593 回答できないなら黙ってなよ
608 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 18:16:50.42 ID:dkuRxOF+.net] おそらくやりたいことはこんな感じだろう。 0901ファイルを開いた状態で、9月2日当日にレポートを作成する前提。 0901ファイルを修正するという話だったからその通りにしたけど、本当ならここはテンプレートファイルから書き起こすようにするべきだと思う。 テスト実行してないので、エラーが出たらごめんなさい。 Sub CreateDailyReport Dim Report As Workbook Set Report = Application.Workbooks("0901") 'テンプレートから新規ファイルを作成するなら以下のように変える 'Set Report = Application.Workbooks.Open(テンプレートのパス) Report.Worksheets("Sheet1").Range("B2").Value = Format(Date, "yyyy/mm/dd") Dim PathString As String PathString = Thisworkbook.Path & "¥" & Format(Date, "mmdd") If Dir(PathString, vbDirectory) = "" Then MkDir PathString Report.SaveAs PathString & "¥" & Format(Date, "mmdd") & ".xlsx" Report.Close End Sub
609 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 18:17:42.72 ID:1ZQrBI0R.net] 593の言うことは間違ってないと思いますよ。
610 名前:デフォルトの名無しさん [2018/09/02(日) 21:02:04.61 ID:/2qGDDvp.net] >>592 Application.AdvancedSearchして Searchオブジェクトを検索フォルダーにSaveするっていうことですかね 単純にVBAでCrtl+Eのクイックサーチ(?)する方法があればと思ったのですが 無理っぽいですね ありがとうございました
611 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 16:40:58.45 ID:KlP6yXrE.net] 初歩的な質問でごめんなさい うまくできません If IsNumeric(myN) Then Range("A1").Value=Range("A1").Value + myN End If myNが1の時と2の時があるとしてセルA1の値を3にしたいのですが やってみると12っていう風に数字が並んでいってしまいます どうしたらいいでしょうか
612 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 19:12:55.41 ID:iNH/PWkM.net] >>599 もしmyNがString型、あるいはObject型に文字列データが入っている場合は数値型に変換する必要がある Range("A1").Value = Val(Range("A1").Value) + Val(myN) でいいんじゃないかな
613 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 19:23:08.77 ID:KlP6yXrE.net] >>600 String型になっていました 参考にしてもっと勉強します お付き合いくださりありがとうございました
614 名前:デフォルトの名無しさん [2018/09/21(金) 21:15:16.71 ID:Fm9zyYJ3.net] 超初心者です。 Googleの検索窓に「VBA」と入力する サンプルコード (https://vba-code.net/ie/set-value-to-textbox/) を実行してみましたが、 objIE.document.getElementById("gbqfq").Value = "VBA"のところで 「実行時エラー 424 オブジェクトが必要です。」となって動きません。 「標準モジュールに以下のコードを追加して」の意味が分からないので、 標準モジュールをどう書いたらよいのか、どこに追加したらよいのかわからず サンプルコードのみを実行しました。 どなたか親切な方、対応方法を教えてください。 難しいことはわからないので具体的にコードを書いてもらえると嬉しいです。 よろしくお願いいたします。
615 名前:デフォルトの名無しさん mailto:sage [2018/09/21(金) 22:26:39.22 ID:9i7TQATj.net] >>602 >>objIE.document.getElementById("gbqfq").Value = "VBA" objIE.Document.getElementById("lst-ib").Value = "VBA"
616 名前:デフォルトの名無しさん [2018/09/21(金) 22:40:18.36 ID:Fm9zyYJ3.net] >>603 ありがとうございます! できました!!! なんか分からないけど動いて嬉しいです! 頑張ります。
617 名前:デフォルトの名無しさん [2018/09/21(金) 22:42:58.72 ID:MqKbhYRD.net] >>604 おう頑張れ!わからんかったらまたいつでも聞いてくれな!
618 名前:デフォルトの名無しさん [2018/09/21(金) 23:16:58.27 ID:Fm9zyYJ3.net] >>605 ありがとうございます! 同じことを別のホームページでしたくて、 URLと入力するところを変えてみたのですが、 実行時エラー438 オブジェクトはこの
619 名前:vロパティまたはメソッドをサポートしていませんとなって動きません。 ホームページは https://www2.smile-etc.jp/NASApp/etcmlg/MlgReq;jsessionid=0001kXELRCuGax2mjI7VtXa12rz:15fqn57ku?gvlddpef=1011100000&mdwsetmb=1011120000の画面でしたくて、 入力するところは objIE.document.getElementsByName("Name1Kana").Value = "マイレージ"としてみました。 お時間あるときでよいので出来たらお願いします。 仕事で毎日同じような入力ばかりしていて自動化できるところをできたらいいなと思っているのですが、超初心者にはハードルが高くて難しいです 涙 ' [] [ここ壊れてます]
620 名前:デフォルトの名無しさん mailto:sage [2018/09/21(金) 23:29:19.39 ID:m8DL5ZJ4.net] getElementById("gbqfq") getElementById("lst-ib") 君は、この違いがわからないの? HTML, DOM, CSS, JavaScript とか知らないの? VBA には関係ないのだけど。 全言語・プログラミングに共通の話題なんだが
621 名前:デフォルトの名無しさん [2018/09/21(金) 23:59:36.29 ID:Fm9zyYJ3.net] >>607 すみません、わかりません。
622 名前:607 mailto:sage [2018/09/22(土) 01:01:33.83 ID:DCTpeoPT.net] HTML に書いてある、ID だよ ウェブページは、HTML(DOM), CSS, JavaScript で出来ている。 ブラウザでF12 を押すと、開発者ツールが起動するだろ これらを知らないと、ウェブ開発はできない! VBA とは、全く関係ない
623 名前:デフォルトの名無しさん [2018/09/22(土) 03:52:07.76 ID:AiTHsE5Z.net] >>609 >>609 知識もないのに場違いな質問をしてしまいすみませんでした。ご親切にありがとうございました。
624 名前:デフォルトの名無しさん [2018/09/22(土) 09:42:45.32 ID:AiTHsE5Z.net] >>606 自己解決して、自動入力マクロができました!ありがとうございました。
625 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 07:52:16.28 ID:OKfVsW46.net] VBAでできることはC#でもやることはできますか?
626 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 07:55:38.55 ID:/wsNoZ03.net] できます
627 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 09:20:25.16 ID:dGKqHjcm.net] ユーザー定義関数の作成以外ならなんでもできます
628 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 09:54:55.01 ID:TjU2aakC.net] それにしても、なんで、マクロはFunctionしかcall出来ないんだろうね。 無駄にFunctionを作らないようにと英語の本には書いてある。Subで済むもをFunctionにするなと書いてある。 なのに、マクロの仕様のために、無駄にFunctionをつくったり、SubをcallするだけのFunctionを作ったりしないといけないのは間抜けな仕様だと思うがどうだろうか?
629 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 10:38:39.78 ID:/wsNoZ03.net] >>614 それもC#で可能 >>615 ちょっと何言ってるかわかんないですね
630 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 10:53:20.05 ID:TjU2aakC.net] >>616 マクロからSubをCallできないのは知ってますか?
631 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 12:09:03.01 ID:bZOmvKy4.net] >>617 知らないです 私の知ってるマクロだとsubもcallできるので
632 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 12:28:42.41 ID:YStpcFYj.net] >>616 本当に? ワークシートからDLL関数をCallするためのインターフェースだけはVBAネイティブのFunctionとして書かなきゃいけないと思ってた ワークシートから直接C#ソースの関数をCall出来るってこと? >>615 SubもCall出来る というかSubは本来Subroutineのことを指すのでそもそもCallできなきゃおかしい
633 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 14:32:33.06 ID:E7u6qrbY.net] あれ?エクセルは出来るの? アクセスは駄目なんだよ
634 名前:デフォルトの名無しさん [2018/10/12(金) 17:15:46.40 ID:QO2uhWCP.net] VBAしか使わない人間は、WinAPI使わない人間はSubしかCallしない。
635 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 17:26:32.07 ID:Vm21lImY.net] VBAより日本語がおかしい
636 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 17:45:20.75 ID:TjU2aakC.net] なんでAccessはマクロからSubを呼び出せない仕様なんだろうか?
637 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 17:45:47.46 ID:TjU2aakC.net] つーか、ここはExcelのスレなのかな?
638 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 18:11:30.85 ID:Zsf/ZX4u.net] Accessでも出来るぞ
639 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 18:20:18.57 ID:4bQjrfTH.net] ほんとに?MSのサイトに対処方法が書いてあったけどなあ。 仕事で使ってたmdbでエラー出まくってSubをFunctionに書き換えた記憶があるけどなあ
640 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 18:45:46.09 ID:S2JrLclJ.net] 意味が分からん。 ExcelだろうがAccessだろうが当たり前にできる。 やり方間違えてるだけだろ。 lngRet = FuncA("何かの引数") Call SubA("何かの引数", "何かの引数2") これはできる。 SubでCallを省いた場合に SubA("何かの引数1", "何かの引数2") とするのは出来ない。 Callを省く場合は SubA "何かの引数1", "何かの引数2" とする。
641 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 19:05:34.79 ID:TjU2aakC.net] >>627 AccessとExceの用語の違いが問題かもしれません。 Accessだとマクロのデザインビューで新しいアクションの実行→プロシジャーの実行を選択→プロシジャー名を指定という流れです。 ここでSubを入れるとエラーになり、Functionを入れると実行されます。 全く同じ動作でもSubだとエラーでFunctionだと実行されるという謎仕様のことです。
642 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 19:37:39.24 ID:aE6SgoRY.net] 同じように困ってる人がいました。 Subプロシージャをマクロで実行する方法を教えてください webcache.googleusercontent.com/search?q=cache:PplL--43vEQJ:www.accessclub.jp/bbs3/0178/superbeg59084.html+&cd=5&hl=ja&ct=clnk&gl=jp&client=firefox-b-ab Calling Sub from Macro https://www.pcreview.co.uk/threads/calling-sub-from-macro.3966923/
643 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 19:39:49.69 ID:wk7eAlWy.net] >>628 Accessマクロの「プロシージャの実行」機能は、Functionプロシージャに限ってアプリ経由でコールバックさせることができるっていう一種のリフレクション機能だから、仕様上Subプロシージャを呼べないのは当たり前 でも普通はVBAその他一般のプログラミング言語の話題でCallするとかコードを呼び出すとか言う場合、プログラムのコード中で他のプロシージャ(=メソッド)を呼び出すこと一般を指す AccessだろうがCallステートメントでSubを呼べないわけがない 全然話してる内容が違う
644 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 19:42:56.49 ID:4ERZBcjn.net] MSの提示する対処方法 https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/runcode-macro-actionから抜粋 >>[!ヒント] Visual Basic で記述した Sub プロシージャまたはイベント プロシージャを実行するには、Sub プロシージャまたはイベント プロシージャを呼び出す Function プロシージャを作成します。 >>その後、 RunCode アクションを使用して、Function プロシージャを実行します。
645 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 19:47:22.51 ID:4ERZBcjn.net] >>630 そうなんですか?Callという言葉の使い方が悪かったのですね。 Accessのマクロのプロシジャーの実行からSubを実行できないという表現が適切なんですね。 それにしても謎仕様ですね。いちいちCall_SubみたいなFunctionを作らないといけないなんて馬鹿らしいですよね。 Subを使うのを止めて戻り値を使わないのになんでもかんでもFunctionにしている人がいるのはこのあたりにも原因があるのでしょうかね。。。
646 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 20:06:27.08 ID:a+EZTAPW.net] C#やJavaなどの言語にはfunction相当の構文しか存在しないから、それに合わせてるだけかも
647 名前:デフォルトの名無しさん mailto:Sage [2018/10/12(金) 20:12:42.89 ID:Vm21lImY.net] サブルーチンというものは、マクロ上での繰り返し処理や重複処理が必要な場合に同じコードを何度も記載することを回避して、プログラムの再利用性と
648 名前:ネ潔性とメンテナンス性を高めるためのもので一種の共通部品で呼び出して使えるためとても便利。 その代わり呼び出し側のコードが必ず必要。 [] [ここ壊れてます]
649 名前:デフォルトの名無しさん mailto:Sage [2018/10/12(金) 20:15:04.20 ID:Vm21lImY.net] よってユーザー定義関数とは自ずと目的が違う。
650 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 20:43:31.86 ID:xhA4Quty.net] たとえ1回しか使わなくても、機能ごとに分けて名前を付けることでコードの見通しを良くするという目的もある
651 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 23:37:21.09 ID:CecLyO81.net] どーでもいいわそーゆーおまえのこだわりw
652 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 23:40:27.93 ID:kwtsHVW5.net] ・Accessのマクロの「プロシージャの実行」機能は要するに「関数を実行する」ことに重きを置いている機能なので、関数ではないSubプロシージャは呼び出せない。 ・「呼び出す」と「Callする」は意味が(あるいは受け取り方が)違うので下手に知ったかぶりしないこと。
653 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 23:43:28.15 ID:CecLyO81.net] アクセスさんの気持ちを代弁するやつw
654 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 14:18:57.90 ID:7+viDhhJ.net] >>638 関数という言葉の定義次第ではSub Procedureも関数の一種になるぞ あと、Accessマクロの実行機能に関する話題でマクロピッカーからプロシージャを直接選択して実行する操作を指して「呼び出す」とか「Callする」と表現する例は比較的稀だと思うぞ
655 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 18:29:35.77 ID:hGe/e45K.net] 数学的な定義だと関数は一対一の写像だから戻り値がないものは関数ではなくなってしまう 丸投げアウトソーシングとでも言えばいいのか
656 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 01:16:47.10 ID:FNEdXER5.net] >>641 その理屈だと、Function Procedureが戻り値なしの記述を許容していること、戻り値と全く論理的な二項関係がない処理をFunction Procedureの中に書けてしまうことを考えた場合、Function Procedureが果たして関数と言えるのかどうかということの方が怪しくなる
657 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 18:45:30.05 ID:+nd0Ta/b.net] それはプロパティとメソッドについても言えるわけで。 意味合いから使い分ければ良い。 Accessの仕事してるけどいわゆるAccessのマクロ機能は嫌いなので殆ど触ったことないな。
658 名前:デフォルトの名無しさん mailto:sage [2018/10/15(月) 00:09:25.20 ID:bvVmxQGC.net] >>640 マクロからVBAプロシジャを実行するのを、呼び出すと言うのはすごく一般的だとおもうが むしろ呼び出す以外にどう言うんだ >>642 戻り値を指定しないFunctionだって戻り値はちゃんとあるんだが まあそもそもプログラミング上でいう関数は数学的定義の関数ではないんだがな >>643 一般的なプログラム用語としてはそうかもしれんが VBAや旧VB,VB.NET,C#なんかはプロパティはメソッドとは別な構文で定義されてる VBAの話するならちゃんと区別しれ
659 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 18:28:17.85 ID:yWBiOXbZ.net] vba初心者でわからないところがあって質問したいんですけど、ここで大丈夫ですか?
660 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 18:50:01.08 ID:JBsUV7Ak.net] ExcelとAccessは専門スレが別にあるけどな
661 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 19:18:54.83 ID:yWBiOXbZ.net] 学校の課題なんですがさっぱり分かりません コードの入力?を教えてほしいです https://i.imgur.com/F4T8tlt.jpg https://i.imgur.com/3L2Gjq0.jpg
662 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 19:27:08.71 ID:yRk1YRk6.net] >>647 その宿題をやるには「フォームの作成」という作業が必要で、それは文章だけの掲示板じゃとても説明できない
663 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 19:33:23.32 ID:JBsUV7Ak.net] 二次方程式 VBAのキーワードでぐぐればそれなりに情報はあるよ
664 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 20:36:22.41 ID:yWBiOXbZ.net] >>648 フォームの作成ってこれですか? ここしかわかんなかったです… https://i.imgur.com/74SP9RE.jpg
665 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 20:37:40.54 ID:yWBiOXbZ.net] >>649 調べてみます ありがとうございます
666 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 22:42:46.78 ID:iSnTRpeY.net] 学校でExcelの課題出るのか 全員Excel入りのWindows機もってる前提なのか
667 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 22:53:14.87 ID:JBsUV7Ak.net] 商業科高校と大学生は皆持たされる時代やね
668 名前:デフォルトの名無しさん [2018/11/15(木) 12:24:37.27 ID:yIPB3Fsn.net] なきゃ学校にあるPC使うだけやんけ 変な事気にする奴やな
669 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 14:25:13.91 ID:njFgw0Uw.net] >>653 商業科の電卓名人みないな奴は、もぅおらんのか
670 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 23:21:50.05 ID:XqpfGkJo.net] VBAで3つ数値があった時、最大値を表示させたい時 下記URLのNo.4の回答のelseifを使ったものがありますが、 elseifを使わずにelseだけで表示しようとすると、 どのようになるのでしょうか? 宜しくお願いします ttps://oshiete.goo.ne.jp/qa/5352661.html
671 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 23:28:15.36 ID:XqpfGkJo.net] 分かりづらそうなので追記で、下記のところです。 宜しくお願いします a = 10 b = 200 c = 30 Max = a If b > Max Then Max = b ElseIf c > Max Then Max = c End If
672 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 23:37:03.06 ID:dI+Dsxy9.net] Max = a If b > Max Then Max = b Else If c > Max Then Max = c End If
673 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 06:18:18.01 ID:biDBAQdb.net] >>658 ありがとうございます 試してみたいと思います
674 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 06:57:12.53 ID:fQoG7lNZ.net] そもそも657では最大値求められないだろ。 なぜ他の2つと比較してから決めないのか
675 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 07:24:20.18 ID:biDBAQdb.net] すいません、まだ初心者でまだ理解が追いついていなくて とりあえず最大値求めるにはこういう形...とかで覚えようとしてて....頑張ります
676 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 07:30:47.41 ID:1oL4uemZ.net] 658でも最大値は求められない 試しに a = 1 b = 2 c = 3 で試してみるといい。Maxが2になってしまう Ifだけでやる場合の正解の一例 Max = a If b > Max Then Max = b If c > Max Then Max = c
677 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 07:35:16.96 ID:1oL4uemZ.net] >>661 If Elseの構文は、最初のIfの条件が成立したらElse以降は処理されずEnd Ifまで飛ばされる つまり、 a = 1 b = 2 c = 3 だった場合、 b > Maxが成立したらc > Maxの部分は飛ばされてしまうからMaxは2のまま終わってしまう
678 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 07:44:30.26 ID:fQoG7lNZ.net] elseやelseifは先行条件でTrueにならない場合にしか実施されない仕組みなことを理解しましょう
679 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 08:11:14.61 ID:nU0jfNiC.net] >>661 このレベルを形で覚えようとしている貴方にプログラミングは向いてない
680 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 09:26:27.62 ID:RKO+v0zL.net] ID変ったかも知れませんが>>656 です 皆さんありがとうございます >>665 手痛いレスですが、出来るところまで頑張ろうと思います。プログラマーではないですが基本は覚えないと連携し辛い位置の役職のため頑張ります。
681 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 09:39:56.01 ID:fQoG7lNZ.net] 本当のプログラミング初学者なら仕方ない。制御構文なんてどの言語も似てるので、1つ覚えれば次は勘が効くようになるよ、長い目でがんばりなされ
682 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 01:11:45.44 ID:A0ACnair.net] 最大値を求めたいならWorkSheetFunction.MAX使えば良いんじゃね?
683 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 12:08:31.57 ID:vo1go4s2.net] 自民党ですらエクセル操作ミスるくらいだからな
684 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 12:09:52.07 ID:vo1go4s2.net] 税金の計算もおかしくね?って思う
685 名前:デフォルトの名無しさん [2018/12/16(日) 00:58:32.35 ID:SwJ6GlUb.net] >>668
686 名前:にわに [] [ここ壊れてます]
687 名前:デフォルトの名無しさん [2018/12/16(日) 01:01:16.65 ID:SwJ6GlUb.net] パニックを、5人がかりでやれば楽勝だろ、とか言ってるようなもの。
688 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 09:39:23.91 ID:5sE/cfMN.net] エクセルVBAじゃなかったらどうするの
689 名前:デフォルトの名無しさん mailto:sage [2018/12/18(火) 22:55:12.06 ID:A6rQVaax.net] 確かに。 エクセロかも知れないもんな。
690 名前:デフォルトの名無しさん [2018/12/26(水) 21:53:30.63 ID:KrpjpPkw.net] VBA初心者です。少し長くなってしまいますが質問です。 ・やりたいこと 1:現マクロ有効ブックのsheet1にフォームボタン設置する。 2:押すとC:\Users\Public\動物まとめ.xlsx をバックグラウンドで開き、その中のシート名"カピバラ情報"の E列4行目から5行目6行目...と、空白が来るまでの情報を取得しする。 3:現マクロ有効ブックに新しくsheet2を作り、その新シートのA1からA2A3...に取得した情報を書き込む。 現在のマクロは下記ですが上手くいかないです。 Option Explicit Sub practice() Dim i As Long i = 4 Dim fullPass As String 'セルのB3に C:\Users\Public\動物まとめ.xlsxと記述 fullPass = Range("B3") Dim wb As Workbook Dim Anothersheet As Worksheet Workbooks.Open fullPass Set Anothersheet = wb.Worksheets("カピバラ情報") Sheets.Add After:=ActiveSheet Range("A1").Select Do While Cells(5, i).Value <> "" i = i + 1 Loop Call wb.Close End Sub 上手く情報を取得できないのでアドバイスお願いします。
691 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 00:53:04.14 ID:coxr7jtk.net] >>675 wbに何も代入されてない。 AnotherSheetへの代入もこけるはず。 AnotherSheetが正しく生成されたとしても、その後使用されていないから何かとってこれるはずがない。
692 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 00:55:19.50 ID:coxr7jtk.net] >>675 fullpass じゃなくて、fullpath ね。
693 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 01:02:39.75 ID:coxr7jtk.net] >>675 行列指定が逆? 5行目を右方向に評価してくような感じになってるけど、新規に作ったシートが対象になってるから、一周もループしてないよね?
694 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 01:09:08.59 ID:coxr7jtk.net] >>675 Cell値を取るときは、デフォルトにまかせずちゃんとプロパティ指定しよう。
695 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 01:16:51.54 ID:coxr7jtk.net] >>675 バックで開いたつもりのブックに新規シート作っちゃってない? ブックのフォーカスを制御するとか必要かも。
696 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 09:18:35.23 ID:psUgzr4+.net] ID変わりましたが>>675 です。 >>676 ‐>>680 遅い時間帯でありながら見てくださって ありがとうございます。 色々と不十分だったのですね。 指摘箇所を直したりして また報告しようと思います。
697 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 09:19:34.30 ID:lhYnw8ev.net] >>675 最初に注意すべきなのは、いきなりRangeやCellsは絶対に使うべきじゃないってこと。 ちゃんと省略せずにWorkbookやWorksheetから書くようにする。 しかしそれだとコ―ドが長くなるのでそのために今回のコードのように変数で受けるかWith文を使う。 以下はスマホ上で書いてるんで動くかは不明です。
698 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 09:20:24.73 ID:lhYnw8ev.net] Option Explicit Sub practice() Dim i As Long Dim fullPath As String Dim wb As Workbook 'Anothersheetじゃ分かりにくいんでopnShtに変更。 Dim opnSht As Worksheet '追加シートは変数に受けないの? Dim addSht As Worksheet 'セルのB3てどこ? '多分ボタンのあるシートかなと推測。 fullPass = Thisworkbook.Worksheets("Sheet1").Range("B3").Value 'B3に出鱈目書いて動かしたらどうなるんだろう? Set wb = Workbooks.Open(fullPath) Set opnSht = wb.Worksheets("カピバラ情報") With Thisworkbook Set addSht = .WorkSheets.Add( After:=.WorkSheets("Sheet1")) End With 'Range("A1").Selectって何の為に有るの? 'iの初期値を一番最初に書いてたけど、初めて見たとき何だか分からんかった。 '使う直前に関連処理と一緒にまとめた方が分かり易いよね。 i=4 Do While opnSht.Cells(5, i).Value <> "" i = i + 1 Loop '元のCall wb.Closeなどという書き方をしたことが無いのでいつもの自分の書き方に変更。 wb.Close False End Sub
699 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 09:22:53.65 ID:lhYnw8ev.net] >>680 フォーカスを制御すべきじゃない。 いきなりRangeやCellsを使うから上手くいかないのであって、きちんとブックやシートから書けばフォーカスを制御しなければならないことは滅多に無い。
700 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 09:26:03.58 ID:lhYnw8ev.net] 早速間違いだ。 fullPassと書いてる所が一ヶ所ある。 fullPathに直しておいてね。
701 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 11:21:46.87 ID:coxr7jtk.net] >>684 まぁ、そうかもね。 でも最初はいろいろ試してもいいんじゃない?
702 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 11:57:21.88 ID:psUgzr4+.net] >>682 ‐685 ありがとうございます 深夜のご指摘から>>685 まで参考にしていて 現在デバッグしてますが、“カピバラ種類”のシートが上手く取得できていないようです。 ちなみに 'セルのB3てどこ? '多分ボタンのあるシートかなと推測。 その通りです、分かりづらくてすいません。 改行制限のためいくつかコメントは掲示板に書き込むとき省いてしまいました。 'Range("A1").Selectって何の為に有るの? ですが 、新シートのA1から書き込む為に書きましたが、デフォルトでA1から書き込むみたいですので 無駄なマクロでしたね。
703 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 12:23:02.37 ID:psUgzr4+.net] 少し言葉足らずでした。 iのカウント(空白行までループ)は上手く出来ているので、現マクロ有効ブックの新シートに取得情報を 書き込めていないようです。
704 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 12:57:12.54 ID:lhYnw8ev.net] >>688 うん? Do〜Loopの中はiのカウントアップしてるだけなので、あなたが省略した(と勝手に思ってるんだけど)コードが動いていないということ? 念のためにいうと、元々のコードには情報を取得するコードが全く無いからこのコードだけじゃ取り込めないのは当たり前だよね。
705 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 13:47:48.84 ID:psUgzr4+.net] すいません、 不覚に気づき、 dim j as long j = 1 を追加し、ループを Do While opnSht.Cells(5, i).Value <> "" addSht.cells(j,1) = opnSht.Cells(i, 5) j = i i = i + 1 Loop にして上手くいきました、ありがとうございます。
706 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 13:57:20.08 ID:psUgzr4+.net] 細かい修正として j = i i = i + 1 の部分も i = i + 1 j = i - ○ のようにして、 無駄にできてしまう空白もなくしました。 お付き合いしてくださった方、 ありがとうございました。
707 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 04:15:42.29 ID:aAVkqECP.net] 質問です ワークシート上にすでに引かれている複雑な枠線をコードとしてどうにか変換というか取得できる方法はないでしょうか…
708 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 04:35:53.91 ID:Em9anKIf.net] >>692 描くのの逆をするだけじゃ?
709 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 13:29:44.69 ID:aAVkqECP.net] >>693 返事ありがとうございます すみません、私の頭では理解できません…よかったらもう少し詳しく教えてもらえませんか
710 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 14:57:12.35 ID:9QrYctZ6.net] 何をしたいのか書いてよ 罫線の設定状況を知りたいだけならRange.Borders見なよとしか言えないし https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.borders
711 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 15:15:01.64 ID:Em9anKIf.net] >>694 罫線を描く動作は理解できてる? マクロ記録で簡単に調べられますよ。 例えば、2行2列選んで、縦横斜め全てに実線入れて 記録されたものを見ればどのような構造で描かれているのか 分かります。 記録の際は、xl〜の定数でよいですが、取得の際は数値で 返ってくるので注意。 調べたければオブジェクトブラウザで調べてもよいですが、 イミディエイトで、?xlThin みたいに簡単に確認する方法も あります。 でも、取得して使うなら数値のままでもOKです。 ここまではOK?
712 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 16:26:50.99 ID:+aY40et6.net] >>695 >>696 会社でとある先人の作ったエクセルのフォーマットがあるのですが、それを使って作業するおばあちゃんが度々壊してしまうのです セル結合やセルの幅など複雑になっている物なので、壊してしまったパソコンの不得意なおばあちゃんはいつも四苦八苦していて、どうにか入力された数値以外の罫線や列幅などだけボタン1つ簡単に戻せるものを作ってあげたいと考えています 頂いたヒントを元にもう少し頑張ってみます 結局わからなければまた質問させてください ありがとうございました
713 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 16:38:04.35 ID:CdG5H8Qg.net] >>697 シートの保護じゃダメなの? おばあちゃんには特定セルに数値入力させてるだけなんでしょ?
714 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 17:30:36.94 ID:Em9anKIf.net] >>697 シート保護で十分みたいですね。 もし何らかの理由で保護できないのであれば、 同フォーマットの隠しシートから書式貼り付けした方が早そう。 セル結合もあるし、1セルずつ罫線情報取得とか効率悪すぎ。
715 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 22:01:21.27 ID:aAVkqECP.net] >>698 >>699 それがわかりながらあらゆる所(不規則)を動かさないといけない時があったりで、保護だと都合が悪かったんです フォーマット自体を大幅に変更できればもっと色々と簡単にできるのですが、それも他のおばあちゃんたちが前の方が良かった〜なんて必ず言うので見た目を崩すことはできません 担当のおばあちゃんorおばさんが変われば書式貼り付けのための範囲選択も上手くできないだろうから(全選択など知りません)また誰かが黙って長時間四苦八苦する事になってしまいます 無駄にすべて最初からやろうとしたりも平気であります 平均年齢49才の職場なので仕方ないんです 誰にも聞かずに戻したい部分を戻せるような、とーーってもわかりやすい説明付きのボタンをユーザーフォーム上にでもいくつか作ってあげたいと思っています 崩してしまうパターンはだいたい把握できているので、それが最善かなと…
716 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 02:06:01.37 ID:+nkelZ7z.net] >>700 いや、だから隠しシートから自動的に書式修復をかければという意味で言うたのですが、、 トリガーはファイルオープンでも、ボタンでも。 試しにやってみたけど、罫線やセル結合は問題なく修復できるみたい。 入力規則とかは引き継げないみたいなので別にケアする必要があるかも。 行挿入、列挿入とかされて座標がかわるようなことされないならこれで十分では? 自分がよくやるのは、表のエリア毎に範囲名をつけて、そのエリア単位で最初に表組みした ときと同じ要領で表作成を記録していき、コードを整理して修復マクロにします。 これなら起点となるセルが壊されなければ行挿入、列挿入にもある程度柔軟に対応 できるし、式や入力規則の修復も追加できる。 まぁ、利用者は作成者の想定を軽く超えてきますけどね。
717 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 08:59:12.57 ID:jYRqvj54.net] >>701
718 名前:理解力なくてすみません、、、 そしてありがとうございます そのやり方を取り入れてとりあえず一度作ってみます! [] [ここ壊れてます]
719 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 20:28:43.04 ID:gUifgf+0.net] ディム a アズ インテジャー コンスト b アズ バリアント = ファルス この読み方はあってますか?
720 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 20:32:43.51 ID:b1memYXI.net] さいごフォルス
721 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 08:43:51.62 ID:KJwN8fo6.net] マジか! 自信なくなってきたわ。 フォー イーチ 〇 イン、スターコンブ、ブイビーナロウ、コンカット、 ナンバーフォーマットローカル、ドゥ ホワイル、イズナメリック、 デカー ファンクション セットウインドウロング リブ "ユーザー32" エリアス、 バイバル 〇 アズ ブーラン、アプリケーション.ハウンド、オプション エクスプリシト。
722 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 09:19:09.77 ID:1t0h4eLG.net] numeric ニューメリック alias エイリアス boolean ブーリアン
723 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 09:40:31.66 ID:brNktcWU.net] ディクレィア
724 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 12:50:34.64 ID:gJkAP+bh.net] ぶーりーんっておもってた
725 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 14:02:45.95 ID:1t0h4eLG.net] 「デカー」ってなんのことだ?
726 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 06:06:27.68 ID:FqoKwBp9.net] ぶーりん ってよんでた
727 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 06:58:21.81 ID:NbFzEAOW.net] >>709 >>707 が言う通りDeclareじゃね?
728 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 08:09:02.73 ID:jhC9vbHJ.net] declare デクレア(デクレアー) 発音記号を見るとディクレィアーなんだけど、音声ではディよりデに近く聞こえる https://en.hatsuon.info/word/declare
729 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 14:53:02.35 ID:SqTYfLos.net] バイバリュー
730 名前:デフォルトの名無しさん [2019/01/31(木) 16:04:06.71 ID:f4/Ws+Wz.net] パワポでExcelのVBAにある Application.OnUndo みたいなことって出来ない?
731 名前:デフォルトの名無しさん mailto:sage [2019/01/31(木) 23:51:12.55 ID:eWv6zdmK.net] Application.CommandBars.ExecuteMso "Undo"
732 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 00:00:16.48 ID:BWIWaKpf.net] undoをフックできるか?って質問の気がするが
733 名前:デフォルトの名無しさん [2019/02/01(金) 15:41:12.07 ID:lbEDOgk3.net] >>716 そっちだね あるいはパワポの内部変数(たとえば図形のRGB値とか)の変化を検知してイベント上げるとかでもいいんだけども
734 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 19:24:08.72 ID:69So7CMb.net] 質問スレでいつも思うんだけど、どんな状況でそれが必要なの? Excelで出来るんなら、逆にExcelをパワポっぽく見せるという手もあるんじゃないの?
735 名前:デフォルトの名無しさん [2019/02/02(土) 00:14:40.30 ID:hkITps2T.net] 勉強もかねてパワポのアドイン作ってるのよ だからExcelじゃなくてパワポで出来なきゃ意味がない その機能自体が必須で欲しい訳ではないから出来ないなら出来ないで諦める
736 名前:デフォルトの名無しさん mailto:sage [2019/02/08(金) 13:11:59.73 ID:WrxcLohJ.net] 何か斬新な使い方って無い? ワードでファミコンみたいな。
737 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 00:13:31.38 ID:nXE2v5Lv.net] Functionで値を返すのと、ByRefで返すの、どう使い分けたらいいのか、わからなくなってきた。 どっちでも返せる状況なら、どっちがいい?
738 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 00:37:08.95 ID:gPze9fmT.net] 他人とか将来の自分が読みやすいようにFunctionで
739 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 00:41:30.67 ID:ThSbhyi3.net] 処理によるとしか
740 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 04:25:25.62 ID:6oInKB58.net] Function一択 ByRefは古い書き方で互換性のために残してる これから作るプログラムには使うべきじゃない
741 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 09:13:25.95 ID:NnmcfWng.net] >>721 どちらでもいい状況ならFunctionの方が使い易いのでFunctionにした方がいい あと>>724 はアホだからスルーで
742 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 09:25:22.06 ID:ThSbhyi3.net] ByRefが互換性維持のために存在するという話は聞いたことがないぞ
743 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 18:52:45.21 ID:0gstYK5t.net] sortのcustomorderって、セル値を入れられたりはするのでしょうか? 複数のセル値を優先順位としてデータを並び替えるマクロを作成したのですが動作が遅いので改善出来ればと考えています。(forとifで判定する手法をとっています) よろしくお願いします
744 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 08:39:42.60 ID:PK2Geudt.net] 標準のソート機能で出来ないことでもやるの? 駄目ならSQL使うとか。
745 名前:デフォルトの名無しさん [2019/03/19(火) 09:29:22.78 ID:3/8oXV0g.net] VBAがどっとNet対応 キターーーー!
746 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 10:26:45.09 ID:NT4YoXBH.net] Select from… 懐かしいな
747 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 11:16:03.50 ID:7F9Wq7Fv.net] >>729 ?
748 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 22:45:44.06 ID:i2FNQUrb.net] さて、名前付き範囲ってVBA@Excelで使えないんだろうか。 もし使えたとして、実行時間はどうなのだろうか。 色々と謎が多い。
749 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 23:22:30.00 ID:/asoePaH.net] >>732 それ使うと後でエラー見つけるのめんんどくさくなる
750 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 00:38:39.23 ID:vmDq6MjZ.net] >>732 使えるよ Application.Namesでコレクション取得して名前つき範囲にアクセスできるし、シートのRangeプロパティの引数ラベルとして名前をそのまま使ってセル取得できる
751 名前:デフォルトの名無しさん [2019/03/20(水) 16:11:53.05 ID:VkiUMgxP.net] >>733 横からだけど、どう面倒になるの?
752 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 19:48:02.99 ID:lxQ2zmLg.net] >>735 セルの編集したときに壊れてた
753 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 21:06:17.96 ID:ad3N4bFR.net] 名前をキーにして名前付き範囲にアクセスするときはリスト形式になってるNamesコレクションの要素に対して正規表現か何かで逐次マッチ検索してるはずだから、名前付き範囲が増えれば増えるほどアクセスが遅くなる
754 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 01:35:24.94 ID:XMapNPTs.net] なんで正規表現? 完全一致でいいじゃろ? SortedListなら量に正比例して増えることはない
755 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 07:27:32.08 ID:u3u8nbsq.net] >>736 それおま環だろ
756 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 07:34:08.81 ID:u3u8nbsq.net] >>737 > 正規表現か何かで逐次マッチ検索してるはずだから なんだその意味不明な思い込みはw 普通に考えてハッシュなりB-Treeなり使ってるだろ そもそも逐次検索だとしても遅さが気になるほど大量の名前付き範囲使う時点でなにか間違ってると思う
757 名前:デフォルトの名無しさん [2019/03/22(金) 17:57:33.45 ID:DJ7JSKt5.net] 会社でブラウザの検索結果のページで いっぱいURLのリンク先が表示されるのですが そのたくさんのURLのそれぞれを開いたページ(毎回違うけど50ページくらいある)のデータを取得するVBAのコードを考えています。 IEの定番のCreateObject("InternetExplorer.Application")とDOMツリーの方法で実現できてはいるのですが 1つ1つページを開いて取得して閉じる、という作業がネットワークの遅さで異常に時間がかかります。 この複数のページを同時で取得する方法ってないでしょうか?よく知らない
758 名前:ッどJavaでいうスレッドみたいな? [] [ここ壊れてます]
759 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 18:35:53.24 ID:HaipTOms.net] >>741 VBAはマルチスレッド非対応だから無理
760 名前:デフォルトの名無しさん [2019/03/22(金) 19:06:27.17 ID:DJ7JSKt5.net] >>742 そりゃないよ、かあちゃん
761 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:28:02.41 ID:s6oj+Xdm.net] >>741 VBAでマルチスレッドは基本的に出来ないと考えるべき。 物凄く不安定だし、Excelのオブジェクト(Rangeとか)を触った途端にExcelが消える。 で、マルチスレッドは出来ないけどマルチプロセスは出来る。 1.プログラムのブックに指定のURLのページの情報を取ってくるプロシージャを作る 2.複数のExcel.Applicationを使って、自分自身のブックを別のExcelから開くメインプロシージャを作り、その中でobjExcel.Runを使って情報を取ってくるプロシージャを動かすようにコードを書く。 3.ブックを保存する。 4.メインプロシージャを動かす たぶん、こんな感じでできたはず。
762 名前:デフォルトの名無しさん [2019/03/22(金) 19:35:54.55 ID:DJ7JSKt5.net] >>744 ありがとうございます。 しかし、もし50個URLがあれば50個新しくExcel自体を起動しないといけないのですか? そんなことしたら激重になってしまうように思うのですが。
763 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:38:23.65 ID:ls5du2vw.net] 複数のInternetExplorer.Applicationのインスタンス立ち上げれば行けんじゃないか
764 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:57:22.45 ID:HaipTOms.net] >>746 今それができないって会話をしてたところだけど理解してる?
765 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 20:04:27.42 ID:ls5du2vw.net] >>747 どこでそれが出来ないって話をしてる?
766 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 20:19:56.99 ID:HaipTOms.net] >>748 >>742
767 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 20:49:35.12 ID:n3e2TSgf.net] >>741 フレームを50個並べたページのHTMLをローカルで作って開けば一気に読み込んでくれる
768 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 21:25:13.65 ID:uvzdlIQp.net] なんか勘違いしてるやつがいるけど、VBAがマルチスレッドじゃないことと、IEを複数開くのはまったく別のことだからな IEはOfficeとはまったく無関係の独立したプロセスだから、いくつでもインスタンス化できるし同時にネットアクセスできる IEオブジェクトを配列で作っといて、ページの読み込み完了を待たずにどんどん開いてけばいいんだよ
769 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:10:54.82 ID:HaipTOms.net] >>751 そのプロセスを制御するVBAがシングルスレッドだろ
770 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:13:33.32 ID:HaipTOms.net] >>751 あ、開けば終わりと勘違いしてる?
771 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:13:49.76 ID:LAgBLCyu.net] IEにタブをいくつも開いてもらって、みんな読み込んだところでおもむろに順番に処理すればいいってことだろ。
772 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:15:47.88 ID:CAtaruvO.net] >>752 VBAはシングルスレッドだが、IEでの読み込みは同時並行的にやってくれるんじゃねえの?
773 名前:デフォルトの名無しさん [2019/03/22(金) 22:38:21.07 ID:DJ7JSKt5.net] >>750 ? >>751 その具体的な方法をコードで例示する形で教えていただきたいのでござるよ。 いまだと Do While readyState < 4 Do Events Loop の待ちを50個のURLで1つ1つ順番にやってて 1つのURLを読んでデータ取って閉じる、というのをやるのが社内ネットワークが遅いため(データベースからの読み込みも含まれるからの)1つあたり1分近くかかってる。 だから異常に時間がかかる。 一気に全部同時にやれないかなと。
774 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:40:55.80 ID:tgov+uRX.net] そんなもんそれこそ流行りのRPAでやればいいのでは
775 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:40:56.05 ID:HaipTOms.net] できるっていうくせにコードは出てこないのね
776 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:57:51.11 ID:HaipTOms.net] そもそも回線が細いのはプログラムでどうこうできないから上司を説得して諦めてもらうしかない
777 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 01:14:24.21 ID:BU4e6Kdq.net] 趣味でやってるんじゃなかったら 適当なダウンロードソフト使ったほうが良いんじゃない
778 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:00:24.62 ID:36Js1rz1.net] 動くかどうか試してないけど、こんな感じでいいんじゃない? もう少し効率を上げるなら、読み込めたページからさっさと処理してもいいし Sub test() pg = 50 ' 同時に開きたいページ数 Dim ie() As Object Dim url() As String ReDim ie(pg-1) ReDim url(pg-1) 'ここでURL設定 For i = 0 To pg-1 Set ie(i) = CreateObject("InternetExplorer.Application") ' ie(i).Visible = True '表示しない ie(i).navigate url(i) Next Do flg = True For i = 0 To pg-1 If ie(i).readyState < 4 Then flg = False End If Next Loop Until flg '全ページの読み込み待ち 'ここで読み込んだページを処理 End Sub
779 名前:デフォルトの名無しさん [2019/03/23(土) 15:33:38.79 ID:BqJUz3fJ.net] >>761 ありがとうございます。 試してみます。 最初のFor Nextループがものすごく時間がかかりそうで楽しみです。 あと先日は説明の簡略化のためにシンプルに書いたけど 実は開いたURL内で、ある条件があると、さらにその親URL内のAリンクの子URLも開かないといけない複雑な事情があるのです。
780 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 19:47:18.63 ID:h2FSWEPH.net] >>761 Exit For抜けてますよ フラグも i = pg-1まで行けたときに立たせるだけで十分だと思います あと、非表示でIEを50立ち上げると中断した時のプロセスの掃除が大変なので、Ajaxで無ければXMLHTTP60を使うのも手かもしれません。
781 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 00:51:51.95 ID:gZMjxNOF.net] >>752 まさかIEオブジェクトの読み込み動作がVBAのスレッドで処理されてると思ってるのか? >>753 終わりじゃないので考慮点はある コード書こうかと思ったけど、>>761 さんが書いてるからまあいいか 読み込み完了の検出とかどうするか悩みどころではある イベントハンドラの動的設定か、せめてWithEventsが配列にも宣言出来ればなぁ まあ50も多重化してもオーバーヘッドかかるだけで高速化しない気がするから 数個固定で持たしてイベントハンドリングするのが現実的かもしれん
782 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:34:57.18 ID:Y3S3b5Ai.net] この場合Do Loopを抜ける条件が全ページの完了だから、Exit Forはあってもなくても結果というかスピードは変わらないね さっさと抜けたところで、またForループに戻るだけだし 個人的には「pg - 1」が何回も出てくるのが美しくないなあとか、ForとDoの順番を逆にした方がコンパクトになりそうだなあとか
783 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:38:23.22 ID:Y3S3b5Ai.net] 一括処理なら、この方がコンパクト まあ、ホストの応答速度や、次の処理の内容次第では終わったページからどんどん片付けた方がいいだろうけど For i = 0 To pg-1 Do Loop Until ie(i).readyState >= 4 Next
784 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 08:29:39.64 ID:myNgr9GS.net] >>765 > 個人的には「pg - 1」が何回も出てくるのが美しくないなあとか C言語とかに慣れてるんだろう VBA的には ReDim ie(1 To pg) ReDim url(1 To pg) For i = 1 To pg だろうね 可能であればieとurlをTypeで纏めてそれを配列にした方が見易い
785 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 08:58:33.34 ID:Mw3X0nZC.net] >>766 ははは、これは笑った。確かにこれが単純明快でコンパクト w
786 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 10:28:46.47 ID:3PVCt58k.net] >>766 それだとサイズのでかいページで待ちが発生する Do For i If ie(i)準備完了 And i.処理フラグFalse then 処理 処理フラグTrue カウント End if Next カウント=50 exit Loop
787 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 10:33:07.42 ID:Mw3X0nZC.net] >>769 投げてからの待ちだからいいんじゃねえの? 俺はやった
788 名前:アとないから知らんが、投げたらあとはIEが並行処理で取ってくるんだろ で全部取ってから次の処理なら問題ない でかいページでVBAが待っていても同時に他のページもIEが取って来てるんじゃねえの だからでかいページで待っていてもそれが終わったら他の軽いページも取り終っていてあとは ばたばたと進んで終了、と理解している [] [ここ壊れてます]
789 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 10:52:55.88 ID:Mw3X0nZC.net] >>769 ああ、すまん。それがわかってる上で待ち時間がもったいない、ということね >>766 もそこは注意書きはしているな
790 名前:デフォルトの名無しさん [2019/03/24(日) 10:56:37.24 ID:OZ1kvGmt.net] IEはマイクロソフトも使うなって言ってるのに VBAって不便だよね
791 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 11:58:25.29 ID:yYEn14s6.net] IE使えなくなったら、どうやってブラウザ制御するの? UIAutomation面倒くさいかから、
792 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 11:58:47.29 ID:yYEn14s6.net] getElementByしたいんだけど。
793 名前:デフォルトの名無しさん [2019/03/24(日) 12:34:48.16 ID:4ve/ST91.net] IE使えなくなったらってもう使ってる人なんていない セキュリティに甘いとこは使えるのか?
794 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 13:28:35.85 ID:Y3S3b5Ai.net] ちゃんと動くのか試してみた たしかにIEが複数開いて、平行処理でページを取ってくるね VBAのシングルスレッドとか完全に無関係やん
795 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 13:33:22.28 ID:gDjNFFGJ.net] >>776 まだそこ?
796 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 13:36:50.26 ID:PYh3zpOu.net] 大昔からあるファイルシステムだって非同期読み書きできる 1000倍遅いネットワークで出来ないはずがないだろうが
797 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 13:55:48.62 ID:gDjNFFGJ.net] >>778 無能管理職かよ
798 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 14:55:03.02 ID:gZMjxNOF.net] 現実的には50並列で全ページ完了待ちするのはどうもなぁ あと全力でループまわして完了待ちするのも無反応になるんじゃね とりあえずDoEvents挟もうぜ >>776 スレッド以前に、IEオブジェクトが別プロセスだから アウトプロセスのCOM使うのはVBAで並列やる、おそらく安全で簡単な唯一の方法 まあCOM作る方は大変だがな >>777 OSがサポートしてるだけで、VBAから使えるかどうかとは別の話 VBAで非同期並列やりたければ、基本的にはイベントベースでしかサポートされていない
799 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 17:00:18.75 ID:cASdygc2.net] >>776 これ、1つずつ待つ部分がVBAでマルチにしたいって話だったけどCreateObjectで既に別プロセスだから全部投げてから全部の完了を待つので正解なんだよな。 勘違いしてマルチプロセスでやろうとしちゃったよ。 ついでにApplication.Runで出来なくて、迷ってたんだけど、またまた勘違いでApplication.OnTimeが正解だった。 でもOnTimeって戻り値が取れないんだよな。
800 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 17:02:38.91 ID:cASdygc2.net] あと、ExcelVBAスレにあるようにInternetExplorer.Applicationじゃなくて別のオブジェクトの方が早いと思うよ。
801 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 17:15:34.95 ID:3PVCt58k.net] 講釈垂れはいいからコードはよ
802 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 17:48:52.18 ID:yrUzMInJ.net] とりあえずDoEvents。
803 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 21:00:07.33 ID:IVIO7oct.net] 取りあえず書いてみたんだが、1つずつ待っても速度が変わらん。 テスト用に繋げた所があんまり時間が掛からん所でReadyStateのループに入らんのよ。 取りあえずInternetExplorer.Applicationはやっぱり遅かった。 59個のURLから同じ場所にある特定のデータを取ってくる処理でMSXML2.XMLHttpなら5秒のところIEだと60秒くらい掛かった。
804 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 23:42:52.24 ID:Y3S3b5Ai.net] IEを普通にUIを持ったアプリケーションとして開けば、クッキーや画面のレンダリングからアクセス履歴の更新やキャッシュの整理までいろんな処理が走るから、そりゃ実質GETだけのXMLHTTPと比べたら遅くなるのは当たり前と言うか >>785 画像検索にそれぞれ違うキーワードを設定すれば、それなりに時間がかかるようになるから負荷のテストにはおすすめ
805 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 08:15:58.30 ID:O3TyiYmg.net] >>786 そんなことは知ってるが、ここの話で具体的なのがIEだから、いやいや、IEはこんなに遅いですよと注意喚起したんだよ。 まあ、Script関連でIEじゃないと駄目な場合もあるけどね。
806 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 21:50:57.49 ID:D+uIa6Au.net] 真のエクセラーならieなんか使わずにwebクエリーとか使って何とかするべきだろうが
807 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 23:08:06.35 ID:DuFQaNpH.net] getElementByもWebクエリも使ったことあるけど、 Webクエリはどうやって取ってきてるのか謎。
808 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 23:19:23.02 ID:XpTM98r8.net] レンダリングしないでペイロードのパースだけやってるんでしょ
809 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 00:39:52.05 ID:ke9zWH00.net] 誰もSelenium basic使わんの? IE使わなくていいしセッション維持とかも楽だぉ?
810 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 18:58:02.34 ID:ADoE3fhW.net] readystateが信用ならんのがな completeになっても完全に読み込めてなくてその後の要素取得処理に失敗とか高確率で起こるし WinHTTP使うのが確実だと思う
811 名前:デフォルトの名無しさん [2019/03/26(火) 22:23:16.17 ID:0P7j5sat.net] >>791 x だぉ o だよ 正しい日本語を使いたまえ
812 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 23:48:15.28 ID:KxwbGcFA.net] 結局Do LoopとOn Error Resume Nextで逃げるしかないっていう。
813 名前:デフォルトの名無しさん [2019/03/27(水) 00:00:47.48 ID:sk2gWEk1.net] >>794 x 結局Do LoopとOn Error Resume Nextで逃げるしかないっていう。 o 結局Do LoopとOn Error Resume Nextで逃げるしかないっていうことですね。 正しい日本語を使いたまえ
814 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 00:54:24.99 ID:bUJXWn5A.net] 口語体が理解できないやつが正しい日本語とか
815 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 06:30:58.48 ID:61Xepw/0.net] アスペかしら…
816 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 07:39:47.73 ID:qB5RyyD6.net] では、教えてくれ。 正しい日本語の"正しい"とはなんのことだ。 先に言っておくが、国語辞典や義務教育は関係ないぞ。
817 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 08:38:29.06 ID:oJzskUWb.net] >>798 お前のようなノイズではないこと
818 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 12:48:07.16 ID:Mdwmg5PN.net] >>798 国語辞典や義務教育関係ないと言うのならば口語体でも問題ないと思うが…。 例えば力不足、役不足のように意味を間違えて使っていては当然正しい日本語ではないが、今回の様な場合では相手方に伝われば良いということにならないか。
819 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 20:50:35.86 ID:GAoTTZZk.net] 関西弁は正しい日本語ではない
820 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 20:59:08.44 ID:M/yCVQ4H.net] 正しい日本語とは
821 名前:デフォルトの名無しさん [2019/03/28(木) 21:53:50.06 ID:cIkPDI6N.net] >>796 x 口語体が理解できないやつが正しい日本語とか o 口語体が理解できないやつが正しい日本語とかどういうこと?
822 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 23:24:25.12 ID:Q+Q3MpKo.net] 長いのでWithするかSetしましょう。 With 口語体が理解できないやつが正しい日本語 とか = × とかどういうこと? = 〇 End With
823 名前:デフォルトの名無しさん [2019/03/28(木) 23:39:02.51 ID:cIkPDI6N.net] Sub CorrectJapanese() Dim text As String Dim inputText As String text = "口語体が理解できないやつが正しい日本語とか" inputText = InputBox("あなたの日本語は?") If inputText = text Then MsgBox "アホ" ElseIf inputText = text & "どういうこと?" Then MsgBox "そのとおり" End If End Sub
824 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 23:57:12.09 ID:OmRArJOr.net] 日付フィルターを使うときにCriteriaに設定する値って、必ず一旦Double型に型変換したDate型データをもとにしてFormat変換しなきゃいけないのかな? Date関数の戻り値をそのままFormat変換してもうまくフィルターがかからなくて危うくハマりかけたんだが、後学のために識者がいたら教えてほしい
825 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 00:17:35.48 ID:PdUuDb+g.net] まともなレスには異論返せないのな
826 名前:デフォルトの名無しさん [2019/03/29(金) 00:47:46.11 ID:MmeaYZo8.net] >>807 x まともなレスには異論返せないのな o まともなレスには異論返せないのね
827 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 06:46:41.33 ID:YUbMxDIL.net] >>804 ピリオド抜けてる
828 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 12:23:42.03 ID:Fu/JMZl+.net] 異論返せていないまともなレスとはどれ
829 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 12:35:07.47 ID:7DnII+1F.net] >>810 この辺りじゃないか? >>799 >>800
830 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 12:37:39.38 ID:FHKNInbw.net] どうでも良いことで延々と論じるのは如何なものか。
831 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 18:52:59.03 ID:DRFZR9Lo.net] >>809 シンタックスエラーになります
832 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:25:26.20 ID:Fw0ogXHz.net] VBAで実行時にシンタックスエラーが出るのはどういう場合だろう デフォルト設定だと1行入力ごとに構文解析するし
833 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:27:30.74 ID:uS2atdcl.net] >>814 それ、1行ごとの構文解析だろ For Next Do Loop If End If のチェックまではしてないと思うぞ
834 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:28:29.64 ID:uS2atdcl.net] ああすまん。これってシンタックスエラーではないんだっけ でもエラーになるよね
835 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:41:55.36 ID:Fw0ogXHz.net] Nextを書かなかった場合は 「コンパイル エラー:For に対応する Next がありません。」 だった もしシンタックスエラーのエラーコード(変数Errの値)が存在すれば出る可能性があるってことだと思うけど、コードの一覧てどこにあるんだ? 検索してVBのは出るけどVBAのが見つからん
836 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:49:53.73 ID:uS2atdcl.net] シンタックスって言葉自体は構文規則だけど、コンパイルエラーって出るんだね
837 名前:デフォルトの名無しさん [2019/04/06(土) 00:50:26.14 ID:ocPEvB9Z.net] ExcelVBAでListViewを参照設定で追加して フォームに配置して使っているんですが、 別フォームからshowしてすでに項目をいくつか追加してある ListViewのあるフォームを表示したときに ListViewをアクティブ(そのままの状態から矢印キーで項目を選択できるようにする) にすることは可能ですが? 例えば Public Sub UserForm_Active() With listview1 .ListItems(1).Select .SetFocus End With End Sub とした場合に、フォーカスは確かにListView1にあるのですが、 その状態では項目が矢印キーの上下で選択することができません。 ListView1.SetFocusではListView1全体にフォーカスはあるが 肝心の中身の項目にはフォーカスがない状態ということなのでしょうか? なにかよい方法はありますでしょうか?
838 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 19:10:32.15 ID:nvpN9j7Q.net] sendkeysで Alt↓までやっちゃうとか あまりおすすめできる方法ではないが
839 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 00:26:59.66 ID:WKly27nG.net] このスレは生きてますか
840 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 17:39:05.84 ID:VJZKP3mE.net] 一応生きてるでしょ。
841 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 13:15:01.20 ID:SsAAf7AE.net] VBA勉強中のものです。 Setステートメントを勉強しているのですが、オブジェクト型についてお聞きしたいです。RangeオブジェクトとかWorksheetオブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。 どんなときに使うのか、教えてもらえるとありがたいです。
842 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 16:53:41.17 ID:SsAAf7AE.net] Excel VBA 質問スレで質問してみます。お邪魔しました m( _ _ )m
843 名前:デフォルトの名無しさん [2019/05/12(日) 02:32:02.86 ID:0u/cIV/f.net] >>823 オブジェクトなら同じものを頻繁に扱うときにコーディングミスをしにくくなる。 毎回、名前でアクセスしていると、ちょっとしたことで、別のものを間違って扱う可能性が高まって、実行時エラーを発生させやすくなる。 定数化していれば防げるが、定数のスコープを大きくしないといけないので、定数の値を変えるときにあっちこっちを確認しながら、直すことになり面倒なことになりやすい。
844 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 13:34:22.56 ID:p6Zrf1zY.net] object型の初期状態はNothing 参照先が存在しない場合もNothing返るのがあってis式で判定できる 一方でvariantの初期状態はemptyなのでis式がエラーになる
845 名前:デフォルトの名無しさん [2019/05/13(月) 18:12:50.85 ID:/95lNMvT.net] オブジェクトの値がNothingかどうかで判断するロジックはセンスがいいとは思えない。
846 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 22:51:51.62 ID:RqskJpsp.net] Typenameとか列挙定数とかポインタ関数の値で判定するのが良いわな
847 名前:デフォルトの名無しさん [2019/05/13(月) 23:46:53.76 ID:4/CDP/BQ.net] 自分で変数の値をコントロールしているのに、Nothingかどうかをあちこちで確認しているクソプログラマと1年前に仕事した。
848 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 08:31:35.00 ID:BLcva127.net] >>827 ライブラリ側は何で判定すべきなんだ? それともNothingを渡されたら挙動は未定義とするとか?
849 名前:デフォルトの名無しさん [2019/05/14(火) 11:18:55.94 ID:4FRIObo4.net] >>830 そのライブラリは他人が作ったものなのか?自分が作ったものなのか?
850 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 11:29:20.25 ID:5X9vxJLP.net] 判定すべきものが、誰が作ったかによって変わる?
851 名前:デフォルトの名無しさん [2019/05/14(火) 12:37:11.77 ID:W+bs/bzK.net] ライブラリに状態を持つプロパティがあればいい。 他人が作ったものを使うしかなく、オブジェクトがNothingかどうかでしか判断できないのなら、そうするしかない。
852 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 13:35:55.15 ID:UTGAJPws.net] >>833 ライブラリ関数が引数として受け取ったオブジェクトをどうNullチェックするかの話だぞ?
853 名前:デフォルトの名無しさん [2019/05/14(火) 16:16:33.74 ID:E8REZJpG.net] いきなりライブラリと言われても何のことやらわからない。
854 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 17:30:53.68 ID:UTGAJPws.net] >>835 >>827 が「オブジェクトの値がNothingかどうかで判断するロジック」って言ってるじゃん。 ある関数がオブジェクトを受け取ったときの判断方法の話だと思うんだけど、 自分はライブラリ作者なのでその場合どうするのがいいのか気になった。
855 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 21:45:48.80 ID:s0Vi/y5R.net] 普通にエラーでブレイクすればいいじゃん
856 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 22:22:18.25 ID:jcYCvcdA.net] >>837 エラーとは限らないけど変数の状態に応じて処理を分けたいと言うのはある。 空のオブジェクトに対してはまた空を返すとかね。 >>829 の言ってることはわかるんだけど、>>827 と>>828 の主張がわからん。 Nothing判定はシンプルだけどTypeNameやenumだともっと分岐のパターンが増えちゃうじゃん。
857 名前:デフォルトの名無しさん [2019/05/14(火) 23:23:54.78 ID:+OBjJPst.net] >>836 世の中、変なやつがいて、オブジェクト変数に値をセットして、何も変わるはずがないのに、直後にオブジェクト変数の値がNothingかどうか判定するコードを書くやつがいる。
858 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 23:30:59.65 ID:KmX6ljlC.net] 代入が成功したかどうか確認するテクニックも存在するから、そういう分野からの転職かな? 具体的には、コンパイラの型チェックを使った裏技だったり、ハードウェアの故障チェックなんかで使われる
859 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 00:37:47.48 ID:yOOg6UjC.net] 直後であってもサブルーチンに分かれてるなら 入力情報のチェックを行うのは普通のこと
860 名前:デフォルトの名無しさん [2019/05/15(水) 02:24:21.58 ID:MwugOkQt.net] なんか例のCプログラマがしつこいけど、いまどき関係ない別プロセスがメモリ上の値を書き換えたりするミスは、OSレベルでもCPUレベルでもあるので、持論を批判されていると思って反論しなくていいよ。 ここは漠然としたVBAのスレッドだから、見ているひとにはあなたの言うことは難しくて理解できないと思うよ。 スルー力がないのか、寂しくてかまってほしいのか知らないけど、要はクソコードを書くなと言ってるだけだ。
861 名前:デフォルトの名無しさん [2019/05/15(水) 02:28:07.88 ID:MwugOkQt.net] なんでVBAスレで組み込み系のショボいハードウェアでのプログラミングを語っているのか? ハードウェア、OS、ミドルウェア、プログラミング言語によって考え方やどこまで想定するのかは全然、違うからいっしょくたにしないでもらいたい。
862 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 02:29:01.28 ID:O3OiMSIx.net] 一般ユーザー権限のアプリで別プロセスのメモリにアクセスできたのは、平成どころか昭和時代の話ですよ、おじいちゃん 希にOSやCPUのバグ騒ぎが起きますが、そんなのは例外中の例外なんで普通は気にしなくていいことです
863 名前:デフォルトの名無しさん [2019/05/15(水) 02:37:35.16 ID:MwugOkQt.net] Windows 95、98、98SE、MeがいつのOSかもわからないのか
864 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 05:12:46.46 ID:TahQLJDH.net] そこまでわかってるのに、タチの悪いやつだな
865 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 16:00:34.96 ID:D3RbfE7K.net] イベント用インスタンスはPublicでやるの?
866 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 20:12:16.23 ID:XVltvZnu.net] せっかくのイベントなのにPrivateにしたら星飛雄馬のクリスマスパーティーみたいになるじゃん
867 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 20:14:51.37 ID:RIeke8Yt.net] >>848 座蒲団3枚あげる
868 名前:デフォルトの名無しさん [2019/05/15(水) 20:49:39.00 ID:WHH9UP0v.net] 何か面白いこと言った? 全然わからない。 興味あるからなぜ面白いか教えて?
869 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 02:08:04.88 ID:Ab5DOH6n.net] >>850 ニコ動 https://www.nicovideo.jp/watch/sm9033179
870 名前:デフォルトの名無しさん [2019/05/16(木) 14:30:12.55 ID:wWtnEH3A.net] コード書く画面を 背景は黒に、文字は白に、する方法を教えれ
871 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 17:24:09.37 ID:EX4VaMcQ.net] >>852 ダークテーマと天に向かって3回唱える
872 名前:デフォルトの名無しさん [2019/05/16(木) 17:37:55.97 ID:wWtnEH3A.net] >>853 知っておる mevius.5ch.net/test/read.cgi/tech/1556203263/261- 下がってよいぞ
873 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 22:41:23.89 ID:ufKYoT27.net] Wordで文字置換をしたいのですが、特定のフォントの文字列を検索して、文字列は変えずにフォントだけ変えたいです。半角を全角にしたいのですが可能でしょうか。ヒントだけでも教えていただけると有り難いです。
874 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 23:01:54.16 ID:ubNtK04k.net] >>855 できる 任意のRangeのCharactersのフォントを一字ずつ調べて、探しているフォントが適用されている文字が見つかったらその文字のフォントを修正すればいい 半角から全角に変換するにはStrConv関数を使用し、第2引数conversionには列挙定数のvbWideを指定する
875 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 23:16:33.41 ID:fmz+6NIG.net] wordの標準機能で半角全角変換あったような
876 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 23:29:43.67 ID:ufKYoT27.net] >>856 ありがとうございます! やってみます。 >>857 上手くいかなかったと思います。。
877 名前:859 mailto:sage [2019/05/28(火) 16:00:47.95 ID:JWvhlEsx.net] Findを利用したコードについて教えて下さい。 書籍、サイトで掲載されていたコードを利用し、少し変えたものです。 Findメソッドを使ってC列の”たろう”を検索します。 探し出したら、A〜C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1〜G1に上書きされてしまいます。 Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。 どのように違うのか、ご指導お願いします。 ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです A B C D E F G 1 日付 売上 担当者 000 AAA たろう 2 000 AAA たろう 333 DDD たろう 3 111 BBB はなこ 4 222 CCC たかし 5 333 DDD たろう 6 444 EEE はなこ 7 555 FFF くみこ
878 名前:859 mailto:sage [2019/05/28(火) 16:01:28.69 ID:JWvhlEsx.net] 859の続き Sub Find() Dim temp As Range, tempAddress As String, i As Long With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2) Set temp = .Find(what:=“たろう”) If Not temp Is Nothing Then tempAddress = temp.Address i = Cells(Rows.Count, "E").End(xlUp).Row Do temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E") Set temp = .FindNext(temp) Loop While temp.Address <> tempAddress End If End With End Sub Sub copy() Range("A:G").Clear Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1") End Sub
879 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 16:38:34.40 ID:Z4r31Ymp.net] >>860 i=i+1 が抜けてるだけじゃね?
880 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 16:40:41.12 ID:Z4r31Ymp.net] >>861 それと、行や列用の変数として r c 使ってもええんやで
881 名前:859 mailto:sage [2019/05/28(火) 17:30:10.75 ID:xKlK3b52.net] >>861 ファッ!それかも! マジでありがとうです! 何かあったらまた聞きます ホントありがとう、頭いい人!
882 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 18:33:24.92 ID:1J9FOJWe.net] 初心者です。 Wordのユーザーフォームを作りたいのですがExcelの書籍しかなくて詰みました。 Excelのセル番地『A1』に相当するのが『ActiveDocument .tables (1) .cell (1.1)』というところまで突き止めて、 とりあえずテキストボックスに打ち込んだ文字列をセルに転記するところまではできたのですが、それ以上のことができません。 例えば繰り返し同じフォームを使う前提で、古いデータを削除したい時、Excelならば 『Range("A1") .CleanContents』で済むっぽい(うろ覚え)ですが これをActiveDocumentで再現するにはどうすればよいでしょうか。 まだ文法など全く理解できていませんが、素人目に『Range(”ActiveDocument .tables (1) .cell (1.1)”).Select .CleanContents』 などと書いてしまいたい訳です(当然、動きませんでした) 加えて、WordVBAを中心にお勧めの書籍などありましたら教えていただきたいです。 今の書籍は痒いところに手が届かず…
883 名前:859 mailto:sage [2019/05/28(火) 19:44:38.82 ID:xKlK3b52.net] >>861 set temp = .findnext(temp)の下に i=i+1を入れた所、できました。 本当にありがとう!助かりました(T^T)
884 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 00:12:19.46 ID:S0wmSPvZ.net] >>864 定番は「最速攻略 Word マクロ / VBA徹底入門」 Word VBAの書籍やWEBサイトは選択肢が圧倒的に少ないから、基本がわかったらVBEのオブジェクトブラウザやネットでMSDNを見た方が確実
885 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:29:45.93 ID:YAhbpcsl.net] 学校でVBAを勉強した方はどんな
886 名前:Q考で勉強したんでしょうか? [] [ここ壊れてます]
887 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:30:35.46 ID:YAhbpcsl.net] ×参考 ◯参考書
888 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:32:43.10 ID:YAhbpcsl.net] 書籍の名前聞いてみたい
889 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 15:12:11.08 ID:V/L1IaNJ.net] >>Wordのユーザーフォーム 必要性が今一分からん
890 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 18:04:51.34 ID:2aR1E9YD.net] Wordは機能拡張に凝り出すと面白いよ
891 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 18:38:59.73 ID:3bWSKYGB.net] >>870 いろんなソースで、色つけたり太字にしたり、用紙指定や段組みして印刷させる 。 炎上プロジェクトに突撃するのに必須
892 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 18:47:13.10 ID:2aR1E9YD.net] >>864 '選択範囲内にあるテーブルの一行目以外をクリアします。 Sub clearSelectedTableData() If Word.Application.Selection.Tables.Count = 0 Then 'MsgBox "Select Any Table!" Exit Sub End If Dim t As Word.Table For Each t In Word.Application.Selection.Tables Dim r As Long, c As Long For r = 2 To t.Rows.Count For c = 1 To t.Columns.Count t.Cell(r, c).Range.Text = "" Next c Next r Next t End Sub
893 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:32:14.84 ID:2aR1E9YD.net] こっちのがスマートだった '選択範囲内にあるテーブルの一行目以外をクリアします。 Sub clearSelectedTableData() If Word.Application.Selection.Tables.Count = 0 Then 'MsgBox "Select Any Table!" Exit Sub End If Dim t As Word.Table For Each t In Word.Application.Selection.Tables If t.Rows.Count > 2 Then Dim r As Long For r = 2 To t.Rows.Count t.Rows(r).Range.Delete Next r End If Next t End Sub
894 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:50:35.91 ID:2aR1E9YD.net] もし文字編集でcell()下位の.Rangeが省略されてるのを知らないと cell.Range.Deleteの文字削除とcell.Deleteのセル削除が 使い分けができないので注意
895 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 22:47:58.04 ID:JR52NV0g.net] >>871 そうだろうけど、 他のOfficeでも出来るんじゃないの? 拡張って参照設定の事でしょ? >>874 マジかよWord Tableって・・。 ExcelでSQLが使えたり、Officeは割と何でもありだとは思っていたが・・。
896 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 23:32:10.68 ID:2aR1E9YD.net] >>876 リボンやクイックアクセスツールバーとかで増やすほうね>機能拡張
897 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 00:15:43.14 ID:P50R/Vqw.net] NothingとNullとEmptyの違いがわからない MSはナンセンス、はっきりわかんだね
898 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 00:35:41.84 ID:/aDGaFpI.net] EmptyはVariant型の初期状態(何も入ってない) セルの初期状態でもある 確認方法 新規ワークシートに対して、イミディエイトウィンドウで Print TypeName(Cells(1,1).Value) とすると Empty と表示される Nothingはオブジェクト型変数にオブジェクトが代入されていない(結びつけられていない)状態 NullはExcelだと出番がないと思っていい 主にAccessでデータを扱う時にNullが必要な場面が出てくる
899 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 01:16:13.09 ID:gZfVve3x.net] 複数セルのRangeからプロパティとってくるとき不一致だとNullになるくらいやな
900 名前:デフォルトの名無しさん mailto:sage [2019/06/02(日) 23:52:18.62 ID:I/vPFDmN.net] ユーザーフォームの、複数のテキストボックス、 例えばオブジェクト名をtb1、tb2とかにしてループ文に組み込むということはできますか? オブジェクト変数というのが関係しそうな気がするんですが、 テキストを読んでも理解できない…
901 名前:デフォルトの名無しさん mailto:sage [2019/06/02(日) 23:56:26.76 ID:56udfPFB.net] >>881 すべてのテキストボックスでループ。 目的のテキストボックス群で名前を元に絞り込みすりゃ良いんじゃね。
902 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 02:05:13.53 ID:OjX7Po3D.net] 普通はテキストボックスのTagプロバティに区別できるキーワード入れといて For eachでUserform.controlsやると思う
903 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 08:31:11.52 ID:mpVNxBbp.net] >>881 controls(”tb” & i)
904 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 13:44:44.83 ID:DCISZKmM.net] >>881 オブジェクトの配列作って、という事だと思うけど 使うとしたらオブジェクト参照を保持したまま色々したい時ぐらいかも 値の参照とセットだけなら皆さん挙げられているcontrolsでやりますね
905 名前:デフォルトの名無しさん [2019/06/08(土) 00:31:30.90 ID:ycKO1KOa.net] vba スタンダード 、accessのおすすめの問題集ってやっぱり公式テキストでしょうか。
906 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 11:47:13.10 ID:pWKWNjKi.net] エクセル Cells(1,1) ワード Cell(1,1) ↑ は? 何でワードにはsが無い?
907 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 16:19:13.22 ID:pA8BerVC.net] >>886 先月に出題範囲かわったし公式でしょ
908 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 16:27:53.67 ID:pA8BerVC.net] >>887 Word.Selection.CellsとかRow.Cellsとかあるで Tableには.Cell(1,1)しかないがな ちなCellsはxy指定できんがCellはxy指定必須や エクセルのプロパティのほうが異常なんやで
909 名前:デフォルトの名無しさん [2019/06/12(水) 20:44:31.77 ID:WUwNpP1f.net] 新垣結衣 AVデビュー https://www.xvideos.com/video48369883/_ai_
910 名前:デフォルトの名無しさん [2019/06/12(水) 21:19:56.07 ID:Hop9ON+a.net] vba エキスパート は、excel ベーシック以外は公式テキストまだだから受験は待ったほうがいいですよね。
911 名前:デフォルトの名無しさん [2019/06/19(水) 04:56:48.65 ID:tVNS+22r.net] 【出資】松本卓朗 人工知能詐欺【注意】 https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
912 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 19:31:10.71 ID:XS1zoxjN.net] 以前word VBAの質問をした者ですが、その節はありがとうございました。 お陰様で処女作のユーザーフォームが完成しかかっているのですが、最終問題に難儀しています。 やりたい事:「保存」ボタンを押す→ActiveDocumentと同じ場所に「記録表」というフォルダを作成し、 その中に「"氏名”」というファイルを生成する。既に「記録表」のフォルダがあればフォルダは作成せず、 そちらにファイルを生成する。 なお、不特定多数のユーザーが使う前提です(保存場所を手打ちしたらユーザー名で詰む) 四苦八苦しましたが、ひとまず確認用にdesktopに生成しようとしてなんかユーザーフォルダの滅っ茶根深い場所に生成されたり、 推測で打ってみたメソッドが全く機能しなかったり(フォルダの有無を確認するようなのって何だろう) なんというか、Excelのfxボタンみたいにメソッドの内容を教えてくれるやつ、ないんですかね… ちなみに職場のPCはスタンドアロンでヘルプに繋がらず、自宅PCにはOfficeが入ってないです。
913 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 22:54:40.46 ID:klKakRL3.net] >>893 オフラインヘルプインストールできなかったっけ… 見てみて F2キーでオブジェクトブラウザが表示される これ無しで開発なんてやってられない
914 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 05:52:40.82 ID:A+zOKxp7.net] 今オフラインのヘルプって提供されてないんじゃないのか?
915 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 08:17:29.97 ID:uunD1dKc.net] >>893 デスクトップはエクスプローラーの左のとこにカタカナで出てるとこと同じやで 深いとこにできても、そちらから近道すればよろし
916 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 08:27:47.11 ID:uunD1dKc.net] >>893 〉フォルダの有無確認 昔は Dir()だったけど、今は filesystemobjectかな。 参照設定も必要なので使い方も含めてggッテください folderexists()
917 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 10:33:29.10 ID:aRzPCUod.net] 公式オフラインヘルプがあったのは2013だな
918 名前:2016もオフライン版があるけど英語 https://github.com/OfficeDev/VBA-content/ 基本的な機能は2013からあんまり変わってないから、2013用のヘルプを入れてしまうという手もある 使い勝手は悪いけど、いつでも参照できるという利点はあるから [] [ここ壊れてます]
919 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 09:21:12.11 ID:IYAeNPRu.net] Activedocument.Pathで所在フォルダのパスが出せる これとフォルダ名とファイル名繋げた文字列つくればSaveAs2の引数にできる
920 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 18:32:58.67 ID:pdVAutd4.net] 質問です。excel2016の並び替え機能で 漢字、かな(あ〜ん)、アルファベット(a〜z)で並べ替えて漢字の中でも「本店」を最上位とできませんかね? 降順だと上記並びなのですが、かな(ん→あ)、アルファベット(z→a)になります。 Custumorder に「本店」を入力すると漢字中で1番下になります。 よろしくお願いします
921 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 20:26:59.08 ID:JKpFRzRw.net] >>900 本店の前にスペース入れる
922 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 21:08:13.27 ID:pdVAutd4.net] >>901 ありがとうございます。 やってみます。
923 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 12:19:45.93 ID:Siuy47lc.net] Wordの表で、 ActiveDocument.Tables(2).Select みたいに選択したいのですが、どれだけ表を分割しても、 全ての表が Tables(1) という扱いなようでエラーになります。 ひとつ前に似たようなものを組んだ時には問題なくTables(2)になりましたが、 それと構文上は全く違いはありません。 どうしたら Tables(2)という扱いになるのでしょうか。
924 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 22:43:55.95 ID:lDcVSkIh.net] ユーザーフォーム内のコンボボックスにUSBの中にある画像一覧というフォルダ内の全ての画像名を表示したいのですがうまくいきません。 どのように変更すればよいか教えていただけませんか? Private Sub UserForm1_load() Dim myList As String Dim myPath As String Dim iName As String myPath = "D:/画像一覧/*jpeg" fName = Dir(myPath & "*.jpeg") Do While iName <> "" If myList <> "" Then myList = myList & " " & iName Else myList = iName End If iName = Dir Loop If myList = "" Then Exit Sub myList = Split(myList) ComboBox1.List = myList End Sub
925 名前:デフォルトの名無しさん mailto:sage [2019/07/05(金) 02:42:43.50 ID:grV1bh4s.net] 取得するのが D:/画像一覧/*jpeg*.jpeg になってるとか fName は iName の間違いじゃないのかとか myList は String なのにSplitした後のものを代入してるとか
926 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:30:25.64 ID:z73aGQye.net] >>905 返信遅れて大変申し訳ありません 3つのご指摘直して反映できました。 ありがとうございました。
927 名前:デフォルトの名無しさん [2019/07/08(月) 13:46:50.21 ID:81aCmz3kf] 以下のようにWorksheet_Changeで加算して繰り返す内容で作りたいんですが、 コードまとめられませんかね? Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$E$3" Range("$I$3").Value = Date Case "$E$4" Range("$I$4").Value = Date Case "$E$5" Range("$I$5").Value = Date ・ ・ ・ End Select End Sub
928 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 16:22:05.73 ID:eKMV/4VB.net] ExcelVBAのユーザーフォーム上で、PDFを表示、操作をしたいです。 ですが、ユーザーフォームにコントロールを追加しようとすると、 「要素が見つかりません」とダイアログが表示され出来ません。 どなたか解決策をご存じの方がいましたら、教えていただけますでしょうか。。 Acrobat pro DCはインストールしてあり、ExcelはOffice365を最新の状態で使用してます。
929 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 18:51:11.10 ID:HFVXfXT2.net] >>908 EXCELは専用スレがあるので、そちらへどうぞ
930 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 10:59:16.22 ID:nW8IFIW6.net] >>909 ありがとうございます。 そちらに書いてみます。
931 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 15:00:22.98 ID:Jc+eFMLQ.net] ここで質問していいかわからないんですが、違ったら誘導していただけると助かります。 メッセージボックスを最前面にするために以下のコードを利用したいのですが、呼び出し元の下から3行目のvbOKOnly を vbYesNo に替えた後、選択ボタンを取得する方法がわかりません。 どのようなコードを足したらいいかご教示いただけないでしょうか。 【呼び出し元】 Option Explicit Dim WSHObj Dim Args Set WSHobj = WScript.CreateObject("WScript.Shell") Args = "cscript ""C:\Program Files\PPX\script\WSHPopUP.vbs""" _ & " ""出力メッセージ""" _ & " 0" _ & " ""VBS名称""" _ & " " & vbOKOnly ←vbYesNoに替える WSHObj.Run Args,0,true Set WSHobj = Nothing 【WSHPopUP.vbs】 Option Explicit Dim Arg Dim WSHObj Set WSHobj = WScript.CreateObject("WScript.Shell") Set Arg = WScript.Arguments WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3) Set WSHobj = Nothing よろしくお願いします。
932 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 19:26:49.04 ID:uFuQVnLY.net] 【呼び出し元】 Option Explicit Dim WSHObj Dim Args Set WSHobj = WScript.CreateObject("WScript.Shell") Args = "cscript ""C:\Program Files\PPX\script\WSHPopUP.vbs""" _ & " ""出力メッセージ""" _ & " 0" _ & " ""VBS名称""" _ & " " & vbYesNo Dim hoge '受け取り用に追加 hoge = WSHObj.Run(Args,0,true) 'この変数hogeにvbYes=6かvbNo=7が入る。 '何か処理を書く Set WSHobj = Nothing 【WSHPopUP.vbs】 Option Explicit Dim Arg Dim WSHObj Set WSHobj = WScript.CreateObject("WScript.Shell") Set Arg = WScript.Arguments Dim fuga '戻り値用に追加 fuga = WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3) 'popupの戻り値を取得 WSHObj.Quit fuga '呼び出し元に終了コードとして返す Set WSHobj = Nothing
933 名前:デフォルトの名無しさん [2019/08/14(水) 19:27:35.96 ID:uFuQVnLY.net] 他にExecを使う方法もある
934 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 20:05:03.77 ID:6C5bzX4k.net] vbDefaultButton1 とか、そういうのじゃなくて?
935 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 00:01:28.86 ID:GUoAoBO9.net] >>912 ありがとうございます! 試してみます! >>914 すみません、vbDefaultButton1 がわかりません
936 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 11:35:25.09 ID:vco+QnrA.net] >>912 >911,>915です。 教えていただいたコードを試してみたのですが、 ‘何か処理を書く のところに MsgBox hoge と入れたのですが、「はい」「いいえ」どちらの場合も 0 が返されます。 どうしたらいいでしょうか
937 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 13:41:00.72 ID:2LlAcZB1.net] ??? VBAなの? VBSなの? MsgBox使えるのに、何でWscript使ってんの?
938 名前:デフォルトの名無しさん [2019/08/16(金) 13:48:44.09 ID:mZqFzvyq.net] 朗報 【アプデ/10】 2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて https://asahi.5ch.net/test/read.cgi/newsplus/1565930238/
939 名前:デフォルトの名無しさん [2019/08/16(金) 14:13:30.60 ID:WTD6eyC3.net] >>916 【WSHPopUP.vbs】 のWSHObj.Quit fuga は間違い。エラー出してる。 Wscript.Quit fuga が正しい
940 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:24:33.34 ID:ELmh1Bgt.net] >>919 返信遅くなってすみません。 レスの通りに修正し、 さらに fuga = WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3) 'popupの戻り値を取得 ↓ fuga = WSHObj.Popup(Arg(0),Arg(1),Arg(2),Arg(3)) 'popupの戻り値を取得 に変更し、成功しました。 たいへん助かりました。 ありがとうございました。
941 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 10:50:56.65 ID:L8CrQHgr.net] WordのアクティブXコントロールのテキストボックスなのですが BackStyleを0設定すると背景色は消えるのですが デザインモードを解除すると背景色が出てしまいます これはバグでしょうか
942 名前:デフォルトの名無しさん [2019/10/05(土) 18:37:18.60 ID:t92B7IO1M] winAPIのAddClipboardFormatListenerをVBAで使う方法教えてください。 Private Declare PtrSafe Function AddClipboardFormatListener Lib "user32.dll" (ByVal hWnd As LongPtr) As Long Sub test3() AddClipboardFormatListener (hWnd) End Sub として実行してもなにも起きません。
943 名前:デフォルトの名無しさん [2019/11/05(火) 18:33:26.09 ID:CrKvYzfV.net] DataObjectオブジェクトについて https://chiebukuro.yahoo.co.jp/ VSI
944 名前:デフォルトの名無しさん [2019/11/05(火) 18:35:53.47 ID:CrKvYzfV.net] DataObjectオブジェクトについて https://chiebukuro.yahoo.co.jp/ FQB
945 名前:デフォルトの名無しさん [2019/11/06(水) 06:26:58.33 ID:jiZZUv+M.net] CInt 関数 VBA vba-auto.com/cint_function_vba/ NQ2
946 名前:デフォルトの名無しさん [2019/11/06(水) 06:26:59.50 ID:jiZZUv+M.net] CInt 関数 VBA vba-auto.com/cint_function_vba/ NQ2
947 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 09:09:00.43 ID:IRESAa/B.net] Exchange / Outtlook VBAの質問です 初歩的な質問で申し訳ありませんが、お知恵を拝借できないでしょうか 任意の名前を持つ配布リストや連絡先グループに属するExchangeユーザーのSMTPアドレスの一覧を取得するにはどうしたら良いのでしょうか 配布リストや連絡先グループをExchange ユーザーとして取得するところまでは出来ているのですが、そこから先がうまくいきません なお配布リスト、連絡先グループいずれも個人ユーザーのみが登録されている前提なので、再帰によるメンバー取得は不要な状況です
948 名前:デフォルトの名無しさん mailto:sage [2019/12/31(火) 13:22:12.18 ID:CEriAQ2K.net] エスパー的にはexchangeユーザーのユーザー一覧と配布リストのユーザーの 名前を比較すればいいんじゃね
949 名前:デフォルトの名無しさん mailto:sage [2020/04/20(月) 00:19:17.36 ID:DXvjb/RZ.net] 3日がかりの捜索ww あきらめないのな
950 名前:デフォルトの名無しさん mailto:sage [2020/05/10(日) 01:11:39 ID:DSeO3ORc.net] 3日どころじゃないぞ
951 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 10:28:15.88 ID:vLFHqXr3.net] >>927 これについて何か解決方法ありましたか?私も配布グループ取得で難儀しております。
952 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 12:24:29 ID:palYJx03.net] 半年放置で読むかね
953 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 10:39:28 ID:vabPclBn.net] >>927 と>>931 って同一人物だろどうせ
954 名前:デフォルトの名無しさん [2020/06/27(土) 08:55:28.74 ID:9qJBLgyD.net] Aex
955 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 16:37:07.95 ID:TjDVHLrR.net] VBAの質問スレで質問するのはなぜ馬鹿ばっかりなのですか?
956 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 16:43:50.13 ID:CiV3+vm0.net] >>935 このスレのレベルを知ってる普通以上の人はここを頼ったりはしないから
957 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 22:25:50.10 ID:R8+8lu0C.net] 頼むからVBAでWin32 APIを呼び出すのはやめてくれ そこまで要求するなら包括的な自作DLLを作ればよいと
958 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 04:44:26.92 ID:+vVO/8n9.net] >>937 なんでやめてほしいの?
959 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 07:53:31.55 ID:tbEOHCQG.net] ものぐさが使うのがVBAなのに いちいちDLL化なんてめんどくせえ
960 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 10:51:54.06 ID:03QLQuvk.net] >>938 Declare文が多すぎてコードが見づらい
961 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 11:07:05.40 ID:4WTYr4qc.net] 見なきゃいいだろ
962 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 14:43:36.83 ID:HEMY1mlG.net] Win32API使える奴がDeclare文読むの? そりゃ、間違ってるとかおかしなのも中にゃあるけど、普通そんなとこ見ないだろ。
963 名前:デフォルトの名無しさん [2020/07/14(火) 21:09:03.79 ID:66utiKuE.net] 質問スレにも書き込んだのですが二つのieを起動して2つ目のieでpdfを開いて名前をつけて保存したいのですがexecwbを行うと一つ目のieのhtmlが選択されてしまいます。どうかやり方を教えてください。よろしくお願いします。getIEはシェル取得ファンクションです。 Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.navigate "yahoo.jp ” Dim ie2 As InternetExplorer Set ie2 = CreateObject("InternetExplorer.Application") ie2.Visible = True ie2.Navigate2 "C:\\Desktop\test.pdf", 1 Set ie2 = getIE("test") Dim test As String test = "c:\test\test.pdf" ie2.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, test End Sub
964 名前:デフォルトの名無しさん [2020/07/14(火) 21:45:01.80 ID:euO1Ygvg.net] 初心者です。どうかお力添えをよろしくお願いします。
965 名前:デフォルトの名無しさん [2020/07/14(火) 22:53:58 ID:euO1Ygvg.net] すいません 自己解決しました。単純なスペルミスでした
966 名前:デフォルトの名無しさん mailto:sage [2020/08/03(月) 07:54:11.09 ID:4AChPi7X.net] 製品番号のフォルダ検索して中のPDFファイルを開くようなマクロ書いてるんだけど 先日Officeのアップデートしたら、件のマクロがしばらく応答なしになって 悪意のあるマクロ云々とか言われてExcel強制終了になった それ以後そのマクロは激遅に ブックのファイル名変えたりマクロの関数名変えたりするとしばらくは元の速度に戻るが 1日位経つとまた遅くなる 調べてみたら、VBScript.RegExpのExecuteメソッドが10秒位かかるようになってる 通常は30msで終わるような代物がだ どうもShellやRunで一度に多数のPDFファイルを開いているのがお気に召さなかったらしく ファイル名や関数名でアンチウィルスのブラックリストに載る? そのあとはそれっぽい名前のメソッドが標的になり遅くなるような感じ こういうの経験した人いる?
967 名前:デフォルトの名無しさん mailto:sage [2020/08/03(月) 12:15:10.36 ID:wycAObPT.net] アンチウィルスソフトとかいうウィルスを捨てろ
968 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 17:10:57 ID:FjnHeWDC.net] 会社のPCじゃなければそれもありだが… paloalto trapsとかいう奴 毎回反応する訳じゃないのが嫌だし 編集中のデータも問答無用でごっそり強制終了しやがるふざけんな
969 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 03:07:47.57 ID:EWWIYLqc.net] 除外指定すればエエやん
970 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 09:06:26.86 ID:FS19WAoY.net] >VBScript.RegExpのExecuteが10秒 と >ShellやRunで一度に多数のPDFファイルを開いている の関連がわからんね この二つは分けて原因を探るべきじゃ?
971 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 09:37:11 ID:FS19WAoY.net] マクロ付ファイルでPDF開かせるてのは相当に怪しいと捉えられる可能性は高いね セキュリティ変更や除外設定なんてのは出来ればしたくないだろうし引っかからないような対策があればいいがな ShellやRunでPDF開くんじゃなくExcelもしくはWordに取り込ませるようにすると引っ掛からないかもという気がしなくもない
972 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 06:47:20 ID:SEE4FkRy.net] VBAから直接PDFを開くんではなく バッチファイルを書き出し実行することで反応の確率は減ったが アンチウイルスが反応しやすい型番とかあってよくわからん 正規表現のexecuteメソッドは「それっぽい」名前のメソッドだろ? これがアンチウイルスが反応したときに動作してた関数から呼ばれた時だけ遅くなるんだよ 同じブック中の他の関数から呼ばれた時は高速のままだ dir関数でフォルダ内部のファイル名取得して正規表現検索してる時だけアホみたいに遅くなる時がある
973 名前:デフォルトの名無しさん [2020/09/01(火) 22:25:39.71 ID:zpaWCruh.net] VBA開発を頼まれた いくら位金額を提示したら良いか誰か教えてほしい 内容は不動在庫を15店舗くらいあグループ店の売り上げデータから引取先の候補を検索するシステム 商品のバーコードから行き先候補を検索する予定。 この内容ってアウトソーシングするといくら位?
974 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 22:33:35.56 ID:l37i0zd6.net] 50円
975 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 00:25:45.48 ID:aLOgXzIZ.net] 余裕みて1人週
976 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 07:41:48.93 ID:9bMNhGbM.net] >>953 マジレスするとVBAは安いので1人月50ぐらいかな。 内容の詳細が分からないが、大して難しいとは思えないので。 どんなに簡単でも50以下は有り得ない。
977 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 12:23:19.05 ID:IJ4By44m.net] >>953 人によるだろうな 安く提示すると未経験者とかがくるぞ
978 名前:デフォルトの名無しさん [2020/09/04(金) 13:35:21.25 ID:YrY1uJ8P.net] 皆さま回答ありがとうございました!
979 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 14:34:31.84 ID:NQbTfPgu.net] >>946 遅レスだけど 速度が遅い件は経験ありますよ うちの環境で調べたらSYMANTECのエンドポイントは大丈夫で、MSのディフェンダーだと遅かった Win10のバージョンも影響したかもしれないけど、現行サポート対象バージョンは、ディフェンダーだとすべて遅い 会社のPCなんでActiveDirectory、SYMANTEC、SKYSEAがスタンダードなんだけど、更新時の不具合があったんで一部のPCでディフェンダーを使ってて発覚した VBSの内容は、多少分岐やループはあるけど正規表現を使って置換するだけの簡単なものだった
980 名前:デフォルトの名無しさん [2020/09/09(水) 22:08:05.33 ID:kLG5WjnA.net] ミッションクリティカルな仕事をVBAでやってるのに、 少し前から動かなくなって修正したくても前任者がこの世に不在+仕様書やマニュアル無し+社内プログラム分かる人いない って状況割とよく聞くけど、まあ自分が担当することになったんだけど、これどーすりゃいいの? 何社かソフトウェア開発系の会社に話聞きにいったら、vbaはちょっと・・・とか、プログラムみてこれはちょっと・・・って反応だし 1千万超える金積むとなると役員に説明しなくちゃならないんだけど、なんでおまえがやらないの?みたいな反応だし まあ、控えめに言ってこのまま止まり続けると会社潰れるから言い値で出すしか無いんだろうけど こういう状況、ここに巣喰う人達はどうやって乗り越えたのかアドバイスやヒントください 転職、以外で
981 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 22:09:54.34 ID:vVw6LQjX.net] ミッションクリティカルなのに止まっても平気なのか 不思議な世界観
982 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 22:58:18.76 ID:sZuFJhML.net] >>960 素人が作っためちゃくちゃなコードのデバッグや修正は仕事でもやってるからあんまり困ったことない 言語も問わず引き受けてる
983 名前:デフォルトの名無しさん [2020/09/09(水) 23:15:38 ID:kLG5WjnA.net] >>962 すげえ 社内システム作ってるところとかつてで色んなところに聞きいったけど数百万じゃ難しいって言われたんだ 分かる人には難しさっていうか、見積もりがわかるもんなんだな 参考までにどういうところを見て判断するもんなの? 偉い人に説明するときの参考にしたい
984 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 01:17:25.37 ID:Uj/ZEArt.net] >>963 変数名、インデント、コメントの入り方なんかを見れば、制作者のレベルがだいたいわかる その上でソースの行数、モジュール数がどれぐらいか
985 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 01:28:39.24 ID:R4ATSmnt.net] マクロの記録をベースにしてるのは危険な感じがする あとループの中にgotoが入ってるやつ見たときはちょっと感動した
986 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 01:35:20.13 ID:fOUD4fUU.net] vba捨ててまともなところに新しくシステム作ってもらった方が安いし早そう
987 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 01:38:51.21 ID:JZj4+m/A.net] それだと社内で仕事が無くなるおっさんたちが文句言い出す
988 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 12:15:12.05 ID:dws80o57.net] 住宅で喩えるなら 地場でイチから設計・施工をする在来工法のパワービルダーや 社内で設計した通り加工し現地で組み立てるだけのハウスメーカー 又は方式は 一緒だけどコスト削減に特化して現地の安い下請け使って費用を抑えるローコスト系 システムを売りにしてる企業は上で言うHMに近く、依頼すればひと声一千万は相場 PBはどんどん規模が縮小してるから探すのも大変 LCHMなら見付かるかも知らんが 要求に応じかねるレベルだと思われる 当時の社内の人間が内製したレベルならその条件、例えばExcelVBAと絞って 改修・修繕の可不可(得意かどうか)を先ず相手に問えば話が早いかも知れない 業務内容を伝えるだけだとうまく伝わらずに高額商品を売る方向に話が進み兼ねない
989 名前:958 mailto:sage [2020/09/10(木) 12:19:21.40 ID:Oh+8RCfx.net] >>964 はえ〜・・・なるほどなぁ 変数名は一応業界の人なら意味が分かる程度 インデントはルールから逸脱してるのはほぼない、とおもう コメントはあることはあるけど助けられたコメントはほぼないな 'ここで●×処理をする Sub ●×処理(・・・・・・・) みたいなw 行数はただの改行も含めると3万行くらいで モジュールが4、functionが500、subが1500くらい この辺が大量にあるから難しいって説明しようとしてたんだけど 数行(ステップ?)なら別にF8ポチポチしながら追えるんだよね じゃあ足りないのは根気だろ、みたいに言われて循環複雑なんちゃらみたいなの調べてたけど 結局こんな数字だしても理解されないだろうしなぁってのと、単に俺が素人だからってのもあって今に至る >>966 マジそれなんだけど、何をしてるのか誰もわかんないから何を作ってもらえば良いのかも説明出来ないっていうねw 世間で言われてる炎上案件よりよっぽどかわいいレベルなのかも知れないけど マジであと数ヶ月放置して会社潰れればいいんじゃねーかとも思ってる
990 名前:958 mailto:sage [2020/09/10(木) 12:20:28.24 ID:Oh+8RCfx.net] >>968 おっと、同じ人かもしれんけどありがとなあ
991 名前:デフォルトの名無しさん [2020/09/10(木) 12:36:48 ID:l+lun8zf.net] >>963 わかんねーから高めに見積もってんだよ
992 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 13:19:24.92 ID:4mlwjCSe.net] >>969 他人の作ったプロシージャを2千個3万行解析してドキュメントを作成しながらデバッグなら1千万はまあまあ妥当かと 設備投資でたった1千万が出せない会社は遠からず潰れると思うよ ほかの資産や設備だって千万単位の修理はいつ発生してもおかしくないし
993 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:45:47.73 ID:Oh+8RCfx.net] >>972 詳しい人にそう言ってもらえるとたすかる とりあえず素人がやるもんじゃ無いって話は集めたので素直に金だせやって資料作ってるw しかし1千万つめばできちゃうってのもすげーなあ 個人にとっては大金だけど、会社にとっては中堅社員一人分/年くらいの費用だもんな
994 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 11:34:11.36 ID:LThuGd0x.net] 解析・デバッグ・ドキュメント作成でひと声一千万? じゃ、せっかく解析できたんだしそれをベースに新システム製作費は? パッケージから大きく外れるものだったらオリジナル新規作成?千万? 都合?千万? せっかく途中まで分析し始めたようだし「わたしに二千万ください、これやります」でいーじゃん
995 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 19:07:30.23 ID:0mQCTSsr.net] >>974 日本語で
996 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 14:01:55.06 ID:AJy8UwEC.net] >>974 やり方教えてくれww まあ1千万超えは最低限な感じだね 今起きてる障害を直すだけだけどね
997 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 18:15:28.87 ID:/EQXGeQJ.net] 業務止まってるのにのん気だな せめて地方と業務とアプリぐらい概略書けば誰かがどこかを紹介するかも知れんぞ アプリはAccessと踏んだが、どう? どうせこのご時世、近場でなくともZoomやらでリモートしたりでのサポートだろうし
998 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 23:50:50.45 ID:249cxrEP.net] 結局余所に投げる方向で解決した 乗り越えられるものとそうじゃないものを見極めるのも大切と思い込むことにした なお費用は想定の2倍近くになる模様w みんなアドバイスありがとう
999 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 00:10:44.84 ID:14Mj/Q6q.net] >>965 > ループの中にgotoが入ってるやつ見たときはちょっと感動した Continue 文が無いメジャーな言語があってな。 GoTo Continue1 とか、書くときの隔靴掻痒感と言ったらもう・・・。
1000 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 06:38:58.19 ID:wEXLIZpl.net] もしかしてフィルタで非表示になってるセルってVBAで値参照できない?
1001 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 04:11:48.30 ID:NJB8+QKa.net] >>980 自己解決
1002 名前:デフォルトの名無しさん [2021/05/14(金) 13:33:45.79 ID:Kf/7Ycdt.net] WordのVBAで質問させてください。 文書内の2種類の括弧「」『』の中にある改行だけを削除するマクロを作りたいと思っています。 例えば以下のような文章に対してマクロをかけたときに 「み か ん」 ば な な 「り ん ご 」 以下のような結果になるマクロです。 「みかん」 ば な な 「りんご」 つづきます
1003 名前:デフォルトの名無しさん [2021/05/14(金) 13:34:48.74 ID:Kf/7Ycdt.net] Sub 括弧内の改行を削除() Dim myRange As Range Set myRange = ActiveDocument.Range(0, 0) With myRange.Find .Text = "[「『""]*^13*[""』」]" .Forward = True .Wrap = wdFindStop .MatchWildcards = True Do While .Execute = True With myRange.Find .Text = "^13" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True .Execute Replace:=wdReplaceAll DoEvents End With Loop End With Set myRange = Nothing End Sub
1004 名前:デフォルトの名無しさん [2021/05/14(金) 13:35:33.64 ID:Kf/7Ycdt.net] 自分なりに以上のようなマクロを組んでみたのですが、実行してみると、 最初の「みかん」の改行は削除されるのですが、そのあとの「りんご」の改行が削除されません やり方をお教えいただけると助かります。
1005 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 13:58:15.10 ID:dwsPOlKo.net] 馬鹿には無理
1006 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 20:08:25.19 ID:YZr2qR8x.net] 正規表現使えば一発じゃん。 VBAって正規表現使えるんだっけ?
1007 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 20:22:39.22 ID:pWuJPMFY.net] RegExpオブジェクトを使えば。 面倒だから俺はどうしてもというとき以外は使わない。
1008 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 20:24:37.07 ID:6X3W89ka.net] Wordなら最初から正規表現もどきが使えるから、Excel VBAよりはちょっとだけ楽に文字列操作ができる
1009 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 04:20:48.68 ID:rI+eK0KL.net] >>984 正規表現でマルチラインを設定して改行を空文字に置換 RegExpオブジェクトの使い方は、他の言語より面倒な書き方だったりするけど文字を操作するなら必須だと思うよ
1010 名前:デフォルトの名無しさん mailto:sage [2021/06/10(木) 19:25:30.25 ID:CLREf/YK.net] splitでいい感じに分割して判定してreplaceで改行無くしてくっ付けろ 「」は自分でつけたせ
1011 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 17:06:39.36 ID:qYcBJ8fd.net] あんま実験してないから文句いうなよ まずはさ、アホでも考えられるような地道な形でやるべきだと思うわ そのあとに、効率性とか考えて無駄排除したりすればいいわ Sub MainProcess() Dim text As String text = Sheet1.Cells(1, 1) 'A1に括弧が含まれる文字列をいれろ Const right1 As String = "「" Const left1 As String = "」" Const right2 As String = "『" Const left2 As String = "』" text = MakeText(text, right1, left1) text = MakeText(text, right2, left2) 'B1に結果が返ってくるぞ。途中結果はメッセージボックスで順次表示されるからループ終わるまで何度もOKおせ Sheet1.Cells(1, 2) = text End Sub
1012 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 17:06:59.82 ID:qYcBJ8fd.net] >>991 の続き Function MakeText(text As String, rightChar As String, leftChar As String) As String Dim startPosition As Integer Dim endPosition As Integer Dim InstrStartPosition As Integer InstrStartPosition = 1 Do While InStr(InstrStartPosition, text, rightChar) <> 0 startPosition = InStr(InstrStartPosition, text, rightChar) If startPosition <> 0 Then endPosition = InStr(startPosition + 1, text, leftChar) End If Dim midText As String midText = Mid(text, startPosition, endPosition - startPosition + 1) Dim midTextChanged As String midTextChanged = Replace(midText, vbLf, "") text = Replace(text, midText, midTextChanged) InstrStartPosition = startPosition + Len(midTextChanged) MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text Loop MakeText = text End Function
1013 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 17:07:53.23 ID:qYcBJ8fd.net] つかさ、rightとleftが逆だったわ まぁ動くからいいわ
1014 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 17:18:37.37 ID:qYcBJ8fd.net] あれだ、最期の方に「だけが単独であると無限ループだわな ループの条件にその辺の修正いれておいてくれ もう寝る
1015 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 17:34:31.79 ID:qYcBJ8fd.net] おっきした >>992 を↓に修正 Function MakeText(text As String, rightChar As String, leftChar As String) As String Dim startPosition As Integer Dim endPosition As Integer Dim InstrStartPosition As Integer InstrStartPosition = 1 Do While InStr(InstrStartPosition, text, rightChar) <> 0 startPosition = InStr(InstrStartPosition, text, rightChar
1016 名前:) If startPosition <> 0 Then endPosition = InStr(startPosition + 1, text, leftChar) End If Dim midText As String midText = Mid(text, startPosition, endPosition - startPosition + 1) Dim midTextChanged As String midTextChanged = Replace(midText, vbLf, "") text = Replace(text, midText, midTextChanged) InstrStartPosition = startPosition + Len(midTextChanged) MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text Dim textForCheck As String If textForCheck = text Then MakeText = text Exit Function End If textForCheck = text Loop MakeText = text End Function [] [ここ壊れてます]
1017 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 10:10:42.16 ID:rHnN1cM5.net] 動けば良いんだよ
1018 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 12:36:26.70 ID:3DqqBWFs.net] 腕が重くて
1019 名前:デフォルトの名無しさん mailto:sage [2021/09/01(水) 00:13:05.25 ID:7BIbcRgh.net] h
1020 名前:デフォルトの名無しさん mailto:sage [2021/09/01(水) 00:13:11.43 ID:7BIbcRgh.net] t
1021 名前:デフォルトの名無しさん mailto:sage [2021/09/01(水) 00:13:18.16 ID:7BIbcRgh.net] l
1022 名前:デフォルトの名無しさん mailto:sage [2021/09/01(水) 00:17:13.66 ID:7BIbcRgh.net] n
1023 名前:小倉優子 mailto:sage [2021/09/01(水) 00:17:27.14 ID:7BIbcRgh.net] ∧,,,∧ ( ・∀・) 1000ならジュースでも飲むか ( ) し─J
1024 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 2294日 13時間 24分 43秒
1025 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています