Excel VBA 質問スレ Part65

レス数が950を超えています。1000を超えると書き込みができなくなります。
2020/03/17(火) 16:27:20.88ID:hh8LiIgR0

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part64
https://mevius.5ch.net/test/read.cgi/tech/1575297834/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/05/04(月) 23:58:21.23ID:m3H0OQVZ0
>>867
オプションが開かれてるという意味でしたか。
なるほどですね。
呼吸レベルでキーコンビネーションで通り過ぎちゃうので、、しっかり見るべきだと。

>VBAもGUIで行った設定の影響を受けないような
ごもっともです。

普段は .Find系は滅多に使わないのですが、あるとき大被害にあって、、、
どちらかというとGUI操作のほうが悩ましかったので、、、

API制御の方法にも辿り着けて、各Controlの制御もわかりました。
一瞬表示されてしまうのが難点ですが。良い情報をいただきました。

ご助言感謝します。
2020/05/05(火) 01:19:15.50ID:nv2gdYIy0
>>868
とりあえず戻り値があるかないかの違いとでも思っとけばよい
2020/05/05(火) 03:17:48.98ID:SDhPW+o/0
12121212111211121112みたいな数列で、
1212..と続くものにはA、
11121112..と続くものにはBと置き換え、
AABBBのような文字列を作成することはできますか?
2020/05/05(火) 04:45:25.58ID:a+XprBAt0
その数列を文字列に直しておく

これをReplace関数で
1212 → AA
A12 → AA
に置換する

同様に 1112 についても行う
2020/05/05(火) 12:25:05.11ID:hJBFA35lM
>>870
868です。ありがとうございました。
2020/05/05(火) 21:19:05.44ID:lsW1yIjx0
vbaのエディタの話なのですが、皆様はコードの複数行を選択したいとき
ショートカットかなにか使っているのでしょうか?
たとえば、一部のコードが不要になって削除や切り取りしたいときに、
ちゃんと行頭から行末までしっかり選択しないとtabやスペースが残ってしまい、
その後コードがズレたり色々と不都合が生じています。
現在は、Homeで行頭、Shift+下矢印で選択しています。
マウスで左端をドラッグすれば選択できるのは知っていますが、これの
キーボードショートカットとかないんですかね・・・
2020/05/05(火) 21:34:38.69ID:wmeBDlBR0
行選択は知らんが、行削除ならCTRL-Yでよくね
2020/05/05(火) 21:52:41.57ID:PgjsbAaO0
検索すれば出てくるよな、俺は shift+上/下 をよく使うけど
https://excel-ubara.com/excelvba1/EXCELVBA485.html
2020/05/05(火) 22:03:15.71ID:lsW1yIjx0
>>876
web拝見しましたが、「複数選択→tabで行範囲が作成される」という部分
でしょうか?確かに、削除ならこれでいけそうです。
(コピーや切り取りのときにはtab→shift+tabで元通りにしなきゃならないかもですが)
私はずっとvbaを使わずエクセル本体の操作に慣れていたのですが、よく使っているのが
適当な複数のセル範囲を作成⇒それらをshift+spaceで行範囲化
という動作だったので、ここにいる方たちはvbaではどんな操作を
しているのか気になって質問いたしました。ありがとうございました。
2020/05/05(火) 22:06:50.95ID:PgjsbAaO0
ちがうだろ
879デフォルトの名無しさん (ブーイモ MM2b-trzR)
垢版 |
2020/05/05(火) 22:11:42.93ID:NpEa/agLM
このハゲー
2020/05/05(火) 22:30:50.81ID:lsW1yIjx0
>>878
すみません、何回webを読み返しても分かりません…
自分でショートカットを作れる(ユーザ設定のコマンド)という部分
かなとも思ったのですが…
881デフォルトの名無しさん (ワッチョイ 738e-jYUs)
垢版 |
2020/05/06(水) 00:51:48.50ID:Kd1uYxyM0
>>880
馬鹿は死ね
2020/05/06(水) 00:55:04.24ID:zRh9yAG10
>>881
酷いこと言うね
2020/05/06(水) 01:03:21.11ID:6rAOvRF50
コメントアウトだけはctrl+/でデフォルトでできるようにアプデして欲しいわ。。
設定もボタンクリックもめんどい
2020/05/06(水) 08:05:52.83ID:p05hHIhJ0
うーむ…どういじっても分からない…
Ctrl+Yは現在の行だけしか削除されないし、そもそも選択範囲は
作成されないし…
おっさんになった私の限界ですかね汗
2020/05/06(水) 09:03:13.32ID:1Pr5leMy0
>>884
やろうとしていることに何の意味がある?
2020/05/06(水) 09:22:21.96ID:iCjbaALk0
意味のある事しかしなかったら進化しない
2020/05/06(水) 10:57:23.06ID:6rAOvRF50
くっそどうでもいいことに時間かけてるな
2020/05/06(水) 12:16:06.30ID:j2svN8neM
クラスに対してモジュールという概念がよくわかりません。Cで言うところ外部ヘッダファイルとソースみたいなものでしょうか。クラスを使ってたら基本的に出番がない?
2020/05/06(水) 12:56:23.88ID:Z893TlLs0
クラスはOOPに出てくるクラス
newする必要がないならモジュール
2020/05/06(水) 13:46:31.67ID:gPSsYrwFa
馬鹿が進化してどうにかなるのか
2020/05/06(水) 14:02:43.27ID:OIN1lY2H0
モジュールはVBがオブジェクト指向になるまえからの互換のためだから
クラスを使うなら忘れてもいいよ

広域で静的なクラスだと思えばいい
2020/05/06(水) 15:26:50.64ID:G9W2eJpB0
>>865
そのファイル名を使っても値が変数なしになってしまいます…
2020/05/06(水) 16:43:25.70ID:OIN1lY2H0
>>863
それウォッチがちゃんと出ないだけで、ブックそのものはとれてるだろ
試しにやってみたが、myBookのウォッチで展開すると変数なしだが
myBook.Sheets(1).Range("A1").Activate でちゃんと動作するぞ
2020/05/06(水) 18:09:01.45ID:iCjbaALk0
どうにかなるのかと思考停止するバカが炙り出される
2020/05/06(水) 18:27:07.81ID:1Pr5leMy0
目的と手段が逆になる人たまにいる
2020/05/06(水) 18:39:41.01ID:6rAOvRF50
基本的にプログラミングがうまくなる人って、
早い段階で、特定のやり方にこだわらず最終的に要件を満たせればいいってことに気付けるんだよな
2020/05/06(水) 19:32:27.36ID:1Pr5leMy0
本末転倒か、言葉が出てこなかった
2020/05/06(水) 19:37:46.56ID:aLD+Grz6a
それはプログラミングをするという前提を置いている時点で矛盾している
手段はなんでもいいから目的達成できりゃいい、だと、だいたいのことは出来合いのSaaSを契約して使うのが最良
2020/05/06(水) 20:34:47.68ID:6rAOvRF50
仕事ならそうだよね
代わりにSaasでってのは範囲が違うので当てはまらないけど
2020/05/06(水) 20:38:43.01ID:prm5gj7H0
普段の自分のやり方じゃ対応できない場面が出た時は、
変に拘らずに完成優先でやるべきって意味でしょ
2020/05/06(水) 20:48:48.08ID:p05hHIhJ0
>>885
余計な操作が無くなることでかかる時間とストレスが減って、その分
新しい知識や技術を取り入れることに割ける、という意味があると思って
質問してみました。
>>878のちがうだろの結局何が違うのかは分かりませんでしたが…
まあ、ググレカスは昔からある2chの風習だと思いますが。
902デフォルトの名無しさん (ワッチョイ 8f63-07dd)
垢版 |
2020/05/06(水) 22:29:01.29ID:k50qIlTz0
>>901
残念ながら設定でこれだけ躓いて立ち止まるような人は言ってるような時間の有効活用できるとは思えんな
ツールはツールと割り切ったり慣れたりする事ができないなら、今後時間の有効活用できるようにもなれないよ
903デフォルトの名無しさん (ワッチョイ 738e-jYUs)
垢版 |
2020/05/06(水) 22:34:53.59ID:Kd1uYxyM0
>>901
馬鹿は死ね
2020/05/06(水) 23:47:22.90ID:G9W2eJpB0
>>893
できました
ありがとう
2020/05/07(木) 10:28:01.40ID:nnhcaKI70
頭のおかしい人の書き込みを読むのが無駄なので無視しますね
2020/05/07(木) 12:26:16.72ID:D07kRcpQr
はいつぎのひと
2020/05/07(木) 13:12:49.35ID:MibsCGor0
>>896
そいつは違うな。
拘るのは必要だ。

最適なのに拘るの。
だから動いたで終わりにしないで他にもっと良い方法はないかを常に考える。

自分が知らなかった技術を手に入れた時に、これを使えば5年前のあの件はもっと上手く出来たかもと考える。
2020/05/07(木) 14:10:36.95ID:2qiR+IIc0
>>907
ヒマなんだな
2020/05/07(木) 14:23:33.98ID:cpirF9cIa
本気でやり方に拘ったらExcelなんて大半が無駄なわけで
自分達の仕事を守るためにも割り切りは必要
2020/05/07(木) 14:42:35.85ID:O8jL8wQb0
>>896
>>907
短期では手段にこだわらない方が早いが
長期では技術向上になるから両方必要だ
2020/05/07(木) 14:50:52.35ID:2qiR+IIc0
そんな1つのVBAに何日もかけれんわ

時間かけれるならWebサービスとかAPIとかもっと皆が幸せな解決方法が大体あるわ
2020/05/07(木) 17:22:17.83ID:IeUYmiVSd
VBAとか関係無く、プログラミング全般の話なんだけどね。
動きゃ良いとかいう奴はいつまで経っても出来るようにゃならんよ。
2020/05/07(木) 17:23:34.85ID:IeUYmiVSd
>>911
無い。
VBAが使われる所は殆どVBAじゃないとどうにもならんから使われてる。
2020/05/07(木) 17:24:33.58ID:IeUYmiVSd
>>908
出来る奴は瞬時に何通りかは思いつく。
915デフォルトの名無しさん (ラクッペペ MMe6-r6hg)
垢版 |
2020/05/07(木) 17:29:14.38ID:OBEeDnS1M
無知の知
2020/05/07(木) 17:50:13.55ID:oG7+JCgx0
Application.CentimetersToPoints(1)
で列幅1cmにしたいんですが、
何度やっても5.64cmになります。

Rows(n).RowHeight = Application.CentimetersToPoints(1)
はちゃんと行幅1cmになりました。
Columns(n).ColumnWidth = Application.CentimetersToPoints(1)
だと何故か列幅5.64cmになります。
この事についてどう検索しても誰も言及してないことも含めて謎が尽きません。
煮詰まり過ぎて焦げ付いてきたのでどなたかアドバイスお願いします。
2020/05/07(木) 17:58:41.98ID:oG7+JCgx0
あっまさか列と幅のポイントは同じポイントでも数値としては別物って聞いた気もする
そして行幅のポイントの方がVBAのポイントと合致しているという訳か
だとすると列幅のポイントに変換するのはどうしたらいいのか…
2020/05/07(木) 18:13:16.48ID:k5uIH00p0
>>913
列幅の単位は違う

列幅の設定の仕方も
「application.centi〜 列幅」
で検索すればサンプルがいくつか出てくるけどね
2020/05/07(木) 18:13:25.52ID:z+lCu/T70
>>917
ページレイアウトにして、列幅1cmをマクロ記録
2020/05/07(木) 18:13:45.51ID:k5uIH00p0
あ、間違えた
アンカ>>916
2020/05/07(木) 18:17:19.51ID:k5uIH00p0
>>914
瞬時に思い付くのに5年前のコードのこと修正するのかよw
5年間もずっとVBAばっかやって、しかもそんな昔のコード引きずってるのw
2020/05/07(木) 19:06:33.04ID:IeUYmiVSd
>>921
あれ、分からんかった?
瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。
あるいは昔、どうしても解決出来なかった問題が解決出来たとか。

俺の場合はデフォルトのプリンター設定のポートを変更するプログラムが出来なくてね。
PRINTER_INFO_5構造体を使ってプリンターのプロパティ設定変更するのは出来てたけどポートはさらに先のポインタでその時は出来なかった。

もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。
2020/05/07(木) 19:59:41.10ID:k5uIH00p0
>>922
効いてて草、必死すぎw
2020/05/07(木) 20:18:07.38ID:IeUYmiVSd
>>923
理解出来なくて悔しいからって、そうまでして絡みたいの?
2020/05/07(木) 20:58:22.79ID:SRAFxxem0
効いてる事にして勝ったつもりになってるけど実は・・・
2020/05/07(木) 21:20:02.04ID:k5uIH00p0
>>924
別に古臭いVBAおじさんに絡みたいとかないけどなw
その程度でどや顔して、こんなところで長文まで書いて哀れだなあってねw

・瞬時に5個思い付く(ドヤア)
・10年以上前の話(ドヤア)
・どうしても解決出来ない問題が解決できた(ドヤア)

いい年して恥ずかしいww
2020/05/07(木) 21:20:55.13ID:XMGIuLDd0
>>916
煮詰まったなら完成じゃん。
2020/05/07(木) 21:29:03.52ID:vCXp7vkf0
4月、5月、6月というシートを請求書という新しいブック名のシートに追加していきたい場合

請求書というブックがなかったら
請求書というブックを作成して○月のシートをコピー
既に請求書というブックがあったら
そのブック内に○月のシートをコピー

という考え方でいいですか?
というか可能ですか?
2020/05/07(木) 21:34:48.09ID:wHiSIw2F0
既にあるブックを変えて問題ないんならいいんじゃないの
2020/05/07(木) 21:46:21.07ID:IeUYmiVSd
>>926
悔しいと素直に言えば良いのにw
2020/05/07(木) 21:58:23.82ID:k5uIH00p0
>>930
あ、恥ずかしくなってるwかわいーねーw
2020/05/07(木) 22:16:17.23ID:oG7+JCgx0
色々調べ直して列幅1cmできた! ありがとうございます。
それにしたって、なんと解りにくい…
CentimetersToColumnPointsみたいにしてくれればいいのに…
2020/05/07(木) 22:22:20.56ID:IeUYmiVSd
>>931
自分の技術が足りないのがそんなに悔しいのかねw
2020/05/07(木) 22:33:54.55ID:k5uIH00p0
>>933
恥ずかしくて言えることないの草
黒歴史だねーww
2020/05/07(木) 22:35:53.74ID:k5uIH00p0
>>933
あ、>>928とか5通り早くコード付で答えてあげなよww
あと5年後まで改善策見つけたら書き込んでねw
2020/05/07(木) 22:48:13.57ID:IeUYmiVSd
>>934
君が初心者に毛が生えたレベルなのは俺の責任じゃ無いんだ。
悔しいからって絡むのは辞めてくれw
2020/05/07(木) 22:50:20.24ID:IeUYmiVSd
だいたい、バカにしようととしたら自分より上のレベルで悔しくても、それは自分が悪いんだろw
2020/05/07(木) 23:08:01.99ID:ATN3rOjQ0
array関数で要素を代入する際に、プロシージャ引数のヒントの様にカンマで区切ると何を入力すべきか表示させることは出来ないでしょうか。要素が多いので解りづらくて
戻り値ありの関数作るべきなのでしょうか
2020/05/08(金) 00:15:43.02ID:7LgH0Xf00
>>938
入力に困るほど大量のデータをプログラム中に直接書くのは設計が悪いと思う
せめてワークシートに見出しを付けて並べたら?
2020/05/08(金) 00:44:49.38ID:NrG+fdAu0
>>936
恥ずかしい書き込みするやつの言うことは違うなあw
10年以上前の話とか言っちゃうんだもんなあww
で、5年がなんだって?w
2020/05/08(金) 02:37:36.79ID:LrYvIqoM0
>>940
だから絡むの辞めてくれ。
初心者のプライドが傷ついたのかよw
2020/05/08(金) 09:10:24.43ID:gaKPf4O20
1000とった方が勝ち
2020/05/08(金) 09:39:57.65ID:NrG+fdAu0
>>941

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

ん?早く質問者に5通りコードで回答してあげなよ、プロVBAおじさんww
2020/05/08(金) 10:17:39.27ID:SGzHt0H00
このスレにコロナでも混ざってんの?
2020/05/08(金) 12:21:01.99ID:KpBIrL5Ad
>>943
その返しもバカっぽくね?
質問の内容とか考えた?
2020/05/08(金) 12:25:59.54ID:KpBIrL5Ad
>>943

>早く質問者に5通りコードで回答してあげなよ

日本語をちゃんと理解することができる?
2020/05/08(金) 12:27:38.79ID:EoiUnzGX0
static変数の宣言と同時に初期値入れても、Cと違って毎回初期値が入るようなんですけが回避方法ってありますか
2020/05/08(金) 12:37:08.32ID:NrG+fdAu0
>>945
ほらほらー、10年以上やってこの程度も5通り分からないの?ww

「出来る奴は瞬時に何通りかは思いつく。」
んだろwwほらほらww
2020/05/08(金) 18:51:21.09ID:F9AE4+4ta
バッチを非同期で実行したいんだけどShellでやってもWSHShellでやっても
バッチの終了まで待たされるんだけど何故?

やってることはIEを操作してファイルをDLするところまでVBAでやって
それ以降の処理をバッチでやりたいんだけど…
950デフォルトの名無しさん (ワッチョイ cfe6-r6hg)
垢版 |
2020/05/08(金) 19:02:53.06ID:XNwDJZFz0
非同期オプション付けても出来ないのですか?
不思議ですね
2020/05/08(金) 19:59:31.15ID:swHMPSPD0
最大で何行くらい組んだことある?
2020/05/08(金) 20:43:59.77ID:1Hremoh70
2000
953デフォルトの名無しさん (アウアウウー Sa1f-2+Ho)
垢版 |
2020/05/08(金) 21:13:02.00ID:oLBub1X/a
vbaでハイパーリンク設定済み場所から
フルパスを取得したいです。

https://www.google.co.jp/amp/s/gamp.ameblo.jp/ksej/entry-11288945247.html

このサイトの方法でネットワーク上のアドレス取得して
あるセルにフルパスを貼りたいんだけど
カレントディレクトリが¥¥A¥B¥C
とあったら、¥¥A¥Bまでしか貼り付けに反映されないのってなぜかわかりますか?

msgboxでカレントディレクトリだけ表示させたら
Cまで表示されますが貼り付けたらBまでしか表示されない感じです。

あとカレントフォルダの設定はこのサイトの方法です。
https://vbabeginner.net/vbaでネットワークドライブにカレントを変更する/
2020/05/08(金) 21:31:38.77ID:KpBIrL5Ad
>>948
くだらねえ煽りの前にお前が日本語を理解出来て無かったのが分かったのか?
そして今は理解出来てるんだろうな?
2020/05/08(金) 21:32:10.12ID:KpBIrL5Ad
>>948
そしてもう1つ。
質問の内容とか考えた?
2020/05/08(金) 21:43:28.38ID:KpBIrL5Ad
>>949
Shellは待たされないと思うぞ。
待つにはタスクからプロセスハンドルを得て、WaitForSingleObjectとかを使う筈。
←たしかこいつは古いんで今は似た名前の奴を使う。
957デフォルトの名無しさん (ワッチョイ 738e-jYUs)
垢版 |
2020/05/08(金) 22:58:17.96ID:AMoglHga0
>>953
ただのコピペしかできない馬鹿だからだろ
958デフォルトの名無しさん (アウアウウー Sa1f-2+Ho)
垢版 |
2020/05/08(金) 23:39:12.99ID:oLBub1X/a
>>957
他のサイトも色々見て調べたり試行錯誤したのですが
Cが表示されなくて。

何か縛り的なのがあるかわかりますか。
貼り付け時の表示文字数に制限があるとか。

最悪わからなければ、
¥¥からCまでを取得したものをセルに貼り付けて
C以降を貼り付けたものを&で繋げて使おうか迷ってます。
2020/05/08(金) 23:49:29.90ID:7LgH0Xf00
>>953
最小限のコードで実験してみ?
(1)ワークシートにハイパーリンク設定
(2)FSOでフルパス取得
(3)MsgBoxで確認
(4)セルにフルパスの文字列を入れる
960デフォルトの名無しさん (アウアウウー Sa1f-2+Ho)
垢版 |
2020/05/08(金) 23:56:44.70ID:oLBub1X/a
1)と2)と4)についてはBまでの表示

3)についてはフルパスでは試してないので、試して見ます。

ちなみに3)はカレントディレクトリのみで行うと、Cまで表示されて、次の行に2)を試すとBまでになってしまいます。
2020/05/09(土) 00:37:26.19ID:SO2yq4ky0
>>954
質問どんどん来てるよww
10年やってきたんだから早く5通り以上答えてあげなよww
そしてリファクタリング出来たらその都度書き込んでなw

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。
2020/05/09(土) 09:12:02.43ID:jb1+fPLha
>>956
思うぞと言われても実際待たされてるから困ってるんだが。

検索しても待つ方法しか引っかからんし…
CPU使用率が上がるとVBAスクリプトが止まるとかそういうわけじゃないよね
2020/05/09(土) 09:12:34.65ID:5lxB5cuMr
パスとドライブの違いわかってる?
uncパスの形式わかってる?
そのaもbもフォルダじゃないけど、なにをどうやって表示させた?
2020/05/09(土) 10:41:18.50ID:OK904gHA0
最小限のコードでテストしてみた
Excel2019のshell関数でバッチの同時起動できてるから原因は別の所にある
https://i.imgur.com/bqqc2uc.png
2020/05/09(土) 11:14:42.24ID:m7V0shMq0
>>953
ハイパーリンク扱う時って表示文字列とアドレスの2つがあった気がするが関係ないか?
966デフォルトの名無しさん (ワッチョイ 8f59-2+Ho)
垢版 |
2020/05/09(土) 12:02:06.49ID:zV8Vx2bY0
>>963
わかりにくくてすいません。

abcは仮に書いた感じで、実際はネットワーク上のフォルダ名になります。
2020/05/09(土) 12:06:22.54ID:OK904gHA0
>>966
何をやろうとしてるのかイマイチよくわからん
試したコードとワークシートのスクショをここに書いて
2020/05/09(土) 12:11:35.33ID:74X5YOol0
>>961
日本語が理解出来てたのか出来て無かったのかどっちだい?
話はそれからだ。
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。