0766デフォルトの名無しさん2019/03/24(日) 01:38:23.22ID:Y3S3b5Ai 一括処理なら、この方がコンパクト まあ、ホストの応答速度や、次の処理の内容次第では終わったページからどんどん片付けた方がいいだろうけど For i = 0 To pg-1 Do Loop Until ie(i).readyState >= 4 Next 0767デフォルトの名無しさん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で纏めてそれを配列にした方が見易い 0768デフォルトの名無しさん2019/03/24(日) 08:58:33.34ID:Mw3X0nZC>>766 ははは、これは笑った。確かにこれが単純明快でコンパクト w 0769デフォルトの名無しさん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 0770デフォルトの名無しさん2019/03/24(日) 10:33:07.42ID:Mw3X0nZC>>769 投げてからの待ちだからいいんじゃねえの? 俺はやったことないから知らんが、投げたらあとはIEが並行処理で取ってくるんだろ で全部取ってから次の処理なら問題ない でかいページでVBAが待っていても同時に他のページもIEが取って来てるんじゃねえの だからでかいページで待っていてもそれが終わったら他の軽いページも取り終っていてあとは ばたばたと進んで終了、と理解している 0771デフォルトの名無しさん2019/03/24(日) 10:52:55.88ID:Mw3X0nZC>>769 ああ、すまん。それがわかってる上で待ち時間がもったいない、ということね >>766もそこは注意書きはしているな 0772デフォルトの名無しさん2019/03/24(日) 10:56:37.24ID:OZ1kvGmt IEはマイクロソフトも使うなって言ってるのに VBAって不便だよね 0773デフォルトの名無しさん2019/03/24(日) 11:58:25.29ID:yYEn14s6 IE使えなくなったら、どうやってブラウザ制御するの? UIAutomation面倒くさいかから、 0774デフォルトの名無しさん2019/03/24(日) 11:58:47.29ID:yYEn14s6 getElementByしたいんだけど。 0775デフォルトの名無しさん2019/03/24(日) 12:34:48.16ID:4ve/ST91 IE使えなくなったらってもう使ってる人なんていない セキュリティに甘いとこは使えるのか? 0776デフォルトの名無しさん2019/03/24(日) 13:28:35.85ID:Y3S3b5Ai ちゃんと動くのか試してみた たしかにIEが複数開いて、平行処理でページを取ってくるね VBAのシングルスレッドとか完全に無関係やん 0777デフォルトの名無しさん2019/03/24(日) 13:33:22.28ID:gDjNFFGJ>>776 まだそこ? 0778デフォルトの名無しさん2019/03/24(日) 13:36:50.26ID:PYh3zpOu 大昔からあるファイルシステムだって非同期読み書きできる 1000倍遅いネットワークで出来ないはずがないだろうが 0779デフォルトの名無しさん2019/03/24(日) 13:55:48.62ID:gDjNFFGJ>>778 無能管理職かよ 0780デフォルトの名無しさん2019/03/24(日) 14:55:03.02ID:gZMjxNOF 現実的には50並列で全ページ完了待ちするのはどうもなぁ
With 口語体が理解できないやつが正しい日本語 とか = × とかどういうこと? = 〇 End With 0805デフォルトの名無しさん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 0806デフォルトの名無しさん2019/03/28(木) 23:57:12.09ID:OmRArJOr 日付フィルターを使うときにCriteriaに設定する値って、必ず一旦Double型に型変換したDate型データをもとにしてFormat変換しなきゃいけないのかな? Date関数の戻り値をそのままFormat変換してもうまくフィルターがかからなくて危うくハマりかけたんだが、後学のために識者がいたら教えてほしい 0807デフォルトの名無しさん2019/03/29(金) 00:17:35.48ID:PdUuDb+g まともなレスには異論返せないのな 0808デフォルトの名無しさん2019/03/29(金) 00:47:46.11ID:MmeaYZo8>>807 x まともなレスには異論返せないのな o まともなレスには異論返せないのね 0809デフォルトの名無しさん2019/03/29(金) 06:46:41.33ID:YUbMxDIL>>804 ピリオド抜けてる 0810デフォルトの名無しさん2019/03/29(金) 12:23:42.03ID:Fu/JMZl+ 異論返せていないまともなレスとはどれ 0811デフォルトの名無しさん2019/03/29(金) 12:35:07.47ID:7DnII+1F>>810 この辺りじゃないか? >>799 >>8000812デフォルトの名無しさん2019/03/29(金) 12:37:39.38ID:FHKNInbw どうでも良いことで延々と論じるのは如何なものか。 0813デフォルトの名無しさん2019/03/29(金) 18:52:59.03ID:DRFZR9Lo>>809 シンタックスエラーになります 0814デフォルトの名無しさん2019/03/30(土) 09:25:26.20ID:Fw0ogXHz VBAで実行時にシンタックスエラーが出るのはどういう場合だろう デフォルト設定だと1行入力ごとに構文解析するし 0815デフォルトの名無しさん2019/03/30(土) 09:27:30.74ID:uS2atdcl>>814 それ、1行ごとの構文解析だろ For Next Do Loop If End If のチェックまではしてないと思うぞ 0816デフォルトの名無しさん2019/03/30(土) 09:28:29.64ID:uS2atdcl ああすまん。これってシンタックスエラーではないんだっけ でもエラーになるよね 0817デフォルトの名無しさん2019/03/30(土) 09:41:55.36ID:Fw0ogXHz Nextを書かなかった場合は 「コンパイル エラー:For に対応する Next がありません。」 だった
ワークシートはこんなかんじ 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 くみこ 08608592019/05/28(火) 16:01:28.69ID:JWvhlEsx 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 0861デフォルトの名無しさん2019/05/28(火) 16:38:34.40ID:Z4r31Ymp>>860 i=i+1 が抜けてるだけじゃね? 0862デフォルトの名無しさん2019/05/28(火) 16:40:41.12ID:Z4r31Ymp>>861 それと、行や列用の変数として r c 使ってもええんやで 08638592019/05/28(火) 17:30:10.75ID:xKlK3b52>>861 ファッ!それかも! マジでありがとうです! 何かあったらまた聞きます ホントありがとう、頭いい人! 0864デフォルトの名無しさん2019/05/28(火) 18:33:24.92ID:1J9FOJWe 初心者です。 Wordのユーザーフォームを作りたいのですがExcelの書籍しかなくて詰みました。 Excelのセル番地『A1』に相当するのが『ActiveDocument .tables (1) .cell (1.1)』というところまで突き止めて、 とりあえずテキストボックスに打ち込んだ文字列をセルに転記するところまではできたのですが、それ以上のことができません。 例えば繰り返し同じフォームを使う前提で、古いデータを削除したい時、Excelならば 『Range("A1") .CleanContents』で済むっぽい(うろ覚え)ですが これをActiveDocumentで再現するにはどうすればよいでしょうか。