VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK
ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください
VBAを開発環境としていろいろ作っちゃいましょう
前スレ
VBAなんでも質問スレ
http://peace.2ch.net/test/read.cgi/tech/1342087380/
関連スレ
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419718732/
Access VBA 質問スレ Part1
http://peace.2ch.net/test/read.cgi/tech/1328536426/
VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/
Excel総合相談所 118 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/bsoft/1430352555/
探検
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2015/05/21(木) 10:52:44.71ID:KLv0vQmm738デフォルトの名無しさん
2019/03/21(木) 01:35:24.94ID:XMapNPTs なんで正規表現?
完全一致でいいじゃろ?
SortedListなら量に正比例して増えることはない
完全一致でいいじゃろ?
SortedListなら量に正比例して増えることはない
739デフォルトの名無しさん
2019/03/21(木) 07:27:32.08ID:u3u8nbsq >>736
それおま環だろ
それおま環だろ
740デフォルトの名無しさん
2019/03/21(木) 07:34:08.81ID:u3u8nbsq >>737
> 正規表現か何かで逐次マッチ検索してるはずだから
なんだその意味不明な思い込みはw
普通に考えてハッシュなりB-Treeなり使ってるだろ
そもそも逐次検索だとしても遅さが気になるほど大量の名前付き範囲使う時点でなにか間違ってると思う
> 正規表現か何かで逐次マッチ検索してるはずだから
なんだその意味不明な思い込みはw
普通に考えてハッシュなりB-Treeなり使ってるだろ
そもそも逐次検索だとしても遅さが気になるほど大量の名前付き範囲使う時点でなにか間違ってると思う
741デフォルトの名無しさん
2019/03/22(金) 17:57:33.45ID:DJ7JSKt5 会社でブラウザの検索結果のページで
いっぱいURLのリンク先が表示されるのですが
そのたくさんのURLのそれぞれを開いたページ(毎回違うけど50ページくらいある)のデータを取得するVBAのコードを考えています。
IEの定番のCreateObject("InternetExplorer.Application")とDOMツリーの方法で実現できてはいるのですが
1つ1つページを開いて取得して閉じる、という作業がネットワークの遅さで異常に時間がかかります。
この複数のページを同時で取得する方法ってないでしょうか?よく知らないけどJavaでいうスレッドみたいな?
いっぱいURLのリンク先が表示されるのですが
そのたくさんのURLのそれぞれを開いたページ(毎回違うけど50ページくらいある)のデータを取得するVBAのコードを考えています。
IEの定番のCreateObject("InternetExplorer.Application")とDOMツリーの方法で実現できてはいるのですが
1つ1つページを開いて取得して閉じる、という作業がネットワークの遅さで異常に時間がかかります。
この複数のページを同時で取得する方法ってないでしょうか?よく知らないけどJavaでいうスレッドみたいな?
742デフォルトの名無しさん
2019/03/22(金) 18:35:53.24ID:HaipTOms >>741
VBAはマルチスレッド非対応だから無理
VBAはマルチスレッド非対応だから無理
743デフォルトの名無しさん
2019/03/22(金) 19:06:27.17ID:DJ7JSKt5 >>742
そりゃないよ、かあちゃん
そりゃないよ、かあちゃん
744デフォルトの名無しさん
2019/03/22(金) 19:28:02.41ID:s6oj+Xdm >>741
VBAでマルチスレッドは基本的に出来ないと考えるべき。
物凄く不安定だし、Excelのオブジェクト(Rangeとか)を触った途端にExcelが消える。
で、マルチスレッドは出来ないけどマルチプロセスは出来る。
1.プログラムのブックに指定のURLのページの情報を取ってくるプロシージャを作る
2.複数のExcel.Applicationを使って、自分自身のブックを別のExcelから開くメインプロシージャを作り、その中でobjExcel.Runを使って情報を取ってくるプロシージャを動かすようにコードを書く。
3.ブックを保存する。
4.メインプロシージャを動かす
たぶん、こんな感じでできたはず。
VBAでマルチスレッドは基本的に出来ないと考えるべき。
物凄く不安定だし、Excelのオブジェクト(Rangeとか)を触った途端にExcelが消える。
で、マルチスレッドは出来ないけどマルチプロセスは出来る。
1.プログラムのブックに指定のURLのページの情報を取ってくるプロシージャを作る
2.複数のExcel.Applicationを使って、自分自身のブックを別のExcelから開くメインプロシージャを作り、その中でobjExcel.Runを使って情報を取ってくるプロシージャを動かすようにコードを書く。
3.ブックを保存する。
4.メインプロシージャを動かす
たぶん、こんな感じでできたはず。
745デフォルトの名無しさん
2019/03/22(金) 19:35:54.55ID:DJ7JSKt5746デフォルトの名無しさん
2019/03/22(金) 19:38:23.65ID:ls5du2vw 複数のInternetExplorer.Applicationのインスタンス立ち上げれば行けんじゃないか
747デフォルトの名無しさん
2019/03/22(金) 19:57:22.45ID:HaipTOms >>746
今それができないって会話をしてたところだけど理解してる?
今それができないって会話をしてたところだけど理解してる?
748デフォルトの名無しさん
2019/03/22(金) 20:04:27.42ID:ls5du2vw >>747
どこでそれが出来ないって話をしてる?
どこでそれが出来ないって話をしてる?
749デフォルトの名無しさん
2019/03/22(金) 20:19:56.99ID:HaipTOms750デフォルトの名無しさん
2019/03/22(金) 20:49:35.12ID:n3e2TSgf >>741
フレームを50個並べたページのHTMLをローカルで作って開けば一気に読み込んでくれる
フレームを50個並べたページのHTMLをローカルで作って開けば一気に読み込んでくれる
751デフォルトの名無しさん
2019/03/22(金) 21:25:13.65ID:uvzdlIQp なんか勘違いしてるやつがいるけど、VBAがマルチスレッドじゃないことと、IEを複数開くのはまったく別のことだからな
IEはOfficeとはまったく無関係の独立したプロセスだから、いくつでもインスタンス化できるし同時にネットアクセスできる
IEオブジェクトを配列で作っといて、ページの読み込み完了を待たずにどんどん開いてけばいいんだよ
IEはOfficeとはまったく無関係の独立したプロセスだから、いくつでもインスタンス化できるし同時にネットアクセスできる
IEオブジェクトを配列で作っといて、ページの読み込み完了を待たずにどんどん開いてけばいいんだよ
752デフォルトの名無しさん
2019/03/22(金) 22:10:54.82ID:HaipTOms >>751
そのプロセスを制御するVBAがシングルスレッドだろ
そのプロセスを制御するVBAがシングルスレッドだろ
753デフォルトの名無しさん
2019/03/22(金) 22:13:33.32ID:HaipTOms >>751
あ、開けば終わりと勘違いしてる?
あ、開けば終わりと勘違いしてる?
754デフォルトの名無しさん
2019/03/22(金) 22:13:49.76ID:LAgBLCyu IEにタブをいくつも開いてもらって、みんな読み込んだところでおもむろに順番に処理すればいいってことだろ。
755デフォルトの名無しさん
2019/03/22(金) 22:15:47.88ID:CAtaruvO >>752
VBAはシングルスレッドだが、IEでの読み込みは同時並行的にやってくれるんじゃねえの?
VBAはシングルスレッドだが、IEでの読み込みは同時並行的にやってくれるんじゃねえの?
756デフォルトの名無しさん
2019/03/22(金) 22:38:21.07ID:DJ7JSKt5757デフォルトの名無しさん
2019/03/22(金) 22:40:55.80ID:tgov+uRX そんなもんそれこそ流行りのRPAでやればいいのでは
758デフォルトの名無しさん
2019/03/22(金) 22:40:56.05ID:HaipTOms できるっていうくせにコードは出てこないのね
759デフォルトの名無しさん
2019/03/22(金) 22:57:51.11ID:HaipTOms そもそも回線が細いのはプログラムでどうこうできないから上司を説得して諦めてもらうしかない
760デフォルトの名無しさん
2019/03/23(土) 01:14:24.21ID:BU4e6Kdq 趣味でやってるんじゃなかったら
適当なダウンロードソフト使ったほうが良いんじゃない
適当なダウンロードソフト使ったほうが良いんじゃない
761デフォルトの名無しさん
2019/03/23(土) 12:00:24.62ID:36Js1rz1 動くかどうか試してないけど、こんな感じでいいんじゃない?
もう少し効率を上げるなら、読み込めたページからさっさと処理してもいいし
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
もう少し効率を上げるなら、読み込めたページからさっさと処理してもいいし
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
762デフォルトの名無しさん
2019/03/23(土) 15:33:38.79ID:BqJUz3fJ >>761
ありがとうございます。
試してみます。
最初のFor Nextループがものすごく時間がかかりそうで楽しみです。
あと先日は説明の簡略化のためにシンプルに書いたけど
実は開いたURL内で、ある条件があると、さらにその親URL内のAリンクの子URLも開かないといけない複雑な事情があるのです。
ありがとうございます。
試してみます。
最初のFor Nextループがものすごく時間がかかりそうで楽しみです。
あと先日は説明の簡略化のためにシンプルに書いたけど
実は開いたURL内で、ある条件があると、さらにその親URL内のAリンクの子URLも開かないといけない複雑な事情があるのです。
763デフォルトの名無しさん
2019/03/23(土) 19:47:18.63ID:h2FSWEPH >>761
Exit For抜けてますよ
フラグも i = pg-1まで行けたときに立たせるだけで十分だと思います
あと、非表示でIEを50立ち上げると中断した時のプロセスの掃除が大変なので、Ajaxで無ければXMLHTTP60を使うのも手かもしれません。
Exit For抜けてますよ
フラグも i = pg-1まで行けたときに立たせるだけで十分だと思います
あと、非表示でIEを50立ち上げると中断した時のプロセスの掃除が大変なので、Ajaxで無ければXMLHTTP60を使うのも手かもしれません。
764デフォルトの名無しさん
2019/03/24(日) 00:51:51.95ID:gZMjxNOF765デフォルトの名無しさん
2019/03/24(日) 01:34:57.18ID:Y3S3b5Ai この場合Do Loopを抜ける条件が全ページの完了だから、Exit Forはあってもなくても結果というかスピードは変わらないね
さっさと抜けたところで、またForループに戻るだけだし
個人的には「pg - 1」が何回も出てくるのが美しくないなあとか、ForとDoの順番を逆にした方がコンパクトになりそうだなあとか
さっさと抜けたところで、またForループに戻るだけだし
個人的には「pg - 1」が何回も出てくるのが美しくないなあとか、ForとDoの順番を逆にした方がコンパクトになりそうだなあとか
766デフォルトの名無しさん
2019/03/24(日) 01:38:23.22ID:Y3S3b5Ai 一括処理なら、この方がコンパクト
まあ、ホストの応答速度や、次の処理の内容次第では終わったページからどんどん片付けた方がいいだろうけど
For i = 0 To pg-1
Do
Loop Until ie(i).readyState >= 4
Next
まあ、ホストの応答速度や、次の処理の内容次第では終わったページからどんどん片付けた方がいいだろうけど
For i = 0 To pg-1
Do
Loop Until ie(i).readyState >= 4
Next
767デフォルトの名無しさん
2019/03/24(日) 08:29:39.64ID:myNgr9GS >>765
> 個人的には「pg - 1」が何回も出てくるのが美しくないなあとか
C言語とかに慣れてるんだろう
VBA的には
ReDim ie(1 To pg)
ReDim url(1 To pg)
For i = 1 To pg
だろうね
可能であればieとurlをTypeで纏めてそれを配列にした方が見易い
> 個人的には「pg - 1」が何回も出てくるのが美しくないなあとか
C言語とかに慣れてるんだろう
VBA的には
ReDim ie(1 To pg)
ReDim url(1 To pg)
For i = 1 To pg
だろうね
可能であればieとurlをTypeで纏めてそれを配列にした方が見易い
768デフォルトの名無しさん
2019/03/24(日) 08:58:33.34ID:Mw3X0nZC >>766
ははは、これは笑った。確かにこれが単純明快でコンパクト w
ははは、これは笑った。確かにこれが単純明快でコンパクト w
769デフォルトの名無しさん
2019/03/24(日) 10:28:46.47ID:3PVCt58k >>766
それだとサイズのでかいページで待ちが発生する
Do
For i
If ie(i)準備完了 And i.処理フラグFalse then
処理
処理フラグTrue
カウント
End if
Next
カウント=50 exit
Loop
それだとサイズのでかいページで待ちが発生する
Do
For i
If ie(i)準備完了 And i.処理フラグFalse then
処理
処理フラグTrue
カウント
End if
Next
カウント=50 exit
Loop
770デフォルトの名無しさん
2019/03/24(日) 10:33:07.42ID:Mw3X0nZC >>769
投げてからの待ちだからいいんじゃねえの?
俺はやったことないから知らんが、投げたらあとはIEが並行処理で取ってくるんだろ
で全部取ってから次の処理なら問題ない
でかいページでVBAが待っていても同時に他のページもIEが取って来てるんじゃねえの
だからでかいページで待っていてもそれが終わったら他の軽いページも取り終っていてあとは
ばたばたと進んで終了、と理解している
投げてからの待ちだからいいんじゃねえの?
俺はやったことないから知らんが、投げたらあとはIEが並行処理で取ってくるんだろ
で全部取ってから次の処理なら問題ない
でかいページでVBAが待っていても同時に他のページもIEが取って来てるんじゃねえの
だからでかいページで待っていてもそれが終わったら他の軽いページも取り終っていてあとは
ばたばたと進んで終了、と理解している
771デフォルトの名無しさん
2019/03/24(日) 10:52:55.88ID:Mw3X0nZC772デフォルトの名無しさん
2019/03/24(日) 10:56:37.24ID:OZ1kvGmt IEはマイクロソフトも使うなって言ってるのに
VBAって不便だよね
VBAって不便だよね
773デフォルトの名無しさん
2019/03/24(日) 11:58:25.29ID:yYEn14s6 IE使えなくなったら、どうやってブラウザ制御するの?
UIAutomation面倒くさいかから、
UIAutomation面倒くさいかから、
774デフォルトの名無しさん
2019/03/24(日) 11:58:47.29ID:yYEn14s6 getElementByしたいんだけど。
775デフォルトの名無しさん
2019/03/24(日) 12:34:48.16ID:4ve/ST91 IE使えなくなったらってもう使ってる人なんていない
セキュリティに甘いとこは使えるのか?
セキュリティに甘いとこは使えるのか?
776デフォルトの名無しさん
2019/03/24(日) 13:28:35.85ID:Y3S3b5Ai ちゃんと動くのか試してみた
たしかにIEが複数開いて、平行処理でページを取ってくるね
VBAのシングルスレッドとか完全に無関係やん
たしかにIEが複数開いて、平行処理でページを取ってくるね
VBAのシングルスレッドとか完全に無関係やん
777デフォルトの名無しさん
2019/03/24(日) 13:33:22.28ID:gDjNFFGJ >>776
まだそこ?
まだそこ?
778デフォルトの名無しさん
2019/03/24(日) 13:36:50.26ID:PYh3zpOu 大昔からあるファイルシステムだって非同期読み書きできる
1000倍遅いネットワークで出来ないはずがないだろうが
1000倍遅いネットワークで出来ないはずがないだろうが
779デフォルトの名無しさん
2019/03/24(日) 13:55:48.62ID:gDjNFFGJ >>778
無能管理職かよ
無能管理職かよ
780デフォルトの名無しさん
2019/03/24(日) 14:55:03.02ID:gZMjxNOF781デフォルトの名無しさん
2019/03/24(日) 17:00:18.75ID:cASdygc2 >>776
これ、1つずつ待つ部分がVBAでマルチにしたいって話だったけどCreateObjectで既に別プロセスだから全部投げてから全部の完了を待つので正解なんだよな。
勘違いしてマルチプロセスでやろうとしちゃったよ。
ついでにApplication.Runで出来なくて、迷ってたんだけど、またまた勘違いでApplication.OnTimeが正解だった。
でもOnTimeって戻り値が取れないんだよな。
これ、1つずつ待つ部分がVBAでマルチにしたいって話だったけどCreateObjectで既に別プロセスだから全部投げてから全部の完了を待つので正解なんだよな。
勘違いしてマルチプロセスでやろうとしちゃったよ。
ついでにApplication.Runで出来なくて、迷ってたんだけど、またまた勘違いでApplication.OnTimeが正解だった。
でもOnTimeって戻り値が取れないんだよな。
782デフォルトの名無しさん
2019/03/24(日) 17:02:38.91ID:cASdygc2 あと、ExcelVBAスレにあるようにInternetExplorer.Applicationじゃなくて別のオブジェクトの方が早いと思うよ。
783デフォルトの名無しさん
2019/03/24(日) 17:15:34.95ID:3PVCt58k 講釈垂れはいいからコードはよ
784デフォルトの名無しさん
2019/03/24(日) 17:48:52.18ID:yrUzMInJ とりあえずDoEvents。
785デフォルトの名無しさん
2019/03/24(日) 21:00:07.33ID:IVIO7oct 取りあえず書いてみたんだが、1つずつ待っても速度が変わらん。
テスト用に繋げた所があんまり時間が掛からん所でReadyStateのループに入らんのよ。
取りあえずInternetExplorer.Applicationはやっぱり遅かった。
59個のURLから同じ場所にある特定のデータを取ってくる処理でMSXML2.XMLHttpなら5秒のところIEだと60秒くらい掛かった。
テスト用に繋げた所があんまり時間が掛からん所でReadyStateのループに入らんのよ。
取りあえずInternetExplorer.Applicationはやっぱり遅かった。
59個のURLから同じ場所にある特定のデータを取ってくる処理でMSXML2.XMLHttpなら5秒のところIEだと60秒くらい掛かった。
786デフォルトの名無しさん
2019/03/24(日) 23:42:52.24ID:Y3S3b5Ai IEを普通にUIを持ったアプリケーションとして開けば、クッキーや画面のレンダリングからアクセス履歴の更新やキャッシュの整理までいろんな処理が走るから、そりゃ実質GETだけのXMLHTTPと比べたら遅くなるのは当たり前と言うか
>>785
画像検索にそれぞれ違うキーワードを設定すれば、それなりに時間がかかるようになるから負荷のテストにはおすすめ
>>785
画像検索にそれぞれ違うキーワードを設定すれば、それなりに時間がかかるようになるから負荷のテストにはおすすめ
787デフォルトの名無しさん
2019/03/25(月) 08:15:58.30ID:O3TyiYmg788デフォルトの名無しさん
2019/03/25(月) 21:50:57.49ID:D+uIa6Au 真のエクセラーならieなんか使わずにwebクエリーとか使って何とかするべきだろうが
789デフォルトの名無しさん
2019/03/25(月) 23:08:06.35ID:DuFQaNpH getElementByもWebクエリも使ったことあるけど、
Webクエリはどうやって取ってきてるのか謎。
Webクエリはどうやって取ってきてるのか謎。
790デフォルトの名無しさん
2019/03/25(月) 23:19:23.02ID:XpTM98r8 レンダリングしないでペイロードのパースだけやってるんでしょ
791デフォルトの名無しさん
2019/03/26(火) 00:39:52.05ID:ke9zWH00 誰もSelenium basic使わんの?
IE使わなくていいしセッション維持とかも楽だぉ?
IE使わなくていいしセッション維持とかも楽だぉ?
792デフォルトの名無しさん
2019/03/26(火) 18:58:02.34ID:ADoE3fhW readystateが信用ならんのがな
completeになっても完全に読み込めてなくてその後の要素取得処理に失敗とか高確率で起こるし
WinHTTP使うのが確実だと思う
completeになっても完全に読み込めてなくてその後の要素取得処理に失敗とか高確率で起こるし
WinHTTP使うのが確実だと思う
793デフォルトの名無しさん
2019/03/26(火) 22:23:16.17ID:0P7j5sat794デフォルトの名無しさん
2019/03/26(火) 23:48:15.28ID:KxwbGcFA 結局Do LoopとOn Error Resume Nextで逃げるしかないっていう。
795デフォルトの名無しさん
2019/03/27(水) 00:00:47.48ID:sk2gWEk1 >>794
x 結局Do LoopとOn Error Resume Nextで逃げるしかないっていう。
o 結局Do LoopとOn Error Resume Nextで逃げるしかないっていうことですね。
正しい日本語を使いたまえ
x 結局Do LoopとOn Error Resume Nextで逃げるしかないっていう。
o 結局Do LoopとOn Error Resume Nextで逃げるしかないっていうことですね。
正しい日本語を使いたまえ
796デフォルトの名無しさん
2019/03/27(水) 00:54:24.99ID:bUJXWn5A 口語体が理解できないやつが正しい日本語とか
797デフォルトの名無しさん
2019/03/27(水) 06:30:58.48ID:61Xepw/0 アスペかしら…
798デフォルトの名無しさん
2019/03/27(水) 07:39:47.73ID:qB5RyyD6 では、教えてくれ。
正しい日本語の"正しい"とはなんのことだ。
先に言っておくが、国語辞典や義務教育は関係ないぞ。
正しい日本語の"正しい"とはなんのことだ。
先に言っておくが、国語辞典や義務教育は関係ないぞ。
799デフォルトの名無しさん
2019/03/27(水) 08:38:29.06ID:oJzskUWb >>798
お前のようなノイズではないこと
お前のようなノイズではないこと
800デフォルトの名無しさん
2019/03/27(水) 12:48:07.16ID:Mdwmg5PN >>798
国語辞典や義務教育関係ないと言うのならば口語体でも問題ないと思うが…。
例えば力不足、役不足のように意味を間違えて使っていては当然正しい日本語ではないが、今回の様な場合では相手方に伝われば良いということにならないか。
国語辞典や義務教育関係ないと言うのならば口語体でも問題ないと思うが…。
例えば力不足、役不足のように意味を間違えて使っていては当然正しい日本語ではないが、今回の様な場合では相手方に伝われば良いということにならないか。
801デフォルトの名無しさん
2019/03/28(木) 20:50:35.86ID:GAoTTZZk 関西弁は正しい日本語ではない
802デフォルトの名無しさん
2019/03/28(木) 20:59:08.44ID:M/yCVQ4H 正しい日本語とは
803デフォルトの名無しさん
2019/03/28(木) 21:53:50.06ID:cIkPDI6N804デフォルトの名無しさん
2019/03/28(木) 23:24:25.12ID:Q+Q3MpKo 長いのでWithするかSetしましょう。
With 口語体が理解できないやつが正しい日本語
とか = ×
とかどういうこと? = 〇
End With
With 口語体が理解できないやつが正しい日本語
とか = ×
とかどういうこと? = 〇
End With
805デフォルトの名無しさん
2019/03/28(木) 23:39:02.51ID:cIkPDI6N 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
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
806デフォルトの名無しさん
2019/03/28(木) 23:57:12.09ID:OmRArJOr 日付フィルターを使うときにCriteriaに設定する値って、必ず一旦Double型に型変換したDate型データをもとにしてFormat変換しなきゃいけないのかな?
Date関数の戻り値をそのままFormat変換してもうまくフィルターがかからなくて危うくハマりかけたんだが、後学のために識者がいたら教えてほしい
Date関数の戻り値をそのままFormat変換してもうまくフィルターがかからなくて危うくハマりかけたんだが、後学のために識者がいたら教えてほしい
807デフォルトの名無しさん
2019/03/29(金) 00:17:35.48ID:PdUuDb+g まともなレスには異論返せないのな
808デフォルトの名無しさん
2019/03/29(金) 00:47:46.11ID:MmeaYZo8809デフォルトの名無しさん
2019/03/29(金) 06:46:41.33ID:YUbMxDIL >>804
ピリオド抜けてる
ピリオド抜けてる
810デフォルトの名無しさん
2019/03/29(金) 12:23:42.03ID:Fu/JMZl+ 異論返せていないまともなレスとはどれ
811デフォルトの名無しさん
2019/03/29(金) 12:35:07.47ID:7DnII+1F812デフォルトの名無しさん
2019/03/29(金) 12:37:39.38ID:FHKNInbw どうでも良いことで延々と論じるのは如何なものか。
813デフォルトの名無しさん
2019/03/29(金) 18:52:59.03ID:DRFZR9Lo >>809
シンタックスエラーになります
シンタックスエラーになります
814デフォルトの名無しさん
2019/03/30(土) 09:25:26.20ID:Fw0ogXHz VBAで実行時にシンタックスエラーが出るのはどういう場合だろう
デフォルト設定だと1行入力ごとに構文解析するし
デフォルト設定だと1行入力ごとに構文解析するし
815デフォルトの名無しさん
2019/03/30(土) 09:27:30.74ID:uS2atdcl816デフォルトの名無しさん
2019/03/30(土) 09:28:29.64ID:uS2atdcl ああすまん。これってシンタックスエラーではないんだっけ
でもエラーになるよね
でもエラーになるよね
817デフォルトの名無しさん
2019/03/30(土) 09:41:55.36ID:Fw0ogXHz Nextを書かなかった場合は
「コンパイル エラー:For に対応する Next がありません。」
だった
もしシンタックスエラーのエラーコード(変数Errの値)が存在すれば出る可能性があるってことだと思うけど、コードの一覧てどこにあるんだ?
検索してVBのは出るけどVBAのが見つからん
「コンパイル エラー:For に対応する Next がありません。」
だった
もしシンタックスエラーのエラーコード(変数Errの値)が存在すれば出る可能性があるってことだと思うけど、コードの一覧てどこにあるんだ?
検索してVBのは出るけどVBAのが見つからん
818デフォルトの名無しさん
2019/03/30(土) 09:49:53.73ID:uS2atdcl シンタックスって言葉自体は構文規則だけど、コンパイルエラーって出るんだね
819デフォルトの名無しさん
2019/04/06(土) 00:50:26.14ID:ocPEvB9Z ExcelVBAでListViewを参照設定で追加して
フォームに配置して使っているんですが、
別フォームからshowしてすでに項目をいくつか追加してある
ListViewのあるフォームを表示したときに
ListViewをアクティブ(そのままの状態から矢印キーで項目を選択できるようにする)
にすることは可能ですが?
例えば
Public Sub UserForm_Active()
With listview1
.ListItems(1).Select
.SetFocus
End With
End Sub
とした場合に、フォーカスは確かにListView1にあるのですが、
その状態では項目が矢印キーの上下で選択することができません。
ListView1.SetFocusではListView1全体にフォーカスはあるが
肝心の中身の項目にはフォーカスがない状態ということなのでしょうか?
なにかよい方法はありますでしょうか?
フォームに配置して使っているんですが、
別フォームからshowしてすでに項目をいくつか追加してある
ListViewのあるフォームを表示したときに
ListViewをアクティブ(そのままの状態から矢印キーで項目を選択できるようにする)
にすることは可能ですが?
例えば
Public Sub UserForm_Active()
With listview1
.ListItems(1).Select
.SetFocus
End With
End Sub
とした場合に、フォーカスは確かにListView1にあるのですが、
その状態では項目が矢印キーの上下で選択することができません。
ListView1.SetFocusではListView1全体にフォーカスはあるが
肝心の中身の項目にはフォーカスがない状態ということなのでしょうか?
なにかよい方法はありますでしょうか?
820デフォルトの名無しさん
2019/04/07(日) 19:10:32.15ID:nvpN9j7Q sendkeysで Alt↓までやっちゃうとか
あまりおすすめできる方法ではないが
あまりおすすめできる方法ではないが
821デフォルトの名無しさん
2019/04/21(日) 00:26:59.66ID:WKly27nG このスレは生きてますか
822デフォルトの名無しさん
2019/04/21(日) 17:39:05.84ID:VJZKP3mE 一応生きてるでしょ。
823デフォルトの名無しさん
2019/05/10(金) 13:15:01.20ID:SsAAf7AE VBA勉強中のものです。
Setステートメントを勉強しているのですが、オブジェクト型についてお聞きしたいです。RangeオブジェクトとかWorksheetオブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。
どんなときに使うのか、教えてもらえるとありがたいです。
Setステートメントを勉強しているのですが、オブジェクト型についてお聞きしたいです。RangeオブジェクトとかWorksheetオブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。
どんなときに使うのか、教えてもらえるとありがたいです。
824デフォルトの名無しさん
2019/05/10(金) 16:53:41.17ID:SsAAf7AE Excel VBA 質問スレで質問してみます。お邪魔しました m( _ _ )m
825デフォルトの名無しさん
2019/05/12(日) 02:32:02.86ID:0u/cIV/f >>823
オブジェクトなら同じものを頻繁に扱うときにコーディングミスをしにくくなる。
毎回、名前でアクセスしていると、ちょっとしたことで、別のものを間違って扱う可能性が高まって、実行時エラーを発生させやすくなる。
定数化していれば防げるが、定数のスコープを大きくしないといけないので、定数の値を変えるときにあっちこっちを確認しながら、直すことになり面倒なことになりやすい。
オブジェクトなら同じものを頻繁に扱うときにコーディングミスをしにくくなる。
毎回、名前でアクセスしていると、ちょっとしたことで、別のものを間違って扱う可能性が高まって、実行時エラーを発生させやすくなる。
定数化していれば防げるが、定数のスコープを大きくしないといけないので、定数の値を変えるときにあっちこっちを確認しながら、直すことになり面倒なことになりやすい。
826デフォルトの名無しさん
2019/05/13(月) 13:34:22.56ID:p6Zrf1zY object型の初期状態はNothing
参照先が存在しない場合もNothing返るのがあってis式で判定できる
一方でvariantの初期状態はemptyなのでis式がエラーになる
参照先が存在しない場合もNothing返るのがあってis式で判定できる
一方でvariantの初期状態はemptyなのでis式がエラーになる
827デフォルトの名無しさん
2019/05/13(月) 18:12:50.85ID:/95lNMvT オブジェクトの値がNothingかどうかで判断するロジックはセンスがいいとは思えない。
828デフォルトの名無しさん
2019/05/13(月) 22:51:51.62ID:RqskJpsp Typenameとか列挙定数とかポインタ関数の値で判定するのが良いわな
829デフォルトの名無しさん
2019/05/13(月) 23:46:53.76ID:4/CDP/BQ 自分で変数の値をコントロールしているのに、Nothingかどうかをあちこちで確認しているクソプログラマと1年前に仕事した。
830デフォルトの名無しさん
2019/05/14(火) 08:31:35.00ID:BLcva127831デフォルトの名無しさん
2019/05/14(火) 11:18:55.94ID:4FRIObo4 >>830
そのライブラリは他人が作ったものなのか?自分が作ったものなのか?
そのライブラリは他人が作ったものなのか?自分が作ったものなのか?
832デフォルトの名無しさん
2019/05/14(火) 11:29:20.25ID:5X9vxJLP 判定すべきものが、誰が作ったかによって変わる?
833デフォルトの名無しさん
2019/05/14(火) 12:37:11.77ID:W+bs/bzK ライブラリに状態を持つプロパティがあればいい。
他人が作ったものを使うしかなく、オブジェクトがNothingかどうかでしか判断できないのなら、そうするしかない。
他人が作ったものを使うしかなく、オブジェクトがNothingかどうかでしか判断できないのなら、そうするしかない。
834デフォルトの名無しさん
2019/05/14(火) 13:35:55.15ID:UTGAJPws >>833
ライブラリ関数が引数として受け取ったオブジェクトをどうNullチェックするかの話だぞ?
ライブラリ関数が引数として受け取ったオブジェクトをどうNullチェックするかの話だぞ?
835デフォルトの名無しさん
2019/05/14(火) 16:16:33.74ID:E8REZJpG いきなりライブラリと言われても何のことやらわからない。
836デフォルトの名無しさん
2019/05/14(火) 17:30:53.68ID:UTGAJPws837デフォルトの名無しさん
2019/05/14(火) 21:45:48.80ID:s0Vi/y5R 普通にエラーでブレイクすればいいじゃん
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- NHK、受信料の未払い世帯に督促強化へ 民事手続きの新組織を設置 差し押さえなどの強制執行も ★2 [1ゲットロボ★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」★2 [冬月記者★]
- んなっても良いお🏡
- 【悲報】高市早苗を妄信している今の日本人見ると80年前も市民は進んで戦争協力してたんだって理解出来るよね🥺 [616817505]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 日本人、歴史も経済も分からず貧乏に耐えかねて第二次日中戦争を求めてしまう…ヤバイよ [819729701]
- 【朗報】中国との戦争、世論調査で「賛成」が「反対」を上回るwwwwwwwww
- 識者「『フリーパレスチナ』とかイキってる連中が台湾の話になると『中国を怒らせるな!』ってなる。ほんと左翼の正義って薄っぺらい」 [279254606]
