Excel VBA 質問スレ Part60

■ このスレッドは過去ログ倉庫に格納されています
2019/03/16(土) 20:39:09.64ID:6HWXzj9o
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part59
https://mevius.5ch.net/test/read.cgi/tech/1549692750/
2019/03/17(日) 21:43:54.03ID:aVImaY3T
>>16
実際書いちゃう人大好き
2019/03/17(日) 23:17:32.63ID:5mJrF7aW
別に1行にすべきというわけじゃ無い。
.SelectとActiveCellが良くないということ。
あと、元の情報が無いのとスマホで書いたからブックは省略したけど、自分が組んでたら省略はしない。
2019/03/19(火) 02:31:46.42ID:vV4Rcm78
入力のあったセルの場所が分かったとしても、また同じ事が起きそう
入力させるセルと出力するセルはハッキリ分けた方がいいと思うよ
2019/03/19(火) 06:29:25.90ID:4N2t7FIS
みんなこっちにいるよ
https://mevius.5ch.net/test/read.cgi/tech/1432173164/
21675
垢版 |
2019/03/19(火) 12:34:39.62ID:ipysPyU9
確実に全セル入力されてる列があるならそれを基準に使う手もアリ(例えば項番の列とか)
2019/03/19(火) 12:37:36.01ID:cTNTzw16
新しくシートを作成するコードで、
シート名をInputboxで入力させるんだけど、
もし名前が被ったときに、エラーを回避して
Subを終わらせることってできる?

シートも結構いっぱいあるから
「名前が一致したとき」にExit Sub
ってのはやりたくないんだけど…
2019/03/19(火) 13:02:44.27ID:ajcvehyS
>>22
For Eachで全シートの名前と比較して、同じのがあったら作らない
2019/03/19(火) 13:09:43.79ID:B40U/hNg
>>23
最後の3行が無ければ俺も同じ事をレスしてた
2019/03/19(火) 13:19:11.43ID:SqXQzXb0
>>22
最初に名前があるかどうかの処理をかませばいいだけ
シート作ってから一緒に何かしようとするとややこしいしミスするからオススメできない

Sub foo()
希望シート名 = InputBox("シート名を入力")
For Each 既存シート In ThisWorkbook.Worksheets
'小文字半角に変換、統一して比較
If StrConv(希望シート名, 6) = StrConv(既存シート.Name, 6) Then
MsgBox ("既にあるシート名でした。終了します")
Exit Sub
End If
Next

Set 新シート = Worksheets.Add
新シート.Name = 希望シート名
'新シートで処理

End Sub
2019/03/19(火) 15:13:53.64ID:rooN1XdM
>>23
>>24
>>25

ありがとう!
試してみますわ
2019/03/19(火) 15:26:37.07ID:rooN1XdM
できたー!ありがとうございました!
まさにこれっすー!
2019/03/19(火) 19:23:19.44ID:kI5HhWJr
オレはループ回すの面倒(遅い?)から on errorでやるわ
2019/03/19(火) 19:31:40.14ID:gEDMHfls
on errorってエラーの決め打ちじゃなくて「このエラーが出るはず」という使い方だから、他の手段があるならあまり積極的には使わない方がいいと思う
2019/03/19(火) 19:59:00.27ID:G9/JqRut
tryか
2019/03/19(火) 22:17:46.56ID:fSzJr70Z
on errorの場合はworksheets.add.nameで作ってエラー時はActiveSheet.Deleteみたいな処理にすんのかな
不測の事態が起きそうで怖いけど
2019/03/19(火) 22:26:38.38ID:4+n02oxf
シートに配置したフォームコントロールのボタンのクリックとマクロを関連付けています
この時、ボタンのテキストを取得する方法はありますか?
Application.Caller
だと名前は取得できるのですが
ボタンの名前をテキストと同じものに変更する、でも良いです
33デフォルトの名無しさん
垢版 |
2019/03/19(火) 22:31:52.70ID:aHt3ijA4
>>16
ブック.シートをwithでくくりたい(´・ω・`)
2019/03/19(火) 22:49:35.77ID:gEDMHfls
>>32
ボタンのテキストはどうやって設定した?captionプロパティじゃないのか?
2019/03/19(火) 23:00:11.13ID:4+n02oxf
>>34
手作業です
2019/03/19(火) 23:02:44.80ID:gEDMHfls
>>35
ボタンに表示している文字の事を言ってるなら、手作業でもなんでもcaptionプロパティに入れてるはずだが
2019/03/19(火) 23:07:48.99ID:8F1IYR8J
リストボックスのリストを更新した時クリックイベントが発生するのは何故?
2019/03/19(火) 23:14:34.15ID:4+n02oxf
>>36
そのcaptionプロパティを取る方法が分からないのです
https://i.imgur.com/Z5g9J0j.png

引数としてオブジェクトが渡されるわけでもないし、何か方法はあるのでしょうか
2019/03/19(火) 23:21:08.44ID:gEDMHfls
>>38
ボタンのオブジェクト名.caption
2019/03/19(火) 23:22:51.25ID:gEDMHfls
ボタンに限らずプロパティの指定の仕方はみんな同じ
2019/03/19(火) 23:22:59.66ID:Ocf5WOX6
いろんなボタンにおんなじハンドラ割り当ててるんでしょ?
2019/03/19(火) 23:29:58.14ID:4+n02oxf
>>39
えぇ、それは分かるんですが

>>41
そうです
複数のボタンのclickイベントに同じマクロを登録し、
clickしたボタンのcaptionを取りたい
https://i.imgur.com/IWsgjEQ.png
2019/03/19(火) 23:33:09.14ID:n4w5LXnr
>>42
マクロと言ってる時点で死ねよ
2019/03/19(火) 23:34:33.07ID:vV4Rcm78
>>38
OLEオブジェクトのコレクションからnameプロパティの一致する物を探すとか
2019/03/19(火) 23:34:51.64ID:gEDMHfls
じゃあSheet1.buttons(application.caler).captionは?
2019/03/19(火) 23:38:15.01ID:vV4Rcm78
少々強引だが、apiのGetCursorPos関数でマウスポインタの場所のコントロールを取得って方法もある
2019/03/19(火) 23:52:25.41ID:oXoLOC/c
随分むごまっこっるた方法だな。
2019/03/20(水) 00:28:31.79ID:6ln9W50J
>>43
一見イベントハンドラですが、thisが使えない、オブジェクト渡さないイベントハンドラはハンドラと言えるのでしょうか
個人的には、ハンドラという方が逆に混乱すると思いますのであえて言っていません

>>45
うおおおおおおできましたああああああああすごい!!!!!
https://i.imgur.com/8q0Z3yb.png

>>44>>46
ありがとうございます!
2019/03/20(水) 00:31:55.82ID:6ln9W50J
あと、>>45さんの
Sheet1
というオブジェクトも気になります
sheet(1)
のエイリアスが自動的に生成されてると思いますが、MSDNでどのように調べると良いでしょうか?
2019/03/20(水) 00:32:23.83ID:vmDq6MjZ
ActiveSheet.Buttons(Application.Caller).Characters.Text でいけないかな
試してないから駄目だったらごめん
2019/03/20(水) 00:47:38.18ID:vmDq6MjZ
>>49

インデックス番号は、同じ種類のシート間に付けられる番号で、左からのシート見出しの順に基づきます。

https://docs.microsoft.com/ja-jp/office/vba/excel/concepts/workbooks-and-worksheets/refer-to-sheets-by-index-number


シートオブジェクトの移動や削除を行ったときにダイナミックにインデックスが変更されるのか、ファイル保存等の更新イベントがあるのかという細かい部分は調べてないから分からない
デフォルトのシート名がSheet & シート追加時のインデックス値になるのは経験上知ってる
2019/03/20(水) 00:58:10.12ID:+iQ33M/7
>>49
画像のボタンがSheet1に貼ってあったからそれに合わせて書いただけ
"Sheet1"っていう名前のシートのオブジェクト名がSheet1になってるっしょ
2019/03/20(水) 01:11:06.91ID:+iQ33M/7
>>51
シートのインデックスは常に左からの連番
シートの追加削除等あればもちろん都度変わる
2019/03/20(水) 01:39:18.38ID:6ln9W50J
>>50
行けそうでダメでした
何で〜?
https://i.imgur.com/kZaCjUg.png
https://dotup.org/uploda/dotup.org1801319.zip

>>51
>デフォルトのシート名がSheet & シート追加時のインデックス値
削除すると変わるので、これは違います

>>52
その仕様ってどこかに書いてないのでしょうか
2019/03/20(水) 02:22:30.37ID:+iQ33M/7
>>54
どこに書いてるかは知らないけど、ボタンもシートもブックもオブジェクトの指定の仕方は同じ
 オブジェクト名
 オブジェクトのコレクション(インデックス)
 オブジェクトのコレクション("名前")
好きなのを使うがよい
2019/03/20(水) 02:25:30.67ID:+iQ33M/7
MS公式でWorksheetオブジェクトに関する説明調べればどっかにあるかもねえ、知らんけど
57デフォルトの名無しさん
垢版 |
2019/03/20(水) 11:46:18.93ID:KyvcPrHu
マクロを10時間ぶっ通しで走らせるのはよくないですか?途中で再起したほうがいいですか?
2019/03/20(水) 11:59:24.66ID:xEZ65DiY
>>57
また馬鹿が来た
死ねよ
2019/03/20(水) 12:06:20.76ID:6ln9W50J
>>55>>56
ありがとうございました
もう少し調べたかったけど、疲れたので断念します

>>57
とりあえず動かして、エラーが起きなければ何も問題はない
ただ、セルを触る物を10時間も動かすとメモリエラーが起こるかも知れない

>>58
笑った
60デフォルトの名無しさん
垢版 |
2019/03/20(水) 12:33:29.40ID:KyvcPrHu
>>59
ありがとうございます。
メモリの心配はありますが、ぶっ通しでやってみます。
2019/03/20(水) 13:54:52.74ID:2xsXzlGP
>>57
応答なしにならないか?
2019/03/20(水) 15:56:43.40ID:1jasQYq3
だから、どういう状況で10時間ぶっとおしが必要なんだよwwwwww
マジでExcelを何に使ってるのか気になるわ。
2019/03/20(水) 16:27:03.42ID:xEZ65DiY
馬鹿の考えることをまともに相手をしてはいけない
2019/03/20(水) 20:36:03.66ID:nDF65YVh
結果セットは小さいけど重いDBクエリを繰り返すとかだったらわかる
2019/03/20(水) 20:53:54.94ID:EpI850Tv
10時間動かし続けるとなると思いつくのは
出勤時間中にwebサイトやフォルダ監視し続けて何かをキッカケに何かするみたいなのかな
2019/03/20(水) 22:28:30.85ID:ad3N4bFR
エクセルでやることなんですかねそれ...
2019/03/20(水) 22:53:02.96ID:1jasQYq3
ExcelVBAでパワーポイント動かしたいんですけど、
とか言われても、もう驚かんわ。
2019/03/20(水) 23:11:09.25ID:7O8FfDv3
馬鹿はそこでマクロと言い出す
更には、「教えて」「助けて」で始まり
「急いでます」「作って」と要求する
2019/03/20(水) 23:20:32.29ID:dyVQ1wUM
>>67
やろうと思えば出来んでもないのか
2019/03/20(水) 23:21:49.19ID:dyVQ1wUM
なんだお前ら、勿体無いな
10時間動かすなんて奇抜な事をしてくれるんだから、全力で応援するべきだろう
かなり貴重なサンプルが手に入る可能性があるのに、バカだの言って切り捨てるのはあまりに勿体無い
2019/03/20(水) 23:38:22.03ID:9h7AJaIR
>>70
まともな報告がある可能性は殆どない。
報告が役に立つ可能性はもっとない
2019/03/20(水) 23:45:57.48ID:dyVQ1wUM
>>71
この辺は感性の違いかな
面白い物が見れそうな時はどんどん投資してしまう
73デフォルトの名無しさん
垢版 |
2019/03/21(木) 02:02:16.06ID:+l8n8fiW
肛門に穴があいたんですけど、
とか言われても、もう驚かんわ。
2019/03/21(木) 06:33:27.17ID:LeqqYBVH
>>73
痔瘻でつか?
2019/03/21(木) 07:23:06.55ID:u3u8nbsq
>>69
むしろ楽勝の方だろ
ちょっと前にシートの内容をスライドに埋め込むとかはやったことがある
やったのはPowerShellだったけどCOM経由なら似たようなもんだし
2019/03/21(木) 10:02:44.62ID:TiVPJMex
パワーポイントでVBAって何すんの?
パワーポイントって発表用のアプリだろ。 それでVBAって需要なんてあまりあるとは思えんが
2019/03/21(木) 10:04:16.17ID:XMapNPTs
シートの内容をスライドに埋め込むとか
2019/03/21(木) 10:26:55.37ID:VaVZDR1N
プレゼンが定例業務としてある会社もあるんじゃね
2019/03/21(木) 10:29:58.00ID:epreAi+X
例えば、気象庁のホームページからクエーリーでデータを取得し
パワポにデーター貼り付けながら、加工してそれをアニメーションで
かっこよく表示していくとか、考えれば応用はいくらでもあるだろう
2019/03/21(木) 10:37:01.43ID:epreAi+X
言葉が足りなかった、プレゼン用ではなく、情報表示モニター用にな
いくらでも機能はつけられる
2019/03/21(木) 11:18:23.86ID:TiVPJMex
なんかどれも一般個人には無縁のものばかりだな
2019/03/21(木) 11:20:14.60ID:TiVPJMex
まあパワーポイント自身、個人で使うことなんてないのか
でも企業でも極一部の部署しか使わないものばかりじゃん
2019/03/21(木) 11:39:33.97ID:cL16VMj6
パワポVBAで何か作ってみたいという逆需要で、発表後喋ってる間にスターウォーズのエンドロールみたいなのを流すのを昔作ったことあるなw
それ以降、私の開発現場では(個人的にも)パワポVBAは全く需要なし
WordVBAも、補助ツールとして数年に一回作るくらいかな
2019/03/21(木) 11:42:12.40ID:XMapNPTs
スライドシェアとか見てもかったるいだけだからな
大昔の改行しまくりのテキストサイト思い出す
2019/03/21(木) 11:45:36.88ID:epreAi+X
なんか、ExcelのVBAでパワポを操作するのと、パワポのVBAを同一で語ってるやついるか?
ちなみにWordのVBAはいくつか作って今も使ってるけど、まあ対比で言えばExcelの
100分の1程度だな
2019/03/21(木) 12:40:04.02ID:epreAi+X
>>84
>スライドシェア
何だよ、かったるいのしか見たことないんだろ
>テキストサイト
何もわからんバカなのね(笑)
2019/03/21(木) 12:46:45.76ID:epreAi+X
>>84
まあ、言葉もわからんカスが書き込みするスレだよな
2019/03/21(木) 12:51:57.24ID:VaVZDR1N
>>86
カッコイイパワポを見てみたいんだが、どこかにある?
俺は見たことない
2019/03/21(木) 12:55:25.94ID:epreAi+X
>>88
そうか、じゃあそのままでいいよ
検索もできないカスのお前に見せる必要ないからな
2019/03/21(木) 13:01:18.94ID:epreAi+X
自分では何もできないくせに、人の作ったものは全力で否定するカスいるな
生きてる必要あるんか?・・ってかどうなの?(笑)
2019/03/21(木) 16:10:00.98ID:rariafKZ
>>83
単に、バカじゃん(大笑)
2019/03/21(木) 18:21:43.40ID:AEHjc1Fb
>>82
accessよりは使ってる
2019/03/21(木) 18:38:57.53ID:jb0c41ul
>>75
そういう問題か?
PowerPointなのにPowerPointVBAを使わずにExcelVBAという所が驚きの対象なんじゃないの?
2019/03/21(木) 18:40:52.37ID:UMX0gRc1
起点がExcelってのがポイントだよな
2019/03/21(木) 18:59:32.81ID:susRoq6I
>>67の冗談が起点なのになんで真剣に語っているんだ
2019/03/21(木) 19:40:57.90ID:u3u8nbsq
>>93
Excel VBAで扱うのとPowerPoint VBAで扱うのはたいして変わらんよ
どっちから制御するかだけの問題
2019/03/21(木) 21:02:50.21ID:UMX0gRc1
他アプリから制御するのはいちいちアプリケーションインスタンスを起動しなきゃならんのが糞面倒
パワポだけで済むならパワポにする
98デフォルトの名無しさん
垢版 |
2019/03/21(木) 21:15:08.25ID:HmxAO54P
VBAを使ってる人って御老人のイメージだけど合ってる?
2019/03/21(木) 21:48:16.24ID:7ESjhGWi
ナウでヤングな人は何使うん
2019/03/21(木) 22:10:39.42ID:susRoq6I
そろばん
2019/03/22(金) 08:13:43.08ID:s6oj+Xdm
>>96
PowerShellなんて言い出す奴だからわからないんだろうな。
大して変わらんのなんて当たり前だろ。

PowerPointVBAからExcel.Application使って、そのExcelオブジェクトからPowerPoint.Application使ってを10回繰り返した所で変わらんけどアホ丸出しなのが分からんのかね。
2019/03/22(金) 08:17:26.70ID:wT5mo1++
>>101
で?
例がアホすぎて何を主張したいのかさっぱりわからんw
2019/03/22(金) 09:00:55.13ID:7FUJ+LGH
パワーポイントVBAって色々と勝手が違って面倒臭かった記憶があるけどな
そもそもエクセルやワードと違って空のアプリケーションインスタンス作れないんじゃなかったっけか
ファイル実行時に読み取りパスワードを指定するときもファイル名と連結する必要があるし
2019/03/22(金) 09:13:17.49ID:s6oj+Xdm
>>102
バカにはわからない。
というか例がアホ過ぎる所がミソなんだがw

そんなアホなことをするのかというのが驚きの対象であって、大して変わらんかどうかなんて頓珍漢な話はどうでもいい。
2019/03/22(金) 09:35:36.14ID:wT5mo1++
いや、当たり前なんてみんな知ってる(>>93を除くw)のに今更何を言いたいんだってこと
バカの上塗り?
2019/03/22(金) 10:34:34.64ID:1snpMqV+
結局、ワッチョイ抜きにするから荒れるんだろ
誰がどう主張したいのかわからなくなる
ワッチョイが嫌な奴がこのスレ建てたんだろうな、立て直すか?
2019/03/22(金) 10:58:31.28ID:f/f2Qmpp
>>101
それ面白いw
2019/03/22(金) 12:26:36.58ID:s6oj+Xdm
>>105
プッ
当たり前なのは>>93を含めてみんな知っている。

今更何を言いたいのかは>>102を除いてみんな知っているw
2019/03/22(金) 12:41:30.27ID:VWKP5DOZ
で、結局>>101は当たり前の事をほざいてただけ?
やっぱりバカの上塗りじゃねーか w
2019/03/22(金) 13:05:17.10ID:xmRgZnoh
OLEアプリケーション連携の話になると途端に荒れるのやべーな
前も下らんAccessの話でクッソ揉めてたし
他アプリ連携のスキルをプライドの拠り所にしてる人が結構いるのかな
凄いことやってる風に見てもらえるときあるし分からんでもないけどさ
2019/03/22(金) 13:46:53.89ID:CAtaruvO
こっちに移動しる
https://mevius.5ch.net/test/read.cgi/tech/1432173164/
112デフォルトの名無しさん
垢版 |
2019/03/22(金) 14:07:54.62ID:DJ7JSKt5
こっちに移動しろ
https://mevius.5ch.net/test/read.cgi/tech/1432173164/

日本語は正確に
2019/03/22(金) 14:18:45.03ID:CAtaruvO
こいつ、知ってて言ってるのか知らないのか
114デフォルトの名無しさん
垢版 |
2019/03/22(金) 17:56:53.75ID:DJ7JSKt5
会社でブラウザの検索結果のページで
いっぱいURLのリンク先が表示されるのですが
そのたくさんのURLのそれぞれを開いたページ(毎回違うけど50ページくらいある)のデータを取得するVBAのコードを考えています。
IEの定番のCreateObject("InternetExplorer.Application")とDOMツリーの方法で実現できてはいるのですが
1つ1つページを開いて取得して閉じる、という作業がネットワークの遅さで異常に時間がかかります。
この複数のページを同時で取得する方法ってないでしょうか?よく知らないけどJavaでいうスレッドみたいな?
2019/03/22(金) 18:05:28.43ID:wNvbYX88
いまどきマルチポストに眉をしかめるような時代遅れの人間なんていないよ、ね?
2019/03/22(金) 18:13:30.85ID:f/f2Qmpp
>>114
IEオブジェクト作らずに通信すると早くなる気がするけど早くならないかもしれない
試してみて

Sub foo()
Set httpReq = CreateObject("MSXML2.XMLHTTP")
httpReq.Open "GET", "https://www.nicovideo.jp/watch/sm31763534";
httpReq.Send
Do While httpReq.readyState < 4
DoEvents
Loop
str2 = httpReq.responseText
End Sub
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況