Excel VBA 質問スレ Part65

■ このスレッドは過去ログ倉庫に格納されています
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/03/28(土) 20:37:45.18ID:YbqXlWqq0
>>96
>>101
名前を付ける派
可読性が高い方が良い
VBAは見にくいコードが多い
2020/03/28(土) 23:45:34.04ID:m/WQBFmt0
>>101
名前定義が弄られるってことはロックしないで使うんでしょ
猶更、セル挿入なりで意図した場所とズレてても気づかずに成功し続ける方が危険だと思うんだが
で、セルを挿入したい時も一個一個数値をずらしていくの?

ワークシートの見た目が二次元配列である事とコード内容を一致させる必要性も感じないんだが、
もしかしてハードコーディングしてるのか?

イミディエイトウインドウで毎回インデックスを調べろっていうは面白すぎるから止めて欲しい
2020/03/29(日) 00:11:14.41ID:JMfmjWXB0
Shapeの当たり判定の計算方法を教えて下さい。

基準の円のShapeにTextBoxが当ってたらTrue、当たって無ければFalse
円は選択時の□の面積じゃなく実際の円の大きさ。TextBoxは選択時の□の大きさ。
2020/03/29(日) 00:41:59.73ID:Q4J2OaKi0
なぜそんなことを
2020/03/29(日) 01:29:27.30ID:Iv7ta0000
>>105
表示位置とサイズから比較したらいいんじゃね
2020/03/29(日) 01:42:07.54ID:hSuS8nXs0
当たり判定だからゲームじゃないの?
Corei世代でも60fpsでないから使いたくないけど。
2020/03/29(日) 08:29:34.23ID:sBDU9ajX0
>>105
専用の関数などは用意されてないので、TextBoxの頂点と円の座標を比較したり、円の中心からの距離を三角関数で計算して調べるしかない
2020/03/29(日) 09:06:15.85ID:hrvcX8VW0
VBAであえてゲーム作ったりするのは
芸ではあるけど開発効率的に筋は悪いよね
グラフィックにこだわるなら別言語推奨
2020/03/29(日) 19:07:35.84ID:+LkL5rVp0
>>102
普通は定数で行、列を宣言するわな。

>>103
見にくいコードは書いてる奴の力量次第だろ。

>>104
ロックはしない。
そんなもんは解除されるかもしれんし、当てにしない。
というか、作ってるもの次第だね。

ワークシートの見た目と二次元配列を一致させるとか笑わせるなあ。
少し慣れた奴なら列も数値で扱うのがぴったり来るんだよ。
何故なら、最初から二次元配列的に考えるから。

VBE上に自作のメニュ―作って、入力するだけで列名←→列数はわかるげとな。
作る力量無い奴はイミディエイトで調べりゃ良いだろ。
VBEのCommandBerでイベント扱うのはクラスが必要だし、上級者の領分にはなるかもな。
VBE弄るVBAは会社じゃ使わないから通常のCommandBarでメニュー作ってやっても良いんじゃね?
どっちにしても時間は考えることに使ってるんで、毎回イミディエイトで調べても大した話じゃね―んだわ。
2020/03/29(日) 19:28:33.88ID:Gw3heoMsM
>>63
今の若いヤツらはそういう説明じゃ200%挫折する。普段の業務を自動化っていう感覚がわからないそう。やっぱスマホタブレット世代はPC=ワープロにしか思えんのかもな。
2020/03/29(日) 20:04:11.28ID:83saJEjVd
若いほうがわかりそうなイメージあるが
2020/03/29(日) 20:07:10.84ID:83saJEjVd
>>111
ロック外されたくないならパスワード付ければいいじゃん
2020/03/29(日) 20:28:31.63ID:+LkL5rVp0
>>114
パスワードwww
2020/03/29(日) 20:55:58.91ID:wDs4yIM00
>>111
> VBE上に自作のメニュ―作って、入力するだけで列名←→列数はわかるげとな。
まさか自慢じゃないよね?w
傍から見てたら馬鹿なことしてるなとしか思えんし
2020/03/29(日) 22:56:25.49ID:WhhHvRXO0
共有編集可能にしたら更新は5分間隔だけどVBAとかで1分以内にできないかな?複数のパソコンで映してる同じエクセルファイルの内容を別のパソコンから共有編集で編集して保存したら1分以内に複数のパソコンにも表示を反映させたい。
2020/03/30(月) 01:33:21.63ID:hihORIFda
あ、どうせ、コピーしても意味ねぇよ。記憶してるのPCじゃねぇから。
2020/03/30(月) 01:33:39.62ID:hihORIFda
考えまとめるためにPC使ってるだけ、ただそれだけなんだよ。
2020/03/30(月) 09:44:28.26ID:c+7OLkMF0
>>116
君にできないからと言って、そんなもんが自慢になると思うかね?
2020/03/30(月) 10:45:50.00ID:44eTx7Dtr
>>96
それでも同じエラーが出ます…
2020/03/30(月) 10:57:15.53ID:XiEELtFfM
>>120
日本語の理解力がないのかな?
自慢にもならないことをいちいち書くとかバカじゃね?
って言う事な
2020/03/30(月) 12:35:49.56ID:rHF2nN3k0
>>121
wS1.Cells(c.Row, "Z").value < 0
そもそもこれ必要?
2020/03/30(月) 13:30:25.60ID:8cfGBpvw0
いや、いらないのはそっちじゃなくて、ElseIf〜 のIf〜Then

If Not c Is Nothing Then
If wS1.Cells(c.Row,"Z").value<0 Then
.Cells(i, "V") = wS1.Cells(c.Row, "Q")
Else
.Cells(i, "X") = wS1.Cells(c.Row, "Q")
Endif
Endif

でいいはず
エラーが出たのが実は一つ上の行で、i に代入してなかったってオチじゃないよね
2020/03/30(月) 15:51:59.33ID:pRaklD1Wd
>>122
悔しいからって一々反応しなくて良いんだぞwww
2020/03/30(月) 15:58:49.58ID:5QM7gMbqM
>>125
ブーメラン乙w
2020/03/30(月) 16:25:47.15ID:Ds9EzL2Md
反応したら負けだと(みんな)思ってる
2020/03/30(月) 17:08:01.39ID:nRSFIrFT0
どこで受けたストレスをここで発散してるんだろう・・・
2020/03/30(月) 19:49:19.29ID:JBOku6fCM
>>127
>>125に言ってやれよw
2020/03/30(月) 20:13:35.71ID:4l2N9sosM
ここの人等は本当にきついね
一部だけかもしれんけど
他スレ建ててもどうせそこにやってくるし困ったもんだ
2020/03/30(月) 20:19:47.92ID:jrEvufLB0
いいから質問しろよ
俺が優越感感じられるように割と簡単なやつな
2020/03/30(月) 20:23:47.47ID:z27088IIa
ワロタw
ワイもドヤ顔で回答したい
2020/03/30(月) 20:33:15.75ID:mnH7Xf0t0
禿げのくせに
134デフォルトの名無しさん (ワッチョイ b1f1-Go5d)
垢版 |
2020/03/31(火) 00:31:58.74ID:O8i/VRws0
>>133
このハゲ!
2020/03/31(火) 00:37:41.25ID:fAiG3E7e0
天才な人、教えて下さい。

フォルダAの中にフォルダa1があってこの中にxxx.zipがあるとします。
このxxx.zipを直接クリックしたりしないで解凍するプログラムを書くのはVBAで可能でしょうか?
2020/03/31(火) 00:57:46.12ID:x9NcPTe/0
たまたま知ってたけど天才じゃないから教えられない
残念です
無念です
2020/03/31(火) 01:02:53.10ID:x9NcPTe/0
俺も天才じゃないんだわ
いるんか?このスレに、天才が
138デフォルトの名無しさん (ワッチョイ 558e-7Ena)
垢版 |
2020/03/31(火) 02:01:24.29ID:PSx1iNyN0
>>135
馬鹿は死ね
2020/03/31(火) 02:22:12.33ID:CMEsfttX0
>>135
「powershell zip 解凍」で検索!
2020/03/31(火) 03:29:43.49ID:fAiG3E7e0
>>139
どうもありがとう!
2020/03/31(火) 03:37:14.37ID:sCGR7IuL0
>>117って難しい?
142デフォルトの名無しさん (ワッチョイ 9e8a-k8oR)
垢版 |
2020/03/31(火) 05:23:52.03ID:kiJT2Kt60
zipをxlsxにすれば、VBAを使わなくても開くだけで解凍できる。どこに解凍されるかは知らんが。
2020/03/31(火) 08:15:19.13ID:AMZVbv8Gd
>>126
zip解凍ぐらい大して難しく無いんだから答えてあげたら?
2020/03/31(火) 08:25:37.91ID:FZ3Oti5EM
>>143
既に>>139で答えられてるだろ
スレの流れも追えないのか?w
2020/03/31(火) 08:42:47.60ID:AMZVbv8Gd
>>141
VBA 共有編集でググレば参考になる所が出てくる。
2020/03/31(火) 08:43:03.17ID:AMZVbv8Gd
>>144
バーカwww
2020/03/31(火) 09:32:50.09ID:WgVk0vye0
うゎ、真性かよw
2020/03/31(火) 13:30:22.20ID:UcE7ogps0
そういやxlsxがそもそもzipファイルなんだよな
2020/03/31(火) 22:47:10.97ID:Rc1BoApG0
そーなのか
道理で大昔作ったフォーマットを作り直してみたら容量が半分程度だったんだ
効率的なコード書けるようになった俺スゲーって訳じゃなく、エクセルさんが凄かったのね
2020/04/01(水) 01:30:54.93ID:IClGbcwW0
拡張子zipにして展開すると画像ファイル取り出せるしな
2020/04/01(水) 02:22:12.62ID:06G29rGEa
今さら次郎
2020/04/01(水) 03:04:48.87ID:Ex6pONtn0
これから三郎
2020/04/01(水) 03:32:39.41ID:8LLFjcSO0
終わりに四郎
2020/04/01(水) 04:33:51.17ID:h6/hOHkqM
アッと驚くタメ五郎
2020/04/01(水) 12:55:56.84ID:2mAYLJyeM
>>151
好きだよ六郎
2020/04/01(水) 18:21:42.63ID:UG3CS4Iqd
ネットでこんな素晴らしい物を見つけたんだけれども、これがデータ量が多いと結構時間掛かるんだけど、高速で図形として書き出す方法って他にありませんか?


http://izawa-web.com/excelbcad/dxfreader.html
2020/04/01(水) 22:01:42.03ID:4Q64PMPZ0
>>156
CADアプリで画像にでも変換してシートに貼り付けた方が早くて綺麗
オートシェイプに変換すると重くなるし比率が狂うし、メリットがなさすぎる
2020/04/01(水) 22:28:36.72ID:kG9c2P/10
>>157
貼って終わりならそれでもいいんですが、数あるCADデータの中から指定のデータを呼び出してエクセルに貼り付けて線の色とか文字を取得したいんですよね。
2020/04/01(水) 22:54:48.05ID:cJ4COAhO0
>>145
更新時間を短くする方法は載ってなかった
2020/04/02(木) 00:31:10.86ID:hOxCGNmI0
あるマクロを開いた瞬間に自作したユーザーフォームが出るようにする
それと同時にエクセルファイルを選択できる ファイルを開くウィンドウが出るようにする

ド基礎以前だと思うのですがおしえていただきたく、、
2020/04/02(木) 00:42:40.97ID:quV7czYu0
ググれば全部出るのに何故ここできく
2020/04/02(木) 02:21:22.11ID:9ZVXgmel0
>>160
Workbook_Open()
UserForm1.Show
Application.GetOpenFilename
2020/04/02(木) 07:03:17.01ID:qQpWBHI+0
ド基礎以前発言がひっかかるな...

あるマクロが他人の作った編集できないマクロなら難しいね
パスワードクラックはNGで
2020/04/02(木) 08:01:03.55ID:qvprCKttr
少しくらいの調べる能力も持たないお子ちゃまが多い
2020/04/02(木) 10:29:10.89ID:2gPurUpa0
ド基礎以前のこともわからないやつに教えても理解できんだろう
2020/04/02(木) 18:43:17.46ID:hOxCGNmI0
>>162
ありがとう、ネットで捜してコピペしながら頑張ってくわ

起動すると作ったユーザーフォームが開きつつ
ファイルからエクセルを選べるウィンドウを出す

開いたエクセルにはBとCの2列目からずらーっと数字が並んでるからそれをあらかじめ自分のカスタマイズした散布図にする
(2列目から始まるが終わりはデータによって違う)

ボタンによって2つの散布図に分けられる

がんばりやす
2020/04/02(木) 19:19:56.56ID:K5yIowQc0
>>164
人に教えることで自分も成長する。
2020/04/03(金) 02:02:50.37ID:Vs5HZC6Ua
成長してないやん
2020/04/03(金) 12:51:38.72ID:EwhXV+Zid
>>162
そりゃ駄目だ。
モーダルとモードレスを調べよう。

モーダルでやりたかったらフォームのInitializeかActivateイベントだな。
2020/04/03(金) 12:54:37.89ID:EwhXV+Zid
>>159
AutoUpdateFrequencyプロパティじゃね?
ググっただけだけど。
2020/04/03(金) 13:10:39.84ID:tVlvtk9J0
>>167
それはあるな
2020/04/03(金) 13:51:03.50ID:S5/JCD2f0
>>170
それ、イミディエイトペインで試したけど、5未満はNGだよ

>>145の共有編集って、Excel2016で実装した、OneDriveとか使ってクラウドでやるやつだと思ったんだけど、違うのかな
×共有編集 ○共同編集 らしいけど
2020/04/04(土) 10:09:51.56ID:3Ir6pkSX0
モーダルあなた疲れているのよ
2020/04/04(土) 10:15:36.71ID:nxBKOFy80
自動更新の間隔を短くするのが無理なら手動でできないのかな?
強制的に切断と接続を繰り返してみたらどうだろう
2020/04/04(土) 13:14:06.10ID:MDQA80eK0
>>173
やっぱり、逆だよね
2020/04/04(土) 18:10:09.51ID:x7mbZh3f0
>>172
ローカルのつもりだったんだけどそれなら共同編集になるのかな?
2020/04/05(日) 01:47:50.77ID:LE/VkChT0
セルA1とB1の数値が一致しない場合はC1を塗りつぶす、というのはできるのでしょうか?
2020/04/05(日) 01:56:11.77ID:RR8jfU5J0
>>177
If A1 <> B1 Then [C1].Interior.Color = RGB(1, 234, 56)
2020/04/05(日) 07:39:22.81ID:BAT1a6hLp
>>178
ありがとうございます!
2020/04/05(日) 11:37:21.47ID:FbjC6ZOO0
A行の値を見て、その値が1だったら、空白行を上に2つ入れたいのですが、できますか。
2020/04/05(日) 11:44:06.84ID:FbjC6ZOO0
間違えた。

A列の値を見て、その値が1だったら、空白行を上に2つ入れたいのですが、できますか。
2020/04/05(日) 11:59:20.85ID:Kx41qnng0
できます
2020/04/05(日) 12:00:45.64ID:RR8jfU5J0
>>180
Sub Macro1()
  For r = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
    If Cells(r, 1) = 1 Then Rows(r).Resize(2).Insert
  Next
End Sub
2020/04/05(日) 12:32:03.32ID:FbjC6ZOO0
>>183
ありがとうございます!できました。
2020/04/06(月) 00:22:26.25ID:8R1em71p0
ほんまこの程度自分で考えないのかなあ
2020/04/06(月) 01:48:40.71ID:SI8CeRSt0
子が吐き出したcsvデータ(子の状況により1ファイル数行〜数百行程度のデータ00000000.csv〜FFFFFFFF.csv)を親で吸い上げて管理用に整理するマクロを作成しているのですが子のデータ数が多くなったせいか親の処理を実行中にExcelが落ちるようになりました。
現状では
Workbook.Open 00000001.csv
でファイルを開いてから配列に叩き込んで処理しているのですが、
他に何か開かずに直接配列に収納するとか別の開き方など良い手段はありますでしょうか。
2020/04/06(月) 02:53:22.77ID:mfVHo2vq0
>>186
その説明では落ちる原因がわからんので対処のしようがない
とりあえずテキストファイルとして開いてSplitで配列に入れるとか
2020/04/06(月) 07:33:50.36ID:c57grIZCr
>>174
自動更新しても更新されない
強制的にはできないね
2020/04/06(月) 09:41:20.32ID:LXVfU9S30
>>174
最初、自前タイマーでの自動保存を提案しようと思ったけど、全ユーザーの同期とか排他処理とか必要になるからやめた
同時使用数にもよるけど、現状の5分ぐらいが実用限度だと思う
それでも問題があるから、MSも共有ブック機能を非推奨にしたんだろうしね
2020/04/06(月) 15:09:00.57ID:0mGlPNRI0
>>186
まず落ちる原因の特定が必要
本当にデータ量が原因かどうか?

それでもし量の問題だとしたら
同時に必要なデータを見定める

たとえばA、B、Cのファイルを同時に開いてたが
じつはAとB、BとCで処理する工夫の余地があるとか

それでもアルゴリズムではどうにもならない量なら
SQLとかのデータベースに移行する
2020/04/06(月) 22:35:08.05ID:sFf9EAmnM
https://oshiete.goo.ne.jp/qa/1972570.html
ActiveWorkbook.SaveAsにするとファイル名変えずに保存できる理由を教えてください
Copyした時点で別ブックが作られるんですか?
192デフォルトの名無しさん (ワッチョイ 233e-g9A3)
垢版 |
2020/04/06(月) 23:45:47.95ID:jDCeOgrg0
マクロで作られた印刷ボタンを押すと両面印刷で出てくるからこれを片面印刷に統一したいんだけどどうしたらいいの?
2020/04/07(火) 00:23:26.13ID:YDovvV0g0
>>192
マクロを書き換える
印刷方法の変更はプリンターごとに違ってて、Excelのマクロの中でも一番面倒な部分だから、会社でわかってる人に聞くのが早い
2020/04/07(火) 00:29:05.68ID:BEkwL8Dn0
プリンタ登録を2つに増やして使い分けるのが簡単。

でもWin95のころはコピーするだけでプリンタ増やせたけど年々難しくなるよね
2020/04/07(火) 00:35:40.64ID:8SYsQHh80
正直印刷は、機器変更、NW、印刷位置、紙質とかでトラブルが非常に多くなるから、
金、人命とか絶対にVBAで自動化しなければ行けない理由がない限り手動にするようにしたわ
印刷部分だけPDFにして置いておくとか
2020/04/07(火) 01:53:49.62ID:qS+8J4U+0
マクロは印刷プロパティを出すところまで。
それ以上はトラブルの原因になるからやめとき
2020/04/07(火) 04:36:48.84ID:hIwtKFus0
そもそも紙にこだわるのが非効率で
電子化するのが本来の理想ではある
198デフォルトの名無しさん (ワッチョイ 233e-g9A3)
垢版 |
2020/04/07(火) 07:13:41.88ID:xwPFl55C0
プリンタのプロパティでプリンタの設定自体を片面印刷にしておくと片面印刷になりますか?
199デフォルトの名無しさん (ワッチョイ 4d8e-jJEW)
垢版 |
2020/04/07(火) 08:07:09.26ID:YQg5kUpF0
そのくらい自分でやって試せよ
2020/04/07(火) 08:07:32.68ID:FCg3JG5md
>>186
CSVをWorkbook.Openで開くのが駄目。
OpenステートメントとかFileSystemObject使う方が良い。
2020/04/07(火) 09:12:43.26ID:+6IcJjJU0
>>197
そんなの職場や利用目的によりけりだから
202デフォルトの名無しさん (アウアウクー MM81-g9A3)
垢版 |
2020/04/07(火) 12:34:06.90ID:y7/AcPOrM
コントロールパネルからプリンタのプロパティで片面印刷に設定したんだけど片面印刷オンリーになりません
どうしたらいいですか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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