!extend:checked:vvvvv:1000:512
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part47 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489557874/
※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Excel VBA 質問スレ Part48 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8e-Fc1g)
2017/05/16(火) 08:24:45.78ID:iIGA/64l0488デフォルトの名無しさん (ワッチョイ 3511-UdBD)
2017/06/04(日) 12:55:28.25ID:NZhuuX9z0489デフォルトの名無しさん (アークセー Sx3d-nANo)
2017/06/04(日) 13:22:31.55ID:tlzlLDo0x490デフォルトの名無しさん (ワッチョイ 9e23-amhP)
2017/06/04(日) 17:48:58.65ID:1s3T2QVw0 >>484
全然ちがう。
win32API使って別スレッド作る方法はあるし可能だよ。
けどExcelVBAでそれをやると物凄い不安定になる。
自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。
じゃあ、Excelのオブジェクト触らずに計算する所だけなら良いかというと、動く場合もあるけど複雑なものになると処理が間に合わなくて落ちるらしい。
基本、やめた方が良い。
全然ちがう。
win32API使って別スレッド作る方法はあるし可能だよ。
けどExcelVBAでそれをやると物凄い不安定になる。
自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。
じゃあ、Excelのオブジェクト触らずに計算する所だけなら良いかというと、動く場合もあるけど複雑なものになると処理が間に合わなくて落ちるらしい。
基本、やめた方が良い。
491デフォルトの名無しさん (スプッッ Sded-qcoX)
2017/06/05(月) 01:20:19.17ID:oPyz6kCkd 別処理をWord使って処理させようとしてもOffice全体で連携かかってるみたいでうまくいかなかったことがある
変なとこで作り込まれていてやりたいようにできないんだよな
変なとこで作り込まれていてやりたいようにできないんだよな
492デフォルトの名無しさん (ドコグロ MM12-Tm/A)
2017/06/05(月) 08:37:00.53ID:nJSdLO+iM 元々マルチスレッドに対応してないものを無理矢理動かそうとして文句言われてもなぁ...
493デフォルトの名無しさん (ワッチョイ 5e6d-zyXy)
2017/06/05(月) 08:43:10.54ID:+xVCJOY00 文句じゃなくね
494デフォルトの名無しさん (ワッチョイ 2973-KDIu)
2017/06/05(月) 08:55:26.49ID:btJTHdak0 想定外の使い方ができないぞ!ってのは文句じゃないのか
495デフォルトの名無しさん (スップ Sdea-rE82)
2017/06/05(月) 09:24:51.60ID:Sx3XxldLd >>490
ほほ同じ経験がある。
自分の場合は処理が終了したデータをDBにINSERTするところは上手くマルチスレッド化できた。
待ち合わせが必要ないパターンだったし。
COMそのものがマルチスレッドだめなんかね?
ほほ同じ経験がある。
自分の場合は処理が終了したデータをDBにINSERTするところは上手くマルチスレッド化できた。
待ち合わせが必要ないパターンだったし。
COMそのものがマルチスレッドだめなんかね?
496デフォルトの名無しさん (JP 0H6e-rLqX)
2017/06/05(月) 11:01:11.07ID:bwrXOc4qH >>490
> 自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。
それGUIアプリの常識。
全然関係ないスレッドからUIスレッド管理下のものに触ってはいけない。
https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89
> 自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。
それGUIアプリの常識。
全然関係ないスレッドからUIスレッド管理下のものに触ってはいけない。
https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89
497デフォルトの名無しさん (スップ Sdea-rE82)
2017/06/05(月) 11:54:25.53ID:Sx3XxldLd >>496
プライマリスレッドからでもダメなこと多かったよ。
プライマリスレッドからでもダメなこと多かったよ。
498デフォルトの名無しさん (JP 0H6e-rLqX)
2017/06/05(月) 11:59:36.00ID:bwrXOc4qH499デフォルトの名無しさん (ドコグロ MM12-Tm/A)
2017/06/05(月) 12:54:03.39ID:cR57/ADJM >>495
> COMそのものがマルチスレッドだめなんかね?
COM 自体はアパートメントモデルをちゃんと設定すればマルチスレッドでも動く
http://eternalwindows.jp/com/apartment/apartment01.html
個々のオブジェクトが正しく動作するかどうかはまた別の話
> COMそのものがマルチスレッドだめなんかね?
COM 自体はアパートメントモデルをちゃんと設定すればマルチスレッドでも動く
http://eternalwindows.jp/com/apartment/apartment01.html
個々のオブジェクトが正しく動作するかどうかはまた別の話
500デフォルトの名無しさん (ササクッテロラ Sp3d-mjoq)
2017/06/05(月) 23:38:18.98ID:bd1ggU41p マクロを作成は通常MODULEですが、
Sheet1やThisworkbookに記入するのはどういうときでしょうか。済みません。
Sheet1やThisworkbookに記入するのはどういうときでしょうか。済みません。
501デフォルトの名無しさん (ワッチョイ 4aef-PQPf)
2017/06/06(火) 00:15:48.16ID:d6CS0Xy90 なんでVBAでマルチスレッドにするの
502デフォルトの名無しさん (ワッチョイ 9e23-amhP)
2017/06/06(火) 04:12:26.65ID:NdFOOmMr0 >>501
要望として有るのは待ち状態の時に先に進めるためとか。
ダイアログの中には何らかの操作をしてダイアログ自体を閉じさせないと次のステップに行かない物がある。
そういう時に別スレッドで無限ループ中でそのダイアログが見つかったら操作する処理を動かしてからダイアログ表示させるとか。
例えばメッセージボックス表示させるんだけど10秒間ボタンが押されなかったらキャンセルするとか。
こういうのは上手く書くと動く。
他にも複数の関連しない計算に時間がかかっている時に単純に速度アップのために使いたいと思うかもしれない。
でも動いても趣味のプログラム以外じゃ危なっかしくて使えない。
マルチプロセスで代替えできるものも多いから無理する必要もない。
要望として有るのは待ち状態の時に先に進めるためとか。
ダイアログの中には何らかの操作をしてダイアログ自体を閉じさせないと次のステップに行かない物がある。
そういう時に別スレッドで無限ループ中でそのダイアログが見つかったら操作する処理を動かしてからダイアログ表示させるとか。
例えばメッセージボックス表示させるんだけど10秒間ボタンが押されなかったらキャンセルするとか。
こういうのは上手く書くと動く。
他にも複数の関連しない計算に時間がかかっている時に単純に速度アップのために使いたいと思うかもしれない。
でも動いても趣味のプログラム以外じゃ危なっかしくて使えない。
マルチプロセスで代替えできるものも多いから無理する必要もない。
503デフォルトの名無しさん (ワッチョイ 6a06-k7rq)
2017/06/06(火) 04:20:46.72ID:LBKXQv4G0 >>500
>Sheet1
そのシートをActiveにした時の処理、DeActivateにする時の処理、あるいは
特定のセルにデータを入れた時の処理 etc
>Thisworkbook
ブックの起動時や終了時にDBとの接続処理や切断処理を入れてる
>Sheet1
そのシートをActiveにした時の処理、DeActivateにする時の処理、あるいは
特定のセルにデータを入れた時の処理 etc
>Thisworkbook
ブックの起動時や終了時にDBとの接続処理や切断処理を入れてる
504デフォルトの名無しさん (ワッチョイ 5e6d-zUMb)
2017/06/06(火) 07:54:06.29ID:xLIl+dL/0 sheetやbookに書くのはそのオブジェクトのイベント
使い捨ての整形マクロなんかはsheetに書いてもいいけど、標準モジュールに書いたほうベター
使い捨ての整形マクロなんかはsheetに書いてもいいけど、標準モジュールに書いたほうベター
505デフォルトの名無しさん (アークセー Sx3d-nANo)
2017/06/06(火) 09:05:13.69ID:YhE+Nuz8x >>500
シートやブックのイベントを使用するためだよ
シートやブックのイベントを使用するためだよ
506デフォルトの名無しさん (ワッチョイ bd23-KDIu)
2017/06/06(火) 20:09:22.46ID:Uy4z/eLw0 vlookup等を使用しているとソルバーが使えないらしいのでVBAで作ろうと思っていますが、定番というか定石というか、参考になるサイトややり方等はありますか?
言ってて抽象的だなとは思ってはいますが、どうすべきなのか判らず…よろしくお願いします。
言ってて抽象的だなとは思ってはいますが、どうすべきなのか判らず…よろしくお願いします。
507デフォルトの名無しさん (ワッチョイ 6a6f-E6+r)
2017/06/06(火) 21:53:22.27ID:efHThVDq0 >>500
Thisworkbook.Worksheets(Activesheet.Name).Cells(1,1).Value=1
って書くのが面倒くさくて、
Me.Cells(1,1).Value=1
って書きたい時とか。
Me.も要らねえだろって?
何らかの理由でActivesheetが変わっちゃったら嫌じゃないですか?
Thisworkbook.Worksheets(Activesheet.Name).Cells(1,1).Value=1
って書くのが面倒くさくて、
Me.Cells(1,1).Value=1
って書きたい時とか。
Me.も要らねえだろって?
何らかの理由でActivesheetが変わっちゃったら嫌じゃないですか?
508デフォルトの名無しさん (ササクッテロラ Sp3d-mjoq)
2017/06/06(火) 21:56:25.64ID:vXDpJbBwp 教えてください。
マクロでハイパーリンクを実行したいのですが、セルにリンクを貼る必要がない、ただマクロから実行するだけというとき、どう書けば良いのでしょうか。
マクロでハイパーリンクを実行したいのですが、セルにリンクを貼る必要がない、ただマクロから実行するだけというとき、どう書けば良いのでしょうか。
509デフォルトの名無しさん (ワッチョイ ed46-RkbP)
2017/06/06(火) 22:06:15.37ID:XIE7cY+50510デフォルトの名無しさん (ワッチョイ 6a6f-E6+r)
2017/06/06(火) 22:14:17.43ID:efHThVDq0 そっち?
ハイパーリンクじゃなきゃダメなのか、
飛べば何でもいいのか。
Dim Ie As InternetExplorer
Set Ie = CreateObject("InternetExplorer.Application")
Ie.Visible = True
Ie.Navigate "http://www.google.co.jp/"
ハイパーリンクじゃなきゃダメなのか、
飛べば何でもいいのか。
Dim Ie As InternetExplorer
Set Ie = CreateObject("InternetExplorer.Application")
Ie.Visible = True
Ie.Navigate "http://www.google.co.jp/"
511デフォルトの名無しさん (ワッチョイ 6a6f-E6+r)
2017/06/06(火) 22:21:53.88ID:efHThVDq0 ↑Microsoft Internet Controlsを参照設定しないとだめだわ。
512デフォルトの名無しさん (ワッチョイ 5e6d-hsUK)
2017/06/06(火) 22:53:35.96ID:xLIl+dL/0 >>510
IEではなく、chromeインスタンスを作ることって出来ますか?
IEではなく、chromeインスタンスを作ることって出来ますか?
513デフォルトの名無しさん (アークセー Sx3d-nANo)
2017/06/06(火) 23:09:15.48ID:NPrNQzK4x Dim objShell as Object
Set objShell = CreateObject(“WScript.Shell”)
GC.Run (“chrome.exe -url ” & アクセスしたいページのアドレス)
Set objShell = CreateObject(“WScript.Shell”)
GC.Run (“chrome.exe -url ” & アクセスしたいページのアドレス)
514デフォルトの名無しさん (アークセー Sx3d-nANo)
2017/06/06(火) 23:10:19.79ID:NPrNQzK4x 間違えたので
Dim objShell as Object
Set objShell = CreateObject(“WScript.Shell”)
objShell.Run (“chrome.exe -url ” & アクセスしたいページのアドレス)
Dim objShell as Object
Set objShell = CreateObject(“WScript.Shell”)
objShell.Run (“chrome.exe -url ” & アクセスしたいページのアドレス)
515デフォルトの名無しさん (スプッッ Sded-qcoX)
2017/06/07(水) 00:14:23.17ID:iB9NoSxCd >>507
activesheetがどこだろうとsheetモジュールに書いてんなら関係なかんべ
sheetオブジェクトまで省略できる手抜きコードで済ますのにたまに使ってるわ
あとsheetをコンフィグ書いとくのに使ってるときにプロパティ的な関数を置いといたりな
あまり行儀よくはない自覚はある
activesheetがどこだろうとsheetモジュールに書いてんなら関係なかんべ
sheetオブジェクトまで省略できる手抜きコードで済ますのにたまに使ってるわ
あとsheetをコンフィグ書いとくのに使ってるときにプロパティ的な関数を置いといたりな
あまり行儀よくはない自覚はある
516デフォルトの名無しさん (ブーイモ MM49-JT0G)
2017/06/07(水) 01:08:40.19ID:0NeAqWbNM >>506
詳しくはないけど、VBAでやるものじゃない印象。
Excelのソルバーで収束するように数式を書き換えるか、他の言語やツールを使うのがいいんじゃないかなあ。
「ソルバー アルゴリズム」でググれば色々手段が出てくるよ。
詳しくはないけど、VBAでやるものじゃない印象。
Excelのソルバーで収束するように数式を書き換えるか、他の言語やツールを使うのがいいんじゃないかなあ。
「ソルバー アルゴリズム」でググれば色々手段が出てくるよ。
517デフォルトの名無しさん (ワッチョイ 7d6d-28Zt)
2017/06/08(木) 01:09:56.48ID:eFwaOcHQ0 あるサイトのスクロールバーを一番下まで下げて
キャプチャしてシートに貼り付けてトリミング。
同じページにあるフレーム内のスクロールバーを下まで下げて
キャプチャしてシートに貼り付けてトリミング。ってのを
3ページ分位繰り返し行いたいのですが
http://www.vba-ie.net/ie/iescroll.html
この辺とか見てるんですがヒントください
キャプチャしてシートに貼り付けてトリミング。
同じページにあるフレーム内のスクロールバーを下まで下げて
キャプチャしてシートに貼り付けてトリミング。ってのを
3ページ分位繰り返し行いたいのですが
http://www.vba-ie.net/ie/iescroll.html
この辺とか見てるんですがヒントください
518デフォルトの名無しさん (ワッチョイ 5b23-cb7n)
2017/06/08(木) 05:16:07.28ID:1DKX/Vru0 >>517
なんでこんなヘンテコなことしなきゃならんの?
JavaScriptなんて必要無いぞ。
と思ったけど、ちょっと調べてみるとJavaScriptでスクロールしてる例が多いな。
今、試す環境が無いから何とも言えないな。
DOMの勉強するよろし。
なんでこんなヘンテコなことしなきゃならんの?
JavaScriptなんて必要無いぞ。
と思ったけど、ちょっと調べてみるとJavaScriptでスクロールしてる例が多いな。
今、試す環境が無いから何とも言えないな。
DOMの勉強するよろし。
519デフォルトの名無しさん (ワッチョイ db6d-D9zB)
2017/06/08(木) 07:40:44.87ID:fJC45ZIB0520デフォルトの名無しさん (ワッチョイ 5b23-cb7n)
2017/06/08(木) 15:33:04.11ID:1DKX/Vru0 >>519
キーボードマクロは危険だよ。
動いてる最中にマウスクリックとかすると場合により大変なことになる。
操作は難しくないけどキャプチャをどうするかで難しくなるかも。
自分だったら難しい方法を選択するので。
キーボードマクロは危険だよ。
動いてる最中にマウスクリックとかすると場合により大変なことになる。
操作は難しくないけどキャプチャをどうするかで難しくなるかも。
自分だったら難しい方法を選択するので。
521デフォルトの名無しさん (アウアウイー Saf1-ptyI)
2017/06/08(木) 20:37:38.86ID:HogApBmCa VBA初心者です
For Nextループのカウンタ変数について質問です
1) データの最終行を取得
カウンタ変数の初期値 2、終了値をデータの最終行に設定(仮に11とします)
2) For Nextループで処理
3) ループ終了後、A11セルの値を変数に代入したい
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
処理
Next
★変数 = Cells(i, 1).Value
★For Nextループを抜けた直後のカウンタ変数iは、データの最終行(i=11)のはずなので、
そのままCellsプロパティに代入すればA11セルの値を取得できると考えたのですが、
ループ終了時にカウンタ変数iが終了値に+1されて12になってしまいます
「For Nextループ終了後のカウンタ変数iは終了値+1になる」
というのは仕様なのでしょうか?
For Nextループのカウンタ変数について質問です
1) データの最終行を取得
カウンタ変数の初期値 2、終了値をデータの最終行に設定(仮に11とします)
2) For Nextループで処理
3) ループ終了後、A11セルの値を変数に代入したい
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
処理
Next
★変数 = Cells(i, 1).Value
★For Nextループを抜けた直後のカウンタ変数iは、データの最終行(i=11)のはずなので、
そのままCellsプロパティに代入すればA11セルの値を取得できると考えたのですが、
ループ終了時にカウンタ変数iが終了値に+1されて12になってしまいます
「For Nextループ終了後のカウンタ変数iは終了値+1になる」
というのは仕様なのでしょうか?
522デフォルトの名無しさん (ワッチョイ dd8b-Loth)
2017/06/08(木) 20:40:46.12ID:TyBSFeDZ0 仕様ではないけど現実はそうなる
523デフォルトの名無しさん (ワッチョイ d543-g/1O)
2017/06/08(木) 20:45:04.87ID:xavUYSpk0 ループ変数が指定の範囲を「越えたら」ループを終了する、というのがForの仕様
524デフォルトの名無しさん (アークセー Sx71-sCoW)
2017/06/08(木) 20:46:19.32ID:x3QO3rgpx >>521
xlupの値を使えばいいでしょ
xlupの値を使えばいいでしょ
525デフォルトの名無しさん (ワッチョイ dd8b-Loth)
2017/06/08(木) 20:46:39.16ID:TyBSFeDZ0 ループ変数が指定の範囲の「間」ループを繰替えす、というのがForの仕様
526デフォルトの名無しさん (アークセー Sx71-5Ux4)
2017/06/08(木) 20:53:59.27ID:ajpliBtkx >>522
仕様だよ
For Nextはカウンタ変数の値が引数endを超過した(または引数endの値未満になった)と判断したときにループ終了になる
Step1でループさせた場合、カウンタ変数がend+1の値になったときに次の処理に移るので、ループを抜けた後のカウンタ変数は当然end+1になる
仕様だよ
For Nextはカウンタ変数の値が引数endを超過した(または引数endの値未満になった)と判断したときにループ終了になる
Step1でループさせた場合、カウンタ変数がend+1の値になったときに次の処理に移るので、ループを抜けた後のカウンタ変数は当然end+1になる
527521 (アウアウイー Saf1-ptyI)
2017/06/08(木) 20:55:48.28ID:HogApBmCa528デフォルトの名無しさん (アークセー Sx71-sCoW)
2017/06/08(木) 20:59:19.38ID:x3QO3rgpx529デフォルトの名無しさん (ワッチョイ 2311-OlK+)
2017/06/08(木) 21:43:39.15ID:ZLqPeRaK0 i = 1
Do While i <= 11
i = i + 1
Loop
みたいなもんだね。
あと言語によってはループ変数(i)がfor文の中だけのスコープで
for文を抜けたら破棄されたりするから、ループ変数はループの中だけで
使う癖をつけておいた方が無難。
Do While i <= 11
i = i + 1
Loop
みたいなもんだね。
あと言語によってはループ変数(i)がfor文の中だけのスコープで
for文を抜けたら破棄されたりするから、ループ変数はループの中だけで
使う癖をつけておいた方が無難。
530デフォルトの名無しさん (ワッチョイ 236f-xcYX)
2017/06/08(木) 21:44:40.10ID:/ZCsTOrv0 別ブックのデータを自動で取り込むプログラムを書いていて思うんだけど、
そういうのが簡単に出来るクラスとかないの?
そういうのが簡単に出来るクラスとかないの?
531デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)
2017/06/08(木) 21:47:25.81ID:XdC3vCwF0 >>530
Workbooks.Open
Workbooks.Open
532デフォルトの名無しさん (ワッチョイ 2311-OlK+)
2017/06/08(木) 21:52:58.35ID:ZLqPeRaK0 >>517
こんな感じかな?
出来るかはわかんないけど。
IEインスタンスを生成する
IEを表示する
IEにURLを送る
IEの表示を待つ
IEのページにフォーカスする
sendkeysで一番下までスクロールする
sendkeysでPrintScreen
0.1秒位待つ
シートに貼り付けてトリミングする
IEのiframeにフォーカスする
sendkeysで一番下までスクロールする
sendkeysでPrintScreen
0.1秒位待つ
シートに貼り付けてトリミングする
以下ループ
キーマクロは俺も考えたけど、エクセルの操作が融通ききにくそう。
UWSCとか使えばいいかもしれないけど、結局VBAで書くのと大差なくなる気がする。
こんな感じかな?
出来るかはわかんないけど。
IEインスタンスを生成する
IEを表示する
IEにURLを送る
IEの表示を待つ
IEのページにフォーカスする
sendkeysで一番下までスクロールする
sendkeysでPrintScreen
0.1秒位待つ
シートに貼り付けてトリミングする
IEのiframeにフォーカスする
sendkeysで一番下までスクロールする
sendkeysでPrintScreen
0.1秒位待つ
シートに貼り付けてトリミングする
以下ループ
キーマクロは俺も考えたけど、エクセルの操作が融通ききにくそう。
UWSCとか使えばいいかもしれないけど、結局VBAで書くのと大差なくなる気がする。
533デフォルトの名無しさん (ワッチョイ 236f-xcYX)
2017/06/08(木) 22:01:50.62ID:/ZCsTOrv0 >>531
そうだけどさ、
自身のファイルを開いてないか?
開いたファイルにフィルタがかかってないか?
開こうとしているファイルは既に開いてないか?
xlsかcsvか?
って、色々チェックするの面倒じゃん。
そうだけどさ、
自身のファイルを開いてないか?
開いたファイルにフィルタがかかってないか?
開こうとしているファイルは既に開いてないか?
xlsかcsvか?
って、色々チェックするの面倒じゃん。
534デフォルトの名無しさん (ワッチョイ db6d-MPbE)
2017/06/08(木) 22:16:37.58ID:fJC45ZIB0 作ればいいんじゃないの
535デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)
2017/06/08(木) 22:40:42.97ID:XdC3vCwF0 >>533
Function foo1(FilePath As String) As Workbook
For Each x In Workbooks
If x.FullName = FilePath Then Set foo1 = x: Exit For
Next
If foo1 Is Nothing Then Set foo1 = Workbooks.Open(FilePath)
End Function
Function foo2(WS As Workbook, SheetName As String) As Worksheet
For Each x In WS.Worksheets
If x.Name Like SheetName Then Set foo2 = x: Exit For
Next
If Not foo2 Is Nothing Then foo2.AutoFilterMode = False
End Function
こんなんだろ。大した手間でもないと思うんだけど。
俺はモジュール一個にワークブック、ワークシート、セルの各種チェック含めた操作関係まとめてたけど、
二十個くらいにしかならなかったぞ。
Function foo1(FilePath As String) As Workbook
For Each x In Workbooks
If x.FullName = FilePath Then Set foo1 = x: Exit For
Next
If foo1 Is Nothing Then Set foo1 = Workbooks.Open(FilePath)
End Function
Function foo2(WS As Workbook, SheetName As String) As Worksheet
For Each x In WS.Worksheets
If x.Name Like SheetName Then Set foo2 = x: Exit For
Next
If Not foo2 Is Nothing Then foo2.AutoFilterMode = False
End Function
こんなんだろ。大した手間でもないと思うんだけど。
俺はモジュール一個にワークブック、ワークシート、セルの各種チェック含めた操作関係まとめてたけど、
二十個くらいにしかならなかったぞ。
536デフォルトの名無しさん (ワッチョイ dd8b-Kuea)
2017/06/08(木) 23:01:17.07ID:TyBSFeDZ0537デフォルトの名無しさん (ワッチョイ db6d-qkek)
2017/06/08(木) 23:08:59.28ID:fJC45ZIB0 Function foo1(FilePath As String) As Workbook
on error resume next
この魔法の一行で全て解決
on error resume next
この魔法の一行で全て解決
538デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)
2017/06/08(木) 23:28:03.30ID:XdC3vCwF0 On Errorだと原因が分からないからなぁ。
単純なマクロならそれでもいいんだけど。
単純なマクロならそれでもいいんだけど。
539デフォルトの名無しさん (ワッチョイ 2311-OlK+)
2017/06/08(木) 23:37:56.75ID:ZLqPeRaK0540デフォルトの名無しさん (ドコグロ MM13-UHXl)
2017/06/08(木) 23:41:02.10ID:q8X0hO01M application.runをaccessから呼んだんだけど、
activateしないと失敗してしまう。
あと、マクロを保持してるブックを開いてマクロを実行すると処理中はブックを触れないが、accessから呼ぶと触れてしまう。
おかげで処理に失敗するので、何とかならないだろうか。
activateしないと失敗してしまう。
あと、マクロを保持してるブックを開いてマクロを実行すると処理中はブックを触れないが、accessから呼ぶと触れてしまう。
おかげで処理に失敗するので、何とかならないだろうか。
541デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)
2017/06/08(木) 23:47:27.35ID:XdC3vCwF0542デフォルトの名無しさん (ワッチョイ 0332-Ell8)
2017/06/09(金) 03:33:36.27ID:Vt79/8Sl0 アクセル
543デフォルトの名無しさん (ワッチョイ 5b23-cb7n)
2017/06/09(金) 04:45:48.88ID:e02rbmqe0 >>532
キーマクロもSendkeysもやめた方が良い。
Sendkeys等は宛先を指定しない。
VBA動作中でもアクティブウィンドウは操作で変更出来る。
IEのスクロールはページ表示後もDOMで出来る。
'1ページ高さ
lngPH=objIE.Document.DocumentElement.ClientHeight
'サイト高さ
lngBH=objIE.Document.Body.ScrollHeight
'1ページスクロール
objIE.DocumentParentWindow.ScrollTo 0, lngPH
キーマクロもSendkeysもやめた方が良い。
Sendkeys等は宛先を指定しない。
VBA動作中でもアクティブウィンドウは操作で変更出来る。
IEのスクロールはページ表示後もDOMで出来る。
'1ページ高さ
lngPH=objIE.Document.DocumentElement.ClientHeight
'サイト高さ
lngBH=objIE.Document.Body.ScrollHeight
'1ページスクロール
objIE.DocumentParentWindow.ScrollTo 0, lngPH
544デフォルトの名無しさん (ドコグロ MM13-W6lL)
2017/06/09(金) 07:54:37.94ID:SNIZYBKJM >>542
なんかふと笑った
なんかふと笑った
545デフォルトの名無しさん (ワッチョイ 9d73-2i+1)
2017/06/09(金) 11:39:02.72ID:MW/jqskx0 excelで直接DBに接続してSQLの何が地獄なんだろう…
546デフォルトの名無しさん (アークセー Sx71-sCoW)
2017/06/09(金) 12:02:22.23ID:KaOScHzEx547デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)
2017/06/09(金) 12:08:37.61ID:6C6XVn6H0548デフォルトの名無しさん (ワキゲー MM13-S7v4)
2017/06/09(金) 12:17:15.07ID:lNiKtgPwM >>546
ジンバブエドルってもう回収済みだから割と価値高いよな
ジンバブエドルってもう回収済みだから割と価値高いよな
549デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)
2017/06/09(金) 12:23:12.97ID:6C6XVn6H0 今の1ジンバブエドル=0.3円らしいから、100億ジンバブエドル=30億円かな
550デフォルトの名無しさん (ドコグロ MM13-UHXl)
2017/06/09(金) 12:48:37.15ID:8EXeePojM >>541
access起点で作ってるらもう駄目だー。
access起点で作ってるらもう駄目だー。
551デフォルトの名無しさん (ブーイモ MMa9-+CHm)
2017/06/09(金) 12:52:52.49ID:jWLsfRM+M 素人にVBAを教えるとき
いきなりRange()とするんじゃなく
Workbooks("うんたら")〜.RangeやCells
と、ちゃんと上位層の指定を書くんよ!
って最初から教えるべき?
それとも慣れてから教えるべき?
いきなりRange()とするんじゃなく
Workbooks("うんたら")〜.RangeやCells
と、ちゃんと上位層の指定を書くんよ!
って最初から教えるべき?
それとも慣れてから教えるべき?
552デフォルトの名無しさん (ワッチョイ 3546-MFns)
2017/06/09(金) 14:03:55.81ID:DLo2rfbX0553デフォルトの名無しさん (JP 0H6b-m0Mh)
2017/06/09(金) 14:16:07.35ID:ehLmIvolH >>552
普通に、「シートモジュールから自分のシートを参照するときは不要、それ以外は必要」と教えれば?
普通に、「シートモジュールから自分のシートを参照するときは不要、それ以外は必要」と教えれば?
554デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)
2017/06/09(金) 14:20:33.43ID:6C6XVn6H0555552 (ワッチョイ 3546-MFns)
2017/06/09(金) 14:43:26.16ID:DLo2rfbX0556デフォルトの名無しさん (アウアウエー Sa93-qAom)
2017/06/09(金) 14:48:22.03ID:LCUpZwW2a557デフォルトの名無しさん (アウアウエー Sa93-qAom)
2017/06/09(金) 14:50:28.52ID:LCUpZwW2a558デフォルトの名無しさん (JP 0H6b-m0Mh)
2017/06/09(金) 14:56:10.12ID:ehLmIvolH >>555
> Cells Rangeの前には必ず上位層を指定する癖を 付けさせた方がいいと俺は思う
に対する俺の意見なんで、アンカーは間違ってないよ。
> Me.Range(・・・・) と教えた方が良いと思うんだけど
これにも反対。
MSが言うように、実引数のときのみ使う方がわかりやすい。
https://msdn.microsoft.com/ja-jp/library/office/gg251792(v=office.15).aspx
そうしないとMeだらけになる。
> Cells Rangeの前には必ず上位層を指定する癖を 付けさせた方がいいと俺は思う
に対する俺の意見なんで、アンカーは間違ってないよ。
> Me.Range(・・・・) と教えた方が良いと思うんだけど
これにも反対。
MSが言うように、実引数のときのみ使う方がわかりやすい。
https://msdn.microsoft.com/ja-jp/library/office/gg251792(v=office.15).aspx
そうしないとMeだらけになる。
559552 (ワッチョイ 3546-MFns)
2017/06/09(金) 15:00:45.88ID:DLo2rfbX0560デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)
2017/06/09(金) 15:05:08.05ID:6C6XVn6H0 Range(Cells,Cells)の教え方が本題じゃないし、
かといってエラーの網羅なんか現実的じゃないしで、
本題に沿わない意見ってだけだからな。
そもそも同じ話してないから否定も何も話し合いにならないぞ。
かといってエラーの網羅なんか現実的じゃないしで、
本題に沿わない意見ってだけだからな。
そもそも同じ話してないから否定も何も話し合いにならないぞ。
561デフォルトの名無しさん (JP 0H6b-m0Mh)
2017/06/09(金) 15:16:13.50ID:ehLmIvolH >>559
まぁ、俺は全力で君の意見を否定するけどね。
まぁ、俺は全力で君の意見を否定するけどね。
562デフォルトの名無しさん (ワッチョイ 0332-Ell8)
2017/06/09(金) 16:06:32.05ID:Vt79/8Sl0 これにて終了
563デフォルトの名無しさん (ワッチョイ db6d-yT0o)
2017/06/09(金) 19:01:42.64ID:8JxPJdKv0 >>551
慣れてからは省略することが無くなった。そんなしょーもないとこで手を抜くとミスする確率が跳ね上がる
その分setは多用するけどね
set 集計シート = sheets("total")
集計シート.cells(1,1)
慣れてからは省略することが無くなった。そんなしょーもないとこで手を抜くとミスする確率が跳ね上がる
その分setは多用するけどね
set 集計シート = sheets("total")
集計シート.cells(1,1)
564デフォルトの名無しさん (ワッチョイ dd8b-Loth)
2017/06/09(金) 21:53:45.20ID:yARYpVIR0 >>563
sheetsは省略しとるけどええんかこれで?
sheetsは省略しとるけどええんかこれで?
565デフォルトの名無しさん (ワッチョイ 0332-Ell8)
2017/06/09(金) 21:53:49.39ID:Vt79/8Sl0 Set 集計シート = Sheets("Total")
集計シート.Cells(1, 1)
集計シート.Cells(1, 1)
566デフォルトの名無しさん (ワッチョイ db6d-RrxM)
2017/06/09(金) 22:01:02.57ID:8JxPJdKv0 >>564
自分の信じた道を進めばいい
もし君の不注意が多いなら、いつか俺と同じ表記になる
sheetを書こうが書くまいが絶対にミスしないなら、sheetはずっと書かないのだろう
それはそれでいいことだと思う
自分の信じた道を進めばいい
もし君の不注意が多いなら、いつか俺と同じ表記になる
sheetを書こうが書くまいが絶対にミスしないなら、sheetはずっと書かないのだろう
それはそれでいいことだと思う
567デフォルトの名無しさん (ワッチョイ dd8b-Loth)
2017/06/09(金) 22:04:36.45ID:yARYpVIR0568デフォルトの名無しさん (ワッチョイ db6d-RrxM)
2017/06/09(金) 22:12:56.26ID:8JxPJdKv0 >>567
/(^o^)\
単独ブックならbook名は省略するかな
単独シートでマクロを使う場合は省略はしない。拡張した時に大抵必要になるし、そのパターンが多い
で、複数のブックを使う場合は必ずsetする
set 設定シート = thisworkbook.sheets("設定シート")
set 転記元ブック = workbooks.open("転記元ブック")
set 転記元シート = workbooks.open("転記元ブック").sheets("転記元シート")
set 転記先シート = workbooks.open("転記先ブック").sheets("転記先シート")
大体こんな感じでsetしてから使うかな
俺の癖で、設定はマクロファイルに入れるので、thisworkbookだけはそのまま使う事が多い
/(^o^)\
単独ブックならbook名は省略するかな
単独シートでマクロを使う場合は省略はしない。拡張した時に大抵必要になるし、そのパターンが多い
で、複数のブックを使う場合は必ずsetする
set 設定シート = thisworkbook.sheets("設定シート")
set 転記元ブック = workbooks.open("転記元ブック")
set 転記元シート = workbooks.open("転記元ブック").sheets("転記元シート")
set 転記先シート = workbooks.open("転記先ブック").sheets("転記先シート")
大体こんな感じでsetしてから使うかな
俺の癖で、設定はマクロファイルに入れるので、thisworkbookだけはそのまま使う事が多い
569デフォルトの名無しさん (ワッチョイ 250d-kOr2)
2017/06/09(金) 22:15:20.46ID:dxrWbrOn0 worksheetsをsheetsと略してるのはどうなの?ってことだろ
570デフォルトの名無しさん (ワッチョイ db6d-qkek)
2017/06/09(金) 22:21:42.71ID:8JxPJdKv0571デフォルトの名無しさん (ワッチョイ 236f-xcYX)
2017/06/09(金) 22:24:19.15ID:w6iYvsph0 面白いな。
そんな書き方あったのかよっていう例が色々。
でも、Openしたブックを直接セットしちゃったら、
ReadOnlyとかできるの?
そんな書き方あったのかよっていう例が色々。
でも、Openしたブックを直接セットしちゃったら、
ReadOnlyとかできるの?
572デフォルトの名無しさん (ワッチョイ 5b23-cb7n)
2017/06/09(金) 22:26:44.97ID:e02rbmqe0 必ずBookも省略しない。
慣れだね。
気分でSetもWithも使わずに物凄い長い文を書くこともある。
ー度動かしてから修正するけどね。
慣れだね。
気分でSetもWithも使わずに物凄い長い文を書くこともある。
ー度動かしてから修正するけどね。
573デフォルトの名無しさん (ワッチョイ db6d-qkek)
2017/06/09(金) 22:28:37.54ID:8JxPJdKv0 >>571
https://msdn.microsoft.com/ja-jp/library/office/ff194819.aspx
3つめの引数で設定できるよ
Workbooks.Open(path,,true)
多分これで読み取り専用になる(はず)
https://msdn.microsoft.com/ja-jp/library/office/ff194819.aspx
3つめの引数で設定できるよ
Workbooks.Open(path,,true)
多分これで読み取り専用になる(はず)
574デフォルトの名無しさん (ワッチョイ 5b23-cb7n)
2017/06/09(金) 22:30:26.13ID:e02rbmqe0 >>571
Open時に引き数として与えればOK
Open時に引き数として与えればOK
575デフォルトの名無しさん (ワッチョイ e511-qAom)
2017/06/10(土) 09:26:47.69ID:+HgNy1AT0 単独ブックで使うときだってブックは省略しない方がいいに決まってるだろ
ユーザーがどんな使い方するかなんてこっちで管理できないんだから
そもそも大した手間じゃねえし
ユーザーがどんな使い方するかなんてこっちで管理できないんだから
そもそも大した手間じゃねえし
576551 (ブーイモ MMa9-+CHm)
2017/06/10(土) 10:06:36.80ID:0yj13WovM やはり、最後にはちゃんと指定を教えることにはなりますよね。
とりあえず、プログラミングが簡単って感じで入れればいいかなと思って
最初から細かく行くと嫌になってしまわないか?というところで悩むところ、、、
でも、全部上位から書くって別に複雑では無いんよね、、、
とりあえず、プログラミングが簡単って感じで入れればいいかなと思って
最初から細かく行くと嫌になってしまわないか?というところで悩むところ、、、
でも、全部上位から書くって別に複雑では無いんよね、、、
577デフォルトの名無しさん (アークセー Sx71-5Ux4)
2017/06/10(土) 10:17:23.18ID:WC+0mLwsx RangeとかCellsとか使うコードを書かせることは、コード量が少なくなるから一見エクセルマクロやプログラミングの初学者向きに見えるが、後々オブジェクトモデル理解の妨げになる
578デフォルトの名無しさん (ワッチョイ 1523-2i+1)
2017/06/10(土) 10:53:33.63ID:fc8/KSyR0579551 (ブーイモ MMa9-+CHm)
2017/06/10(土) 10:55:41.58ID:0yj13WovM コード量のために
withやsetを教えるとまた最初に覚えないといけないことが増えるし。
インデントも教えないといけなくて、、、
悩む、、
withやsetを教えるとまた最初に覚えないといけないことが増えるし。
インデントも教えないといけなくて、、、
悩む、、
580デフォルトの名無しさん (ワッチョイ 2311-W6lL)
2017/06/10(土) 11:32:19.99ID:1OFjIP+40 >>579
With はともかく Set はおまじないレベルでもいいので教えておくべきだ思う
With はともかく Set はおまじないレベルでもいいので教えておくべきだ思う
581デフォルトの名無しさん (アークセー Sx71-5Ux4)
2017/06/10(土) 11:34:39.43ID:WC+0mLwsx582デフォルトの名無しさん (ワッチョイ 5b23-cb7n)
2017/06/10(土) 11:59:16.65ID:7onqK0zV0 住所と一緒。
いきなり中央区と言われても「どこの?」となる。
ブックから指定した方が曖昧さが無くなる。
いきなり中央区と言われても「どこの?」となる。
ブックから指定した方が曖昧さが無くなる。
583デフォルトの名無しさん (ワッチョイ 2311-W6lL)
2017/06/10(土) 12:02:23.03ID:1OFjIP+40584デフォルトの名無しさん (ワッチョイ 2391-mrwT)
2017/06/10(土) 12:18:14.91ID:FN/PeeFU0 既定クラスの間違いかも
585デフォルトの名無しさん (ワッチョイ bd54-kblr)
2017/06/10(土) 12:21:14.78ID:33ScHThx0 ちゃんとLetを書こう
586デフォルトの名無しさん (オッペケ Sr71-Kuea)
2017/06/10(土) 12:22:40.92ID:7x8i6naHr でもなあ…このスレで上から目線で偉そうに語ってるやつは例外なく>>581レベルなんやで…かなりマジに…
587デフォルトの名無しさん (ドコグロ MM13-W6lL)
2017/06/10(土) 12:38:07.24ID:6tSezeKAM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★3 [BFU★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★5 [Hitzeschleier★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- 【サッカー】日本代表、FIFAランキング“4位”の強豪イングランドとの対戦が正式決定! 来年3月に聖地ウェンブリーで激突へ [久太郎★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 政府債務(対GDP比)2025年版発表 ついにあの国がワースト1位になってしまう [884040186]
- 千晴のおちんちん舐めたらめかぶの味がした🤮
- 近所にびっくりドンキーがないんだけど!!!
- 【朗報】高市首相に文春砲を放った文春&新潮、無事に叩かれる
- 高市早苗「長期金利なんかよりも日本が成長することのほうが大事」 [834922174]
- 【悲報】高市「マクロンさあ!近平G7に呼ばずハミゴにしちゃってよ!😡」【小学生内閣】 [359965264]
