[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 12/29 06:14 / Filesize : 265 KB / Number-of Response : 993
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part77



1 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 07:07:35.59 ID:tS4zKdphH.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

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

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part76
https://mevius.5ch.net/test/read.cgi/tech/1651339421/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

209 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 14:16:15.91 ID:coj1xImd0.net]
そんなユーザーなら誰でも知っているような話をどや顔で言い争うのやめてくれませんか?
見てて恥ずかしいし建設的じゃない。

210 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 18:07:13.51 ID:Mw+Wxdkh0.net]
>>209
反面教師と思ってああならないように気を付けようぜ

211 名前:デフォルトの名無しさん (ワッチョイ fada-HV89) mailto:sage [2022/08/03(水) 18:43:45 ID:coj1xImd0.net]
だからExcel板の連中からバカにされるんだよな

212 名前:デフォルトの名無しさん [2022/08/03(水) 18:56:42.70 ID:EBW1aqTx0.net]
Excel板なんてあんのか。

213 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 19:26:06.29 ID:NOMH7G4CM.net]
ビジネスsoft板のことだろ

214 名前:デフォルトの名無しさん [2022/08/03(水) 19:28:37.44 ID:EBW1aqTx0.net]
これはご親切にどうも。

215 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 20:54:58.72 ID:coj1xImd0.net]
何故仲悪いのか理解できたわ

216 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 21:31:27.92 ID:PUzG+4xX0.net]
相手の立場やレベルを考慮しないで言った通りのことしかできないやつは使えないって事なんだが

他人の話を額面通りにしか受け取れないのは、障がいだぜ
一度医者に行くことを薦めるわ

217 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 22:36:18.83 ID:Mw+Wxdkh0.net]
>>216
ブーメラン戻ってきてますよ



218 名前:デフォルトの名無しさん mailto:sage [2022/08/04(木) 11:16:31.18 ID:zN4tRRWc0.net]
よっぽど悔しかったんだろ?

219 名前:デフォルトの名無しさん [2022/08/04(木) 12:00:42.26 ID:CwkjhMxBa.net]
>>208

220 名前:デフォルトの名無しさん (ワッチョイ fada-HV89) mailto:sage [2022/08/04(木) 13:35:21 ID:zN4tRRWc0.net]
電話とPCでやれば自演てできるんだっけ?

221 名前:デフォルトの名無しさん [2022/08/04(木) 16:47:37.44 ID:cXYjQ5Ck0.net]
じぇんじぇん

222 名前:デフォルトの名無しさん (ワッチョイ 79ce-dSCr) mailto:sage [2022/08/04(木) 17:24:45 ID:c9mFgSP40.net]
SeleniumBasic、WebDriverの質問いいですか?

223 名前:デフォルトの名無しさん [2022/08/04(木) 17:28:53.56 ID:kI29Y1SHF.net]
>>206
なんでtextプロパティで取得する前提なのかがわからない。

224 名前:デフォルトの名無しさん [2022/08/04(木) 17:39:47.72 ID:Lldfidgm0.net]
>>222
https://neos21.net/blog/2021/02/17-01.html

225 名前:デフォルトの名無しさん [2022/08/04(木) 20:26:30.10 ID:WbKEV01G0.net]
うちの会社は、プログラミング禁止になったよ
ちなみに代替手段はなし
マクロでやってたこと全部手作業になった
マジで物理作業量が跳ね上がってしまった

226 名前:デフォルトの名無しさん mailto:sage [2022/08/04(木) 20:36:43.85 ID:1k9fnhsyM.net]
全体最適の観点では必ずしも間違った判断とは限らない
中途半端な小手先の最適化は業務自体を見直すモチベーションを奪うからな

227 名前:デフォルトの名無しさん [2022/08/04(木) 22:20:34.12 ID:QBsI6Re20.net]
>>225
へぇー経緯は?
作った後テストしてなかったとか
IEEE754のせいで小数点計算がズレたとか?



228 名前:デフォルトの名無しさん mailto:sage [2022/08/04(木) 22:56:37.32 ID:NM48fYywM.net]
馬鹿が内容も理解せずコピペで作ったマクロのせいで間違いが発生していた
コピペ主体だからメンテ不可能だった
そのくせ馬鹿は自分が他の人より偉いと思い込んでいた

こんなところだろ

229 名前:デフォルトの名無しさん [2022/08/04(木) 23:14:37.44 ID:isEYuHXY0.net]
システム屋が作ったものではないと、そのひとしかわからないから、重要業務の担当者を外した巨大企業を知っている。

昔は我流でやるのが流行っていたから、プログラマでない人間が作ると、とんでもないものができているのが当たり前だった。

230 名前:デフォルトの名無しさん mailto:sage [2022/08/04(木) 23:44:38.37 ID:CV93jyTL0.net]
>>229
他人と共有するものは、それなりにきちんと書かないといけない(ドキュメンテーションも含めて)けれども、自分ひとりが便利に使う書き捨てマクロまで禁止にするなんて、どうかしていると思いますよ
イノベーションイノベーションとうるさいくせに、そういうのを禁止するなんて矛盾していることに気がつかないのでしょうか?

231 名前:デフォルトの名無しさん [2022/08/05(金) 00:23:11.85 ID:Bo4EfhoE0.net]
>>230
それが正確ならいいんだけどな。

232 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 00:38:13.23 ID:umVys4oP0.net]
>>225
面白そう
口パクみたいな感じで、働いてるフリすりゃいいんだろ?
実際には裏でVBSでも動かしておいて

233 名前:デフォルトの名無しさん [2022/08/05(金) 03:55:39.38 ID:vRCkxY7dd.net]
人間がやらなくてもいい業務をやり続けるのってすげぇ時間の無駄だと思うんだけど
その業務から学ぶことなんて何も無いだろうし
目先の金を拾うだけの仕事は良くないと思う

234 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 04:30:48.50 ID:HVkrhrQ0d.net]
属人化、なぜか暇そうにしてたからリストラ、腹いせにパスワードで業務が止まったと見た

235 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 07:35:30.37 ID:Lt70mDKgr.net]
公式な部署や担当を当てて書かせたんじゃなくて各々が自分用に書いてたんだろ
コードが残らないようにしとかないと混乱するし業務効率が違いすぎて「不公平」だと騒ぐやつとかいたんじゃないの

236 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 08:01:13.52 ID:fMQMo2cEM.net]
過去にタダ乗りされて酷い目にあったから使ってても教えない

237 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 08:25:59.90 ID:D4FWb9o5d.net]
どうしたら上手く運用出来るかを考えずに一律禁止にしてしまうところがJapですね



238 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 08:36:02.57 ID:XxJI9h8Xd.net]
個別最適を無視するトップダウンな判断ができるのはむしろ非Jap的だと思う
Japはゲンバにクチダセナイからな

239 名前:デフォルトの名無しさん (スップ Sd7a-1wwR) mailto:sage [2022/08/05(金) 10:47:16 ID:9/CLsA+Od.net]
スレと関係ない話題なんだから他でやれよ

240 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 11:33:11.96 ID:GN+Cpyju0.net]
Excelユーザーは誰もがVBAを使いこなしてると思い込んでいたわ
初心者の頃

241 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 11:46:42.49 ID:m45XxceE0.net]
まるで初心者じゃないみたいな言い方だな

242 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 13:00:55.34 ID:569iYGpd0.net]
じゃあランク付けしてくれよ
ちなオレは軍曹クラス

243 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 13:03:45.49 ID:PPjNiJ/gd.net]
マニアじゃないから軍事用語なんか使われても強さがわからんわ
ケロロ軍曹しか知らんし

244 名前:デフォルトの名無しさん [2022/08/05(金) 15:11:50.94 ID:Bo4EfhoE0.net]
Excelそのものも少数の人間だけが知っている運用ルールがあったりする。

わけのわからない表の解読に困ることもあるし、日本人はチームワークが得意だから、暗号のような記載ルールを勝手に決めていることもある。

245 名前:デフォルトの名無しさん [2022/08/05(金) 18:30:26.77 ID:9JwePxXo0.net]
軍曹は部下が11人いるので、課長クラスでは?

246 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 18:37:25.28 ID:m45XxceE0.net]
表計算ソフトを誰がどんな使い方しようが関係ないし、なんとも思わない

247 名前:デフォルトの名無しさん [2022/08/05(金) 18:44:56.08 ID:9JwePxXo0.net]
セルを小さくしてドット絵のようにして図解を描いたことならある。



248 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 19:17:52.69 ID:Q4Ghv2JD0.net]
元帥(名誉職・総司令官)⇒ 名誉会長
大将 ⇒ 会長
中将 ⇒ 代表取締役社長
少将 ⇒ 専務
大佐 ⇒ 常務
中佐 ⇒ 平取締役
少佐 ⇒ 事業部長
大尉 ⇒ 副事業部長
中尉 ⇒ 本部長
少尉 ⇒ 副本部長
准尉 ⇒ 本部長代理
曹長 ⇒ 部長
軍曹(ケロロ)⇒ 副部長
伍長(ギロロ)⇒ 部長代理
兵長(ドロロ)⇒ 課長
上等兵 ⇒ 課長代理
一等兵 ⇒ 主任
二等兵(タママ)⇒ 平社員

副部長くらいかなw

249 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 19:56:38.88 ID:vZ1ATXrm0.net]
>>247
パックマン作ったやつもいるけどな

250 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 20:00:30.00 ID:vZ1ATXrm0.net]
>>248
ごめん、軍曹を舐め過ぎた
上等兵くらいでした

251 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 23:36:41.76 ID:helHcEAzr.net]
>>248
尉官以上の士官とそれ以外は全く別の世界
本邦警察のキャリアノンキャリアは軍組織を元にしてる
民間での平から社長に登り詰めるみたいなのは不可能

252 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 23:46:50.13 ID:Q4Ghv2JD0.net]
>>251
ネタにガチ突っ込みされてもw

253 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 00:52:54.67 ID:RyjK6DAd0.net]
元帥クラスって誰辺り?
Office tanaka?

254 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 09:07:43.92 ID:tdNHMM1PM.net]
>>253
あの人以上はほぼいないだろうからそれでいいんじゃね
上等兵の俺はオブジェクト指向が解らんでつ

255 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 09:27:03.45 ID:bSEd2c570.net]
かなり昔だが、会社の同期がその人の講習会に参加したときに、「私より高いテクニックを持った人はいたとしても、分かりやすく教えられるスキルを持った人はほとんどいないからね~、私はテクニック至上主義ではない、実用的なやり方を分かりやすく教えられるプロ!」
みたいな話をされていたそうだ。

他人に教えるのって1番難しいわね。

256 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 10:37:03.49 ID:hhkfvvu8a.net]
事実としてそうなんだろうけど自分で言うのはどうかと思う
まあ講演会やるような人はこれぐらいの押しの強さが必要なんだろうけど

257 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 12:06:15.13 ID:sbIyICn+0.net]
いっぺんでもやってみるとわかる、教えるのって難しい
パソコンやExcelのことを周りからよく質問されるけど、いつも四苦八苦する



258 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 13:34:52.70 ID:IcxH468v0.net]
教えるのもマンツーマンなら比較的簡単だけどな

259 名前:デフォルトの名無しさん [2022/08/06(土) 13:42:21.52 ID:xsmVc9Uv0.net]
>>258
いやらしいな

260 名前:デフォルトの名無しさん [2022/08/06(土) 15:38:42.52 ID:eSBCWCwIa.net]
>>225
>>228
どういう業種なんだろ
馬鹿な対応っぷりからすると御役所系?

261 名前:デフォルトの名無しさん [2022/08/06(土) 15:43:10.30 ID:eSBCWCwIa.net]
>>257
せっかく教えても肝心な質問した方が話聴いてなかったりするからな

262 名前:デフォルトの名無しさん [2022/08/06(土) 15:45:16.89 ID:xsmVc9Uv0.net]
ネットで検索するような解決手段を教えた方がいい。

263 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 19:40:38.17 ID:bSEd2c570.net]
>>256
確かに。
まあアピールポイントに特徴ある人だと思う

264 名前:デフォルトの名無しさん [2022/08/06(土) 21:13:56.39 ID:xsmVc9Uv0.net]
講演活動は知識だけの人が多いからなあ

265 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 21:38:32.41 ID:IcxH468v0.net]
ちょっと何言ってるかわからない

266 名前:デフォルトの名無しさん [2022/08/07(日) 02:04:59.69 ID:Zc4u6CYP0.net]
>>265
実務経験ゼロでも成り立つ

講演、物書き、教育は、実務経験ゼロの会社がたくさんある。

だから、実例がすぐに出ない。

267 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 05:34:07.23 ID:tUFhHO190.net]
実例も知識じゃねーの



268 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 10:09:42.78 ID:eoT1bhw/0.net]
スレにまったく関係ないけど思い出した
取引先からある事情でビジネスマナー講義の受講(講師はそこの女社員)を強制されたことがあって
最初ら違和感あった(俺の親が逝ったと告げても何の反応もなしとか)けど講義内容に矛盾があったので指摘すると猛烈な人格批判が始まって驚いた
他日ウチの社長がそいつの社長(中小同士で学生からの友人)に会いに行ったときにちょっと遅刻したことがあって
秘書気取りのその女が用事があるからと言いつつウチの社長を小一時間ほど待たせた
流石に何かおかしいと思ったウチの社長が事情を問うと「取引相手を待たせるのはトップ失格だそれを自覚させるためにやった」などと主張したそうだ
つまり一種のコミュ障でコンプレックスある女が他人を見下ろすために知識の寄せ集めだけで副業に仕事をしていたって話
冒頭のある事情ってのも察してもらえれば

269 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 10:59:56.86 ID:iThpGePG0.net]
性格や考え方に問題あっても知識があるならいいんじゃね
実務経験があっても知識のない上司に相談して解決するならそうすればいいし
そもそも自分に知識があれば全て解決できるわけなんだが

270 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 11:09:10.44 ID:UpuFs56f0.net]
日本の企業は人材の性格も重要視するもんね。
能力あっても人間がクソなら採用見送ったり出世対象から外したり。

271 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 12:24:17.99 ID:uNtQuwFMd.net]
性格は欧米の方が重視されるぞ
文化的民族的背景が多様で自己主張も激しいから、クソ野郎は問答無用で切っていかないと無茶苦茶になる
日本はなんだかんだそこまで酷い人間は稀だからな

272 名前:デフォルトの名無しさん (オッペケ Sr5d-4bUZ) mailto:sage [2022/08/07(日) 12:57:45 ID:TWy7Xhzwr.net]
>>268が不明瞭なので補足
寄せ集めの知識というのは複数著者のテキストを咀嚼せず文字通りコピペしてるって意味
例えばビジネスコミュニケーションでは科学的根拠に基づかなければいけないというパワポ資料の次ページでナントカ占いみたいな性格判断が出てきたりとか

273 名前:デフォルトの名無しさん (ワッチョイ eb8f-2+m5) mailto:sage [2022/08/07(日) 14:41:48 ID:JbyM4yYv0.net]
説明が下手くそな輩ばっかだなこのスレ

274 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 15:39:52.33 ID:TKajqBRY0.net]
>>273
確かにそうだな
ここはお前の力の魅せどころだぞ

275 名前:デフォルトの名無しさん (ワッチョイ 6bda-erdL) mailto:sage [2022/08/07(日) 16:25:54 ID:UpuFs56f0.net]
いや、言っている事は分かるから全然良いですよ
ただ、要点だけまとめてくれたら読みやすいかなーと。
同志達たのんます。

276 名前:デフォルトの名無しさん [2022/08/07(日) 17:53:18.30 ID:iCiStKaEd.net]
VBAと関係ないおっさん達の自分語りはいつ頃終わりますか?

277 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 17:57:35.06 ID:fAQAAmLc0.net]
>>276
お前みたいに構うやつがいなくなるまで無理じゃね



278 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 18:06:12.30 ID:/jCP59e6d.net]
>>276
ほんと他で話せばいいのにと思うよな
質問来てもろくな回答もできないからこういう答えの不要なレスするしかないんだろ

279 名前:デフォルトの名無しさん [2022/08/07(日) 18:32:46.70 ID:NS+q4Bfp0.net]
まぁ質問者がいないときはいつもこんな感じだけどな

280 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 10:19:45.18 ID:wk4U/6Hx0.net]
質問いいですか?

281 名前:デフォルトの名無しさん (ワッチョイ 13ad-YzdW) mailto:sage [2022/08/08(月) 14:27:36 ID:aqubZxNB0.net]
どうぞ

282 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 22:16:45.25 ID:bMElgXf+d.net]
VBA でモテるにはどうしたら良いですか?

283 名前:デフォルトの名無しさん [2022/08/08(月) 22:25:23.54 ID:ptVxpUmad.net]
そんなことをここで聞いてる時点で無理

284 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 10:07:28.51 ID:b44kZqNV0.net]
Excelできれば女子にモテるぞww
とか言われたからExcel始めたけど
ウソだったわ。
逆にキモがられるようになったら。

285 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 10:20:16.32 ID:/NfYTDtW0.net]
>>248
カプコンの1943思い出した
ステージクリアで尉官が上がって最終的に特別中将だったかな
よく考えたら社長クラスが一人で突撃w

286 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 11:12:29.84 ID:SavN6yJh0.net]
Excel出来るようになったのではなく他に問題があるのでは🤔

287 名前:デフォルトの名無しさん (ワッチョイ 6bda-woMg) mailto:sage [2022/08/09(火) 14:08:30 ID:rR0EJQ8B0.net]
>>284
だまされたんだと思う、もうExcelやめた方がいいよ



288 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 14:53:29.86 ID:b44kZqNV0.net]
>>287
分かった。
Wordに移行するわ。

289 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 15:01:15.06 ID:SavN6yJh0.net]


290 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 15:23:13.16 ID:8JIsTWChM.net]
Excelできるけど仕事はできない人

291 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 20:40:53.82 ID:AVc3PDFp0.net]
パワポ男子の方が格好いいと思うなあ

292 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 08:38:11.60 ID:fdOq6fLVd.net]
excel365でファイルを更新した形跡を全く残さない方法って何かありませんか?
弄る部分はマクロのコードのみです
業務を格段に楽にするマクロをいくつも組んでやったのに感謝も薄く図々しく給与にもビタイチ反映されなかったので
このクソブラック企業を辞めるときに全部壊していきたいのですがバレるとアウトなので
変えないようにしたいのはファイル名の横に出る更新日時です

293 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 09:10:02.43 ID:ph9U25aD0.net]
エクセルのVBAって2000から現在までの間に
ここで大きく変更があって互換性に問題があるみたいなのありますか?

294 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 10:06:18.63 ID:kx7L/9BB0.net]
>>292
一応言っておくけどお前のやろうとしてることは犯罪だし、回答書くと犯罪幇助になるから

295 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 10:07:16.58 ID:kx7L/9BB0.net]
>>293
2007 辺でグラフ周りが色々変わって過去のマクロでエラー出たことがある

296 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 10:10:55.76 ID:uspPIoStd.net]
そこそこあると思うよ
なので自分はバージョンごとにコードを振り分けたりした
実際に試したほうがいいんじゃないかな

297 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 10:22:34.51 ID:20iS7AqN0.net]
>>293
64bit化、ワークシートの大きさ、ワークシート関数の増減など、バージョンごとにどんどん変わってる
何を問題とするかは人それぞれで、利用環境や目的にもよるので、ちょっと質問が曖昧すぎ



298 名前:デフォルトの名無しさん [2022/08/10(水) 10:36:03.23 ID:p8b8cWYPd.net]
>>292

こいつみたいなのがまさにこういうパターンだ

馬鹿が内容も理解せずコピペで作ったマクロのせいで間違いが発生していた
コピペ主体だからメンテ不可能だった
そのくせ馬鹿は自分が他の人より偉いと思い込んでいた

299 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 11:45:31.80 ID:uspPIoStd.net]
犯罪の質問なんて無視しとけよ
構うお前も同じなんだぞ

300 名前:デフォルトの名無しさん [2022/08/10(水) 11:53:09.98 ID:5QJKzNy5d.net]
嫌がらせして辞めたところで迷惑を被るのは同じ作業してるポジションの人か後任の人だろうからやめとけ
査定をしてる立場の人達は痛くも痒くもない

301 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 12:39:15.19 ID:fdOq6fLVd.net]
うちのブラックに来たら誰でも同じことしたくなると思うけど
犯罪なのは分かったからやめとくわ
あと言っとくけどうちにはマクロ組めるような奴はいないし
体系的に学んだ上きれいなコードで書いてるからくだらんレッテルはいらない

302 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 12:55:04.32 ID:/NkHb0sD0.net]
>>292
マクロ作るのもあなたの業務だったのでは?
会社で仕事して給料もらえてたのにそれ以上のことなんかないよ

303 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 13:53:09.69 ID:kx7L/9BB0.net]
> 犯罪なのは分かったからやめとくわ
犯罪じゃないと思ってたのかよ...
まじでヤベー奴やんw

304 名前:デフォルトの名無しさん [2022/08/10(水) 14:04:12.08 ID:0PwnBNIZ0.net]
気持ちは分かるが犯罪はいけないな。
次回からはそういうことに備えて
マクロにパスワード掛けて
時間が経ったら期限切れのメッセージでも
ポップアップして処理を中断させる
ようにでもしておけばいい。

もっとも、自分の作業効率化のために
頼まれてもいないのに勝手に作ったというなら
根こそぎ消しても問題ないとは思うけどな
どうしてもしたいというなら
法テラスにでも相談しに行けばいい。

305 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 14:26:23.92 ID:Mq4biE7dM.net]
If Date > 退職日 Then
Exit Sub
End If

あとは全部インデントなくすとかコロンで繋げるとかプロシージャ名を処理内容と紐づかないものにするとか

色々引き継ぎの嫌がらせは考えたことあるけど、やったら何訴えられるかわからんからやらない

306 名前:デフォルトの名無しさん [2022/08/10(水) 14:28:02.85 ID:5QJKzNy5d.net]
てか保守出来る人居ないなら何もしなくてもそのうち会社は面倒事に巻き込まれるだろ

フォーマットがちょっと変わったり、新しい特殊な項目が追加されて使いものにならなくなったりするし

307 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 15:51:28.73 ID:uspPIoStd.net]
放置すればいいものを
くだらない話には食いつく奴ばかりだね



308 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 15:58:20.27 ID:AlyojMao0.net]
123 10
123 11
123 15
空白
空白
124 18
124 22
空白
125 20
空白
126 15
126 10

みたいな並びのコードがあって、
上下のコードが同じ場合、コードの隣の数字を10%で割り戻した数字を計算したものと、10の数字をそのままにしたものを2つ持っておいて、コードが変わるところまでそれぞれ計算したら、コード単位で10%で割り戻したものの合計値と、割り戻してないものの合計値の差分を
一行挿入して差額として123のいくらと転記
空白行は無視。
差額が出ない場合(基本的にはないけど)は行の挿入はしない、
というvbaって作るの可能?
差額を持たせることまではできたんだが、
挿入のところでこれ無理では?と思って止まってます。

309 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 16:00:49.46 ID:AlyojMao0.net]
ちなみにデフォルトで入ってる空白は無視です

310 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 18:18:34.25 ID:kx7L/9BB0.net]
>>308
挿入/削除はいろいろ面倒だから簡単にやるには別シート(もしくは別列)に転記しながら処理して最後に書き戻すのがわかりやすいと思う
スマホから入力してるから細かいミスはあると思うがこんな感じ
Dim S1 As WorkSheet: Set S1 = WorkSheets(1)
Dim S2 As WorkSheet: Set S2 = WorkSheets(2) ' 空のシート
Dim R1 As Long
Dim R2 As Long: R2 = 1
Dim N0 As Long: N0 = 0 ' 元の値合計
Dim N1 As Long: N1 = 0 ' 割戻し合計
Dim C0 As String ' 処理中のコード
C0 = S1.Cells(1, 1).Value
For R1 = 1 To S1.Cells(S1.Rows.Count, 1).End(xlUp).Row
Dim C1 As String ' 現在のコード
C1 = S1.Cells(R1, 1).Value
If C1 = "" Then Goto Continue
If C0 <> C1 Then
S2.Cells(R2, 1).Value = C0
S2.Cells(R2, 2).Value = "差額: " & CStr(N0 - N1)
R2 = R2 + 1
C0 = C1: N0 = 0: N1 = 0
End If
S2.Cells(R2, 1).Value = C1
Dim N2 As Long: N2 = S1.Cells(R1, 2).Value
S2.Cells(R2, 2).Value = N2
R2 = R2 + 1
N0 = N0 + N2: N1 = N1 + 0.9 * N2
Continue:
Next
S2.Cells(R2, 1).Value = C0
S2.Cells(R2, 2).Value = "差額: " & CStr(N0 - N1)

311 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 19:06:30.56 ID:LEtlyiDn0.net]
スマホからこんだけ入力するのは感心するわ

312 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 19:40:10.67 ID:AlyojMao0.net]
>>310
ありがとうー!!
後半のC1:N0あたりの動きが読み取るのがちょっと難しいですが、
別シートに単純に一度書き写していって最後に読み戻すってのは目から鱗です
確かにそっちの方が問題なくできるかもしれないです
試してみます!

313 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 20:46:14.74 ID:kx7L/9BB0.net]
>>312
> 後半のC1:N0あたりの動きが読み取るのがちょっと難しいですが、
If C0 <> C1 Then
で、コードが変わった事を検出して変わったら

S2.Cells(R2, 1).Value = C0
S2.Cells(R2, 2).Value = "差額: " & CStr(N0 - N1)
R2 = R2 + 1
で、差分を追加して

C0 = C1: N0 = 0: N1 = 0
で、新しいコードを覚える共に合計値を初期化してる

314 名前:デフォルトの名無しさん [2022/08/10(水) 20:48:55.75 ID:p8b8cWYPd.net]
こんなことがわからない奴が金計算をVBAでするなんて

315 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 20:57:23.40 ID:ph9U25aD0.net]
テキストファイルからキーワードが含まれてる行をセルに書き込みたいです
キーワードが8個あります
行=Bを「商品」か「価格」を""に置換して
元のBと違ってたら書き込むようにしたんですが
もっと簡素な方法ありませんか?

Open A For Input As #1'Aはテキストファイルのフルパス
Do Until EOF(1)
Line Input #1, B '1行分だけ読み込み
If B <> Replace(B, "商品", "") Then
i = i + 1
Cells(i, 1) = B 'セルへ入力
Else
If B <> Replace(B, "価格", "") Then
i = i + 1
Cells(i, 1) = B 'セルへ入力
End If
End If
Loop
Close

316 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 21:00:16.39 ID:hNnMWsb/0.net]
なんで商品と価格のReplaceを分けるのか

317 名前:デフォルトの名無しさん [2022/08/10(水) 21:07:20.86 ID:0PwnBNIZ0.net]
>>315
InStrは嫌いなの?



318 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 21:43:46.56 ID:AlyojMao0.net]
>>313
ありがとうございます、
勉強中なので質問なんですが、
C1:N0 =0:N1=0の中の:ってどういう意味なんでしょうか?

319 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 22:04:25.44 ID:NcNdkaPG0.net]
突っ込みどころ満載の質問久しぶりね

320 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 22:24:43.27 ID:kx7L/9BB0.net]
>>315
> キーワードが8個あります
これはどうなったの?
単に複数のキーワードが含まれてるかを見たいだけなら
Line Input #1, B '1行分だけ読み込み
Dim K As Variant
For Each K In Split("商品,価格", ",")
If B Like "*" & K & "*" Then
Cells(i, 1).Value = B
i = i + 1
Exit For
End If
Next

321 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 22:31:30.17 ID:uspPIoStd.net]
>>315
どんなやり方でもいいと思うけどキーワードを含むかどうかを関数にするといいんじゃない
Function CheckKeyword(ByVal pValue As String) As Boolean
CheckKeyword = True
If pValue <> Replace(pValue, "商品", "") Then
Exit Function
End If
If pValue <> Replace(pValue, "価格", "") Then
Exit Function
End If
残りのキーワードも同様に判定
CheckKeyword = False
End Function
これを使えば
i = i + 1
Cells(i, 1) = B 'セルへ入力
の部分は1つでいいよね

322 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 23:03:22.07 ID:kx7L/9BB0.net]
>>318
VBA マルチステートメント
でググってくれ

323 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 23:23:06.57 ID:20iS7AqN0.net]
>>318
改行みたいなもん。たとえば
N0 = 0
N1 = 0
という複数行のコードを1行にまとめることができる
N0 = 0: N1 = 0
だけど、やらない方がいいと言われている

324 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 19:50:59.53 ID:eLvp/vGod.net]
変数宣言と同時に初期化する用途に限って俺は許容してるな
それよりif文を1行で閉じる奴が凶悪
ネストするとEnd ifの数が合わなくなる

325 名前:デフォルトの名無しさん [2022/08/11(木) 20:39:49.16 ID:Eqlf5oxG0.net]
>>324
変数宣言と一緒に初期値設定する人はよく見かけるしアリだと思う。
同様に実は特殊な場合に限りIf文を一行で記載することもある。
本来構造化言語で使わない方が良いとされているGoto文も特殊な場合に限り使うこともある。

VBAは結構何でもありの言語だからその辺、仕事場のコーディングルールや
作ってる人のマイルールによって随分違いが出てくる。

一概にどんな方法をとることが最善とは言えないから人の書いたソース見てると面白い。

326 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 20:49:36.22 ID:bTQMDZYqd.net]
Ifの中身が1行だけの時に全体を1行で書くのはマルチステートメントとは違うくない?
If a = 0 Then b =0
あくまでコロンでつなぐ場合のことでしょ

327 名前:310 (ワッチョイ 1301-lJ3c) mailto:sage [[ここ壊れてます] .net]
俺も本来はマルチステートメントは使わないけど、5chのレスは行数制限あるからマルチステートメントにしてるだけ
そもそもこの手の話は好みもあってどっちが正しいとかはないからそろそろやめようよ



328 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 22:00:47.13 ID:/ib3rHvC0.net]
そもそもダメだとか誰が言っているのだろうか。。

329 名前:デフォルトの名無しさん (スッップ Sd33-N11w) mailto:sage [[ここ壊れてます] .net]
○○ならアリって言ってるってことはそれ以外はナシって受け取る人もいるだろ
提供されたコードをそのまま使うだけしかできないならそれだけの話だし
自分のルールに従って直せばいいだけの話で人のコードにケチ付ける必要なんてないだろ

330 名前:310 (ワッチョイ 1301-lJ3c) mailto:sage [[ここ壊れてます] .net]
>>328
> だけど、やらない方がいいと言われている
みたいな意見があるから

331 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 00:11:05.61 ID:gP2cSn76d.net]
コーディングルールなんて宗教みたいなもんだけど、一応マルチステートメントは推奨されないという意見のが多数
リーダブルコードにも書いてあるし、MS公式も推奨しないと言ってる
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/statements

明確に禁止したがってる人は肌感覚でもっと少数派だけどね

332 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 00:24:13.41 ID:nWfz+VWs0.net]
どうせ仕事でVBA作ってる質問者なんて少ないやろ

333 名前:310 mailto:sage [2022/08/12(金) 05:00:53.71 ID:zAuzG+foa.net]
>>331
おっちゃんそれVBAじゃなくてVB.NETのドキュメントやで

334 名前:デフォルトの名無しさん [2022/08/12(金) 05:44:37.34 ID:Icr7mfuu0.net]
Van.Netなら変数宣言と同時に初期値設定出来るから
引き合いに出すのもお門違いだな

335 名前:デフォルトの名無しさん [2022/08/12(金) 06:23:06.84 ID:dDX14IC1M.net]
>>334
van.netなどない、このハゲ!

336 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 08:48:11.58 ID:nWfz+VWs0.net]
中のVBAのコードだけGitに上げることってできるの?
めんどいコマンドとか外部サービス使わずに
そもVBEからコミットとかプルリクとかやりたい

337 名前:デフォルトの名無しさん [2022/08/12(金) 09:02:48.49 ID:Icr7mfuu0.net]
>>335
すまん、VB.Netの間違いだった
しかし俺は禿げてはいない。頭頂点しかな!!



338 名前:デフォルトの名無しさん [2022/08/12(金) 09:16:28.60 ID:Icr7mfuu0.net]
>>336
まあコードをエクスポートしたものを載っけておくくらいかな。
Bisual Sutadioみたいにエデイタ上から設定するのは無理だと思った。

て言うかコードだけ取っておいてもexcelのVBAの場合はexcelそのものに影響されるところも多いから
excelごと取っておいてソースを比較したいときだけ何かのツールでソースの比較を行った方がいいと思う。

339 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 12:38:04.21 ID:Oc3JB1Iir.net]
Bisual Sutadio

340 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 12:52:14.02 ID:kbIhrpmL0.net]
>>336
今のVBAでGitは見たことないけど
昔VSSで管理するアドインがあったから、アドイン作ればできるんじゃね

>>338
マクロ入ってるエクセルはどうか知らんが、今のエクセルってXMLをzipで固めただけのはずだから
Zip解答してソース管理に突っ込む手もあるかもしれん
つかお前の誤字はわざとかこのハゲ

341 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 16:32:51.36 ID:BEh6dSX60.net]
お前ら禿好きだな

342 名前:デフォルトの名無しさん [2022/08/12(金) 16:38:58.11 ID:eSjTAJcc0.net]
↑この人ハーゲマンです

343 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 17:59:10.79 ID:BEh6dSX60.net]
いきなし禿げたんよ。
去年の夏位まではふさふさだった

344 名前:デフォルトの名無しさん [2022/08/12(金) 20:16:41.08 ID:ijOecH2p0.net]
それはコロナだから治療行けよ。

345 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 21:06:52.17 ID:rQBVWxEE0.net]
Dim Eight As Typhoon
Set Eight As Typhoon

Debug.Print Eight.HPa

346 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 21:35:36.13 ID:JWVBEjPKr.net]
質問です
エクセルでvba書くとハゲるというのは本当ですか?
それともハゲじゃないとまともなコードにならないということでしょうか?

347 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 00:36:53.33 ID:7+qtu9p80.net]
>>345
Set Eight = New Typhoon



348 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 00:54:21.19 ID:C3GQNRB30.net]
Print Eight.Name
Mary

349 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 07:49:57.82 ID:Q44FuubAd.net]
>>346
ハゲる→外に出られなくなる→VBAしか無い人生に陥る

350 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 18:00:34.01 ID:+/onKVXv0.net]
禿が気になるなら頭ツルッツルにするという構想は無いのかね?

351 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 18:44:02.54 ID:qT7WXGgOd.net]
Dim Hair As Object
Set Hair = Nothing

352 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 21:29:48.82 ID:+/onKVXv0.net]
>>351
座布団100枚

353 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 22:55:44.03 ID:ZiFcsOVE0.net]
>>346
こら!良い大人ならスキンヘッドと言いなさい!

354 名前:デフォルトの名無しさん (ワッチョイ d2bd-nhkz) mailto:sage [[ここ壊れてます] .net]
スキンヘッドが似合う顔ならスキンヘッドにしてるんですよ・・・

355 名前:デフォルトの名無しさん [2022/08/14(日) 11:14:09.47 ID:VI2zLni0a.net]
ezoe職務質問されたってよ

356 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 13:17:19.86 ID:RtZKjyzz0.net]
>>355
QZ は逮捕・拘留11日を食らったってよ

357 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 16:16:37.77 ID:L75yFRnI0.net]
スキンヘッドは
メガネがポイントだと思う。
閑話休題。

次の話者に期待



358 名前:デフォルトの名無しさん [2022/08/14(日) 16:36:03.46 ID:LT2TaV3B0.net]
皮頭よりはハゲと言われたほうが人権を尊重してるだろ

359 名前:デフォルトの名無しさん [2022/08/14(日) 19:46:54.17 ID:mUrr83gX0.net]
>>349
→VBAの質問スレに書きこむようになる

360 名前:デフォルトの名無しさん [2022/08/14(日) 23:12:05.82 ID:LT2TaV3B0.net]
きみたちハーゲマンに質問なのですが
VBAの配列でJavascriptのようにpushやpopを使いたいときってどうしてます?
わざわざredim使って要素数を変えるのはそれが頻繁になるときは使いづらいなと思うし。

361 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 23:52:33.60 ID:mUrr83gX0.net]
>>360
最初の配列はそのままで添え字を管理

362 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 00:13:18.77 ID:WD7exLpg0.net]
ツルピカかつ、不精ヒゲだから女さんなんて絶対に寄り付かない。

363 名前:310 mailto:sage [2022/08/15(月) 05:37:50.20 ID:zxOEKBbO0.net]
>>360
VBA で残念に思う所の一つやね
サイズの上限が決められるならその上限で確保してサイズは別途管理
上限が決められない時はReDimでちまちま管理してる
あとReDimでサイズを0にできないのも地味に辛い

364 名前:デフォルトの名無しさん [2022/08/15(月) 06:56:28.24 ID:OUaqH/oW0.net]
>>361
>>363
レスありがとう、ハーゲマンたち。
じゃあしかたないんですね。
でもVBAでもpush, pop, shift, unshiftが使える配列のようなものをVBAのクラスかなにかを使って再現することは可能だろうか?

365 名前:デフォルトの名無しさん [2022/08/15(月) 07:26:27.37 ID:3rPnXTV50.net]
>>364
可能、だが○○の機能がないから作れないではなく
目的の動作をするように作るんじゃね
質問が本末転倒している

366 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 08:25:48.51 ID:7kbqjBHA0.net]
>>364
他の言語でもスタックやキューは長さの決まった配列だよ
そこへオブジェクトを出し入れするときに端のポインタを動かすだけ
長さが足りなくなったら長さ2倍の配列を新しく定義してそっちへオブジェクトを引っ越し、オブジェクトの数が長さの25%を下回るようになったら長さ半分の配列を作り直してそっちへ引っ越し

367 名前:310 mailto:sage [2022/08/15(月) 08:28:07.85 ID:zxOEKBbO0.net]
>>364
pushpush, pop だけだけど実装例
https://kazusa-pg.com/vba-stack/



368 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 12:57:14.28 ID:3rPnXTV50.net]
EXCELのシートが配列みたいなもんだし

369 名前:310 mailto:sage [2022/08/15(月) 13:34:09.14 ID:zxOEKBbO0.net]
>>366
それは実装による
リストで実装してる奴もあるし

370 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 16:10:48.09 ID:Z5BB7x+B0.net]
VB(A)の配列でpopが必要になる場面ってあんまないなあ
不要になったらemptyぶちこむだけだし

371 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 18:21:13.35 ID:u0LihC760.net]
時間データ
>>364
他言語はよー知らんけどdictionaryじゃあかんの?

372 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 18:23:08.68 ID:u0LihC760.net]
>>371
ああスマン。なんかへんな一言張り付いた。

373 名前:デフォルトの名無しさん [2022/08/15(月) 19:15:38.92 ID:HvBHLkJg0.net]
Dictionaryでいいと思う。
キーに連番、スタックポインタ代わりに変数一個用意してやって、使い終わったらremove で消して。

374 名前:デフォルトの名無しさん (ワッチョイ 6eda-5Ix7) mailto:sage [[ここ壊れてます] .net]
やり方は色々あるのにVBAが使いにくいとか言い出す初心者w

375 名前:デフォルトの名無しさん (ワッチョイ 4d2f-O3lh) mailto:sage [[ここ壊れてます] .net]
だがしかしVBAにDictionaryはないのだよ

WSHはいつまでサポートされるかなぁ
VBAより短い気がしてきた

まあ俺ならどうしてもキューかスタックほしいなら、.NET Frameworkのやつ使うかな

376 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 19:54:05.83 ID:3rPnXTV50.net]
だからVBA使うのやめなよ

377 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 20:17:32.58 ID:kNyRr/sv0.net]
VBAでDictionary使えるでしょ



378 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 20:25:53.14 ID:u0LihC760.net]
ああ、なるほど。いつ使えなくなるとも知れないとなれば先々を考えて使わないほうがいいかもね。たしかに使い方も特殊だし。>dictionary

まぁ、それなら捨てsheet作って貼り付けるかな。2次元までなら。
そのかわり処理速度は格段に落ちる可能性はあるけど、待ってりゃいいならそれもアリか。

379 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 20:28:32.11 ID:Mg/eEpn60.net]
それって findfirst/findnext 一発で済む問題なのでは?いちいちマクロで書くのもウザったいですよね‥‥

380 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 20:41:37.63 ID:3rPnXTV50.net]
使いにくいとか面倒とか愚痴るくらいならEXCEL使うのやめればいいのに

381 名前:デフォルトの名無しさん [2022/08/15(月) 21:05:11.95 ID:OUaqH/oW0.net]
>>371
Dictionaryはとおの昔から使っておったのじゃよ。
しかし使い続けているうちにふと頭をさわるとなんとハゲてしまったのじゃ。
それは困ると思ってDictionaryに変わるいい方法を探求しておるのじゃ。

382 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 21:40:01.71 ID:u0LihC760.net]
>>381
なんだ、ただふざけてるだけか。。。

383 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 22:39:37.83 ID:fsND5nPed.net]
そんなハゲ頭に免じてArrayListを進ぜよう

384 名前:デフォルトの名無しさん [2022/08/15(月) 22:52:26.96 ID:HvBHLkJg0.net]
DictionaryがイヤならCollection使えばいいと思うけど。
まぁ別に普通に配列でもいいんだけどさ。
多少凝った作りにしたって関数化しとけばいい訳だし。

385 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 04:43:22.32 ID:Z2Qcd4DId.net]
>>384
流石に無知すぎるから少し黙った方がいいよ

386 名前:310 mailto:sage [2022/08/16(火) 05:59:23.35 ID:CNdrdYLw0.net]
Collection に Exists メソッドがあれば...

387 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 11:11:29.27 ID:09rAK4Ti0.net]
何作ってんだよ



388 名前:デフォルトの名無しさん [2022/08/16(火) 12:23:01.42 ID:2L6vp4NY0.net]
>>385
そうだね
よく分かりもしないで無知とか決めつける無知は
すっこんでればいいよね

389 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 16:58:27.92 ID:tG1qlgnq0.net]
あまりマウントの取り合いは止めようぜ
意見交換の場なんだから

390 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 17:40:43.11 ID:09rAK4Ti0.net]
どちらかというとけなし合いだな

391 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 18:00:08.72 ID:0h33t1VnM.net]
ここにいると神になった気分になるな
お前らの見苦しさに対してもなんだか優しくなれそう

392 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 18:20:47.96 ID:tG1qlgnq0.net]
昔は違ったんよ
いつからか荒れやすいスレになった

393 名前:デフォルトの名無しさん [2022/08/16(火) 20:19:48.02 ID:NUsqsy200.net]
>>382
ふざけてるつもりは毛頭ございませぬ。
でもこれからもハーゲマンの名に恥じぬようVBAを探求していきたいです。

394 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 20:50:53.76 ID:tG1qlgnq0.net]
毛という毛全部剃っちゃえ!

395 名前:デフォルトの名無しさん [2022/08/16(火) 21:16:40.24 ID:NUsqsy200.net]
>>394
アホ。
そしたらハゲてまうやんけ。

396 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 21:54:28.52 ID:tG1qlgnq0.net]
え?
別にいいじゃん、アンタ元から禿なんだから。

397 名前:デフォルトの名無しさん [2022/08/17(水) 01:45:03.16 ID:d962r+SMa.net]
ソルのはムダ毛だけにしとけ



398 名前:デフォルトの名無しさん [2022/08/17(水) 01:57:01.99 ID:sNWv67oad.net]
頭髪は生えないのに髭は生える

399 名前:デフォルトの名無しさん [2022/08/17(水) 04:59:55.38 ID:EILeizBb0.net]
>>396
コラ、われわれハゲ族は、
励まし合って生きていかねばならぬ。
ハゲ増し合うことはするな。

400 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 07:35:41.89 ID:hasTYsFP0.net]
頭髪はハゲても、耳毛は濃くなる

401 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 11:39:32.10 ID:Ork7WWB+0.net]
禿ではないのだけど、40歳にして髪は真っ白よ。

402 名前:デフォルトの名無しさん (ワッチョイ 6eda-5Ix7) mailto:sage [[ここ壊れてます] .net]
好きな色に染めようぜ

403 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 12:58:33.86 ID:PQdbwjDzr.net]
Excelらしく緑だな

404 名前:デフォルトの名無しさん [2022/08/18(木) 12:18:45.39 ID:yPHO1+kSp.net]
なんという体たらく
もうハゲはこのスレ出入り禁止でいいな

405 名前:デフォルトの名無しさん (ワッチョイ fdb7-laJE) mailto:sage [[ここ壊れてます] .net]
2つの表があって、表Aと表Bとして
表の作りは二つとも同じで、
コードと数字を持ってます。
二つの表のコードが一致してる場合は

コード  A B
101 50 60
102 40 100
103 30
104 50

といった感じで片方にしか存在しない場合は片方だけの行を追加して行くってvbaを作りたいんですが、何かいい案はありますか?
AとBの表で数字の比較をしたいです
for nextでやろうとしてますがうまくいいやり方が見つからずです

406 名前:デフォルトの名無しさん (ブーイモ MM85-Hx7L) mailto:sage [[ここ壊れてます] .net]
まずVBAを忘れます
SQLで FULL OUTER JOIN します
(゚д゚)

407 名前:デフォルトの名無しさん (ワッチョイ 468c-hYSv) [[ここ壊れてます] .net]
>>405
テーブルのリレーションシップを設定したらいいんじゃないかな



408 名前:デフォルトの名無しさん (アウアウウー Saa5-dwW8) mailto:sage [[ここ壊れてます] .net]
例えば以下の様なデータがあるとします

開始~終了:消費量
1月1日 0時~1月1日16時:500
1月1日16時~1月2日10時:1000
1月2日10時~1月5日 0時:800
1月5日 0時~1月5日0時:300
1月5日0時~1月6日0時:2500
1月6日0時~1月7日12時:1200


このように時間の区切りがバラバラ(かつ日跨ぎや0分間もある)のデータに対して、1月1日、2日、3日にそれぞれ合計いくらかを出したいです
なお、例えば20時~翌6時で1000の様な場合は4h:6h=400:600として計上したいです

どう計算するか方針すら思い浮かばないのですが何かアイディアありましたら教えてください

409 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:01:03.74 ID:JMDQexcx0.net]
vlookupでできない?
普通にforループでも難しいことなさそうだけど、どんなコード書いたの?

410 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:04:36.75 ID:JMDQexcx0.net]
>>409>>405へのレスね

411 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:14:31.63 ID:EMP5KmCeM.net]
>>408
まず問題を分割しよう
まず(step1)日別にレコードを分割し、(step2)それを日付でグループ化して合計を出すと考えればいい
step2は典型的なグループ化と小計なんで楽勝として、step1はちょっと面倒だから更に分割しようか
例えば、入力として一行の内容を渡すと、日別分割されたレコードの配列を返す関数を作って、その結果を結合すればいいだろう

412 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:53:00.45 ID:XgHMEnCRd.net]
>>405
深く考えなくていいなら
①2つの表(シート)をそれぞれ参照して作業用のシートAを作る
コード シート 値
101 A 50
102 A 40 
・・・
101 B 60
102 B 100
②シートAをソートする
③シートAの内容を読み込んで質問にあるようなシートBを作る

413 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:12:23.70 ID:EfwMa2qS0.net]
できた!
二重ループでできました。

414 名前:411 mailto:sage [2022/08/18(木) 16:21:20.45 ID:fCi7ElhaM.net]
日別分割関数について補足しておこう
この関数を更に分割すれば、下記のようになるだろう
(1) 開始日時と終了日時の間の日付を全て取得する
(2) 終了日時と開始日時の差を時間単位で求め、結果をHとする
(3) (1) で取得したそれぞれの日付(dとする)について、下記を実施する
(3.1) 開始日時と終了日時の間において、日付dに属する時間が何時間あるかを計算し、結果をhとする
(3.2) 消費量*h/Hを計算し、結果をxとする
(3.3) 日付dと消費量xのペアを分割結果の1レコードとする

ここまで分ければ簡単だろう。もしまだ難しければこのように適宜分割するとよい。

415 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:23:33.57 ID:MNMwm62Z0.net]
初歩的な質問なんだけど、上下一致してる場合だけ転記して行くという場合

1行目は例外として省く処理いれて
cells(r-1,1)=cells(r,1)とかってやってくと、不一致のものが現れた時に一致してた行の最初の値が転記できなくなるんだけどどうしたらいい?

100
100
101
101
102

とかって並びの時に、100の一番上が転記されないとか
102とかも転記されない
上下比較の時の最適解の比較方法を知りたい

416 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:23:56.43 ID:X/mZUHYK0.net]
>>405
結構面倒、前提条件として「表A, 表Bのコードは各々ソートされてる」かつ「表A, 表Bのコードは各々の表内で重複してない」のであれば...
Type T
S As WorkSheet: L As Long: R As Long: C As Long: D As Long: F As Boolean
End Type

Dim TA As T, TB As T
Set TA.S = WorkSheets("表A"): Set TB.S = WorkSheets("表B")
TA.L = TA.S.Cells(TA.S.Rows.Count, 1).End(xlUp).Row: TB.L = TB.S.Cells(TB.S.Rows.Count, 1).End(xlUp).Row
TA.R = 1: TB.R = 1
TA.F = False: TB.F = False
Dim S As WorkSheet: Set S = WorkSheets("結果")
Dim R As Long: R = 1
Do
G TA: G TB
If TA.F And TB.F And TA.C = TB.C Then
S.Cells(R, "A").Value = TA.C: S.Cells(R, "B").Value = TA.D: S.Cells(R, "C").Value = TB.D: TA.F = False: TB.F = False
ElseIf (TA.F And TB.F And TA.C < TB.C) Or (TA.F And Not TB.F) Then
S.Cells(R, "A").Value = TA.C: S.Cells(R, "B").Value = TA.D: TA.F = False
ElseIf (TA.F And TB.F And TB.C < TA.C) Or (Not TA.F And TB.F) Then
S.Cells(R, "A").Value = TB.C: S.Cells(R, "C").Value = TB.D: TB.F = False
Else
Exit Do
End If
R= R + 1
Loop

Private Sub G(T As T)
If Not T.F And T.R <= T.L Then
T.C = T.S.Cells(T.R, "A").Value: T.D = T.S.Cells(T.R, "B").Value: T.F = True: T.R = T.R + 1
End If
End Sub

417 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:34:05.48 ID:EfwMa2qS0.net]
>>416
ありがとぅざいます!
そうなんです
考え出したらこれかなり面倒だなと思って、、

同じような発想かもしれないですが

外のループはA表のコード番号の縦列の値を固定して、
内側ループでB表を縦にコードが一致するまで検知して
一致した場合フラグを立てて、一致したコードの時は一致してるコードの隣に値を転記。
内側ループを抜けた時点でフラグが立っていない場合はBにしか存在しない値なので、A表の最終行以降に転記

って考え方でいけました!



418 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:37:32.42 ID:EfwMa2qS0.net]
あ.A表に転記ではなくてC表ですね

419 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 18:49:57.27 ID:AeknNWbaa.net]
>>411,414
ありがとうございます、そのヒント元に自己解決できました

1. 対象となる期間を配列に格納
2. データを1つずつ0:00で分解、按分は都度[その日の時間/全体の時間]で実施
3. 配列内の一致する日付に割振り
4. 2-3ループ

420 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 20:46:21.25 ID:JMDQexcx0.net]
>>415
102は一致する相手がいないけど、転記される必要があるのかな?
ぱっと思いつくのは

ポインタをrとsの2つを用意してr=1, s=1から始める
1. Cells(s, 1) == Cells(r, 1) の間だけ s を進める。
2. Cells(s, 1) の値が変わったところで
a) s - r > 1 なら Cells(r, 1) を転記しながら s に追いつくまで r を進める
b) s - r == 1 なら転機せずに s に追いつくまで r を進める
3. 1からの手順を表の最後まで繰り返す

421 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 22:39:41.60 ID:MNMwm62Z0.net]
>>420
相手がいない場合も転記です
そのやり方試してみます
単純そうでむずかしい…

422 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 01:11:58.45 ID:OSKKwF+I0.net]
>>415
そこからどういうデータを求めたいんだ?
単に重複データ削除するだけで良い気がするんだが

423 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 07:58:47.24 ID:YEGDOEOJ0.net]
>>422
上下一致してるものだけ足し込んでいくということをしたいです
一致してなくても一個だけのはそのまま転記したい
空白は無視で
単純なコードでいけるかなと思ったら難しくて、、

424 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 09:33:47.59 ID:TD6yT77i0.net]
まずどういう出力か書けよ
頭悪すぎだろ

425 名前:デフォルトの名無しさん [2022/08/19(金) 10:55:40.42 ID:agk3kSn7p.net]
>>424
>>423で説明すているだろ
これで分からないってお前白痴か?

426 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:00:49.57 ID:0SH6JCsd0.net]
>>415の入力例で言うと
100は上下で一致してるから転記する
101は上下で一致するからこれも転記する
>>421の説明だと102単独でも転記する
転記しない入力例ってどんなのよ?

427 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:05:43.32 ID:nezaNaBad.net]
423の足しこんでいくというのは?もう何もわからない



428 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:07:12.98 ID:nezaNaBad.net]
転記?今日の天気?
Excel必要ですか

429 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:32:50.63 ID:LZdSBpbV0.net]
うるせえ!この禿!

430 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 13:14:47.90 ID:aeNJth6k0.net]
まず髪の毛緑に染めてこい

431 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 13:37:04.21 ID:NSoYBxeid.net]
質問する側がおかしいと(どういう結果にしたいかが不明の場合)回答する気も失せるよね上下一致と言われたら
A
B
C
D
ならBを基準にA=BかつB=Cって自分はするんだが違うんだろ?

432 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 16:42:31.05 ID:TM0tepDc0.net]
重複除去したいって解釈してた

433 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 17:14:26.61 ID:OSKKwF+I0.net]
>>423
最終的に欲しい形を書け

エクセルの機能に重複データの除去ってあるのはしってるのか?

434 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 19:41:03.51 ID:LZdSBpbV0.net]
知らないのでわ?

435 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 19:54:20.05 ID:fs7pDiUMd.net]
足しこむとか転記とか何がしたいか意味不明なんだよね
単純にいま記載されている列の値について
1.同じ値が続く場合は最初の一つだけ残す
2.ただし途中にある空白は無視する(1、空白、1は同じ値が続いてるとする)
3.最終的に残した値で詰める または 残した値は別の列なりシートなりに転記する
みたいな事をやりたいのか質問見ただけではわからんのよね
この場合なら検索する行とセットする行を用意すれば簡単にできる話なんだけどね
仕事もそうなんだけど説明が下手な人ってやっぱり仕事もできない人が多い

436 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 20:23:56.98 ID:uBoRK/pGd.net]
足し込むというのが加算という意味であれば必然的に数値ということになるけど、、、

上の行と同じ数値なら足し算する=2倍するってことか?
それとも上と下の行が同じ数値なら現在行と上下の3行の和にするってことか?

なんかいろんな解釈ができる要望なんよね。。。

437 名前:デフォルトの名無しさん [2022/08/19(金) 22:10:12.43 ID:zQKwV5nn0.net]
まぁ重複したデータを足し込むのか削除するのかはさした問題ではない。
ディクショナリやコレクションに元にあった値をキーにして
まずキーと同じ値をキーに該当する値として設定して、
同じキーが次回来たときに無視するか足し込むかすればいいだけの話だからな
最後にそれをシートに展開すればいいだけの話。
そうしとけば足し込もうが重複削除だろうが簡単に対応出来る。
SQLを知っているならSQLでやってもいい。

問題は同じ値が飛び石で来る可能性があるのかということ。
例えば101、101、102、101の順序で来ることがあるのか?
この場合、要件としては「上下で一致しているものだけ足し込む」ということなので上の例で言えば202、102、101と設定されるのが正ということになる。
これは上記した方法でやるのはかえってまどろっこしい。
そうしたら上から舐めてコレクションに値を格納、前回の行と次の行の頭が同じなら無視するか足し込むかすればいいし、値が違うならそのままコレクションに追加すればいい。
最後にそれをシートに展開する。

このように同じ数値が飛び石で来るかで作りがガラッと変わってしまう。せめてそこだけでもハッキリさせてくれれば。



438 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 00:10:31.82 ID:KYv4qV6Cd.net]
もう終わった話なんだと思うけど正直質問する人はこういうデータをいじりたいという事は伝えても
結果としてこういうものが欲しいっていう事を伝える人が少ないんだよね
だからいろんな解釈ができるからその辺もちゃんと情報を伝えてほしいわ

439 名前:デフォルトの名無しさん (ワッチョイ ffda-tEjH) mailto:sage [[ここ壊れてます] .net]
そういうの含めて個人の能力

440 名前:デフォルトの名無しさん mailto:sage [2022/08/24(水) 18:51:09.99 ID:VyM585LM0.net]
Unique関数の引数って二次元配列じゃないとだめなの?

441 名前:デフォルトの名無しさん [2022/08/24(水) 19:20:17.01 ID:lK4e5BLcM.net]
Range型を渡すんじゃダメなの?

442 名前:デフォルトの名無しさん [2022/08/24(水) 20:13:49.71 ID:LO0U8Jrb0.net]
実際に試してみれば答えが出ると思うのだが

443 名前:デフォルトの名無しさん (ワッチョイ 1fce-tEjH) mailto:sage [[ここ壊れてます] .net]
マニュアル読め

444 名前:デフォルトの名無しさん (ワッチョイ 9fda-iK0u) mailto:sage [[ここ壊れてます] .net]
MSヘルプですね~

445 名前:デフォルトの名無しさん [2022/08/28(日) 22:27:57.16 ID:uLwcj+rg0.net]
excel2019
win10

設定シートに各項目を入力させたらそれに応じて別シートに計算結果を入力させるVBAを書いてる途中なのですが、
VBAソースを書いてる途中に設定シートにこんな数値も持たせたい、
入力画面のレイアウトをあれこれ変えたいと行や列の挿入をしたくなってしまうのですが
そうするとVBAソースの方がずれたままになってしまうのですが、シートに挿入をしたら
それにともなって既にかけている部分だけでもソースコードのcellsやrangeの値が更新されてくれたりしないでしょうか?

446 名前:デフォルトの名無しさん [2022/08/28(日) 22:36:45.40 ID:bZvgSFoz0.net]
>>445
参照先は自動更新されない
セルに名前を付けてその名前で参照すればよい

447 名前:デフォルトの名無しさん [2022/08/28(日) 22:37:28.82 ID:z6hd8oqM0.net]
名前付きセル範囲
https://thom.hateblo.jp/entry/2016/07/08/001933



448 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 20:34:19.97 ID:6xba6Hkk0.net]
おまいらが毛がどうのこうので喜ぶがらマジで頭ツルッツルにしてきたぞ

449 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 22:48:42.98 ID:Qu5uun0od.net]
>>445
コレクションに格納するのが攻守最強

450 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 02:50:20.75 ID:Ie2cpGsY0.net]
>>449
そのコレクションの中身はどうやって保守するのかね?

451 名前:デフォルトの名無しさん [2022/08/31(水) 19:22:22.41 ID:QCzzbP6t0.net]
>>448
ツルツルがいいのは下の毛です

452 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 22:52:05.08 ID:q/z2hnkB0.net]
>>451
お、おうw
しかし真夏にはツルッツルもなかなか良いわ涼しい

453 名前:デフォルトの名無しさん [2022/09/01(木) 03:46:18.56 ID:Xg3rwxDQ0.net]
win10
excel2019

Sub y()
Dim st As Range
Set st = Worksheets("参加者").Range("A1:BA80").Find(What:="氏名")
If st is Nothing Then
else
Debug.Print st.Row
end if
End Sub
これをすると"氏名"文字列に一致したセルがrangeオブジェクトで貰えますけど
本当に欲しいのは氏名のx個下のrangeオブジェクトなのです。
氏名のセルと参加者の開始セルの相対位置は固定的です。
氏名はいろいろな名前があるのでマッチングしづらいので氏名で位置を探って取り込んでいます。

rowやcolumnくらいしか使いませんけど、すっきり感としては本当に欲しいのは氏名の開始セルのrangeオブジェクトなのです。

返り値のrangeオブジェクトをずらすということはできますでしょうか?

454 名前:453 mailto:sage [2022/09/01(木) 03:53:25.83 ID:Xg3rwxDQ0.net]
Set st = Worksheets("参加者").Range("A1:BA80").Find(What:="氏名").offset(1,1)
こんな感じで解決しました。
動いてるのはまぐれでしょうか?

455 名前:デフォルトの名無しさん [2022/09/01(木) 06:49:22.79 ID:UMivoEC40.net]
>>453
何やってるかわからんままコピペして動かしてる感をヒシヒシと感じるので
Rangeオブジェクト
Findメソッド
Offsetプロパティ
について理解できるまで解説サイト読んでください

あと、>>445についても回答付いてるんだからなんかリアクションしてください

456 名前:デフォルトの名無しさん [2022/09/01(木) 09:42:20.83 ID:wgtUDrt5a.net]
451
おまわりさんこいつです

457 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 10:01:37.99 ID:Ak8bAeS9M.net]
VIO脱毛する人が増えてる



458 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 10:51:28.10 ID:Xg3rwxDQ0.net]
>>455
何度か書き込もうとしたんですけど、書き込みエラーになってしまっていました。
なんだかレスアンカーが不正とか出てきてたのでわからなくなりました。
レスアンカーをつけちゃいけないみたいな制約?

>>445に回答いただいた方ありがとうございました。
これも書き込めないかもしれませんが。

RangeオブジェクトのOffsetメソッド?は結合セルがやっかいなのですね。
結合セルでない時のエラー処理を加えると結局コードが汚くなっていくジレンマでした。

オブジェクト型がなかなか理解できません。
dim wf as object
set wf = worksheetfunction
とやってもwf.でエクセル関数を使えるようになるわけではないみたいですし。

ありがとうございました。

459 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 11:00:01.20 ID:Xg3rwxDQ0.net]
Function wf() As WorksheetFunction
Set wf() = WorksheetFunction
End Function
こっちで呼び出し短縮は出来ました。初めて使いましたfunction

460 名前:デフォルトの名無しさん [2022/09/01(木) 14:07:42.09 ID:Xg3rwxDQ0.net]
名前付きセル範囲を使うためにnamesコレクションを理解しようとしてるのですが、
activeworkbook.namesをfor eachに入れると現在は1個しか出て来なくて
値が
=#NAME?
こんなのです。エクセルの方から名前の管理を開いてもこの名前は出てきませんし、何も出てきません。
何なのでしょうか?この値は?
なにも設定されてない時の値かと思ってワークシートのあるセルに名前の設定をしみたのですが、
やはりこの値は残ったままでした。
RefersToでもvalueと同じく
=#NAME?

461 名前:460 mailto:sage [2022/09/01(木) 14:14:01.95 ID:Xg3rwxDQ0.net]
わからないまま、vbaから非表示を表示させるコードをコピペして削除しておきました。
こんな名前作った覚えはないですが

462 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 14:38:52.05 ID:nUWOz2Sg0.net]
そっか、うんうん、非表示を表示ね、良かったね

はい次の方

463 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 15:07:23.09 ID:xiyCUJHG0.net]
ニートならロン毛にしろよ

464 名前:デフォルトの名無しさん [2022/09/01(木) 19:17:21.60 ID:Xg3rwxDQ0.net]
Range型と配列の違いが後一歩わからないのですが、
Sheet1にA1=10,A2=20,A3=30,B1=40,B2=50,B3=60....みたいにしてar(2,2)と近い感じにしてます。
Sub Sample1()
Dim ar(2, 2) As Variant
ar(0, 0) = 10
ar(1, 0) = 20
ar(2, 0) = 30
ar(0, 1) = 40
ar(1, 1) = 50
ar(2, 1) = 60
ar(0, 2) = 70
ar(1, 2) = 80
ar(2, 2) = 90
Debug.Print TypeName(ar)
Debug.Print TypeName(Worksheets("Sheet1").Range("A1:C3"))
End Sub
arはvariant型の配列でWorksheets("Sheet1").Range("A1:C3")はrange型のオブジェクトになるんですよね。

感覚的にはどちらも配列を渡している気分なのですが、セル範囲参照のrangeだからrange型オブジェクトになるってだけですか?

465 名前:デフォルトの名無しさん [2022/09/01(木) 19:18:06.47 ID:EeQXBP72d.net]
馬鹿過ぎてやばい奴が来てる

466 名前:464 mailto:sage [2022/09/01(木) 19:23:31.46 ID:Xg3rwxDQ0.net]
for each のinの後に配列をおいても、range型オブジェクトをおいても
同じように中身を取り出してくれるから混乱してしまったのかもしれません。

467 名前:デフォルトの名無しさん [2022/09/01(木) 19:28:08.64 ID:bYXIuDKK0.net]
もし Dim ar(2, 2, 2) As Variant なら3次元の配列としか言いようがない



468 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 20:43:50.82 ID:QMR92n1t0.net]
本人は切実なんだろうけどイマイチ何を理解しようとしているのかが汲み取れない。

とりあえず、シートは二次元配列みたいなものと思えばいいんじゃないかなぁ。
バリアント型の変数に範囲指定したrangeを代入したら配列が出来上がるんだから。。。

って、こういうの説明するのって余計に混乱させそうで怖いのよね。

469 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 22:31:39.49 ID:xiyCUJHG0.net]
なんでそんな事やっているんだろう。。??

470 名前:デフォルトの名無しさん [2022/09/01(木) 23:45:17.73 ID:7Zuj6Csb0.net]
Rangeオブジェクトと配列、全く異質のものなのに同じ代入インターフェースがつかえるのが不思議なのでしょう
女学生は貧困で給食費すら払えないのに上級国民は交通費で200万円貰えるのですから

471 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 00:10:13.04 ID:vXxCvmAd0.net]
>>464
配列には数字しか入っていませんが、
Rangeオブジェクトには数字以外に色や罫線やハイパーリンクなど色々な情報が入っています。というかワークシートのセルそのもの(オブジェクト)です。

472 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 03:22:55.43 ID:XYWvvS0T0.net]
>>464
オブジェクトにはデフォルトプロパティというのがあってな
オブジェクトを参照してるつもりでも、実はそのデフォルトプロパティを参照してるんだよ

Worksheets("Sheet1").Range("A1:C3")はRange型だが、
そのデフォルトプロパティは2次元配列なのだよ

473 名前:デフォルトの名無しさん (ワッチョイ 023e-y80L) [[ここ壊れてます] .net]
ttps://www.tipsfound.com/vba/18014

このコードでcsvファイルをエクセルの指定のシートに取り込めますか?

474 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 07:13:47.06 ID:rviUcujq0.net]
>>473
やってみて聞いてるの?自分でやるのが面倒臭いからとりあえず聞いてるだけ?

475 名前:デフォルトの名無しさん [2022/09/02(金) 07:18:17.22 ID:K+fb6kZO0.net]
最近のレベル低下には目を見張るものがあるな

476 名前:デフォルトの名無しさん [2022/09/02(金) 07:25:48.67 ID:+uzTYabFM.net]
総合相談所で総スカンされた馬鹿だろ

477 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 11:01:00.75 ID:BYdQXtrB0.net]
いや、そもそも何でそんな事やりたいのか??
という質問自体がさ



478 名前:デフォルトの名無しさん [2022/09/02(金) 12:33:00.40 ID:MAC5jHq+0.net]
よそのサイトなんだから作った奴にきけばいいのにと思う今日この頃

479 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 14:51:15.82 ID:BYdQXtrB0.net]
ど正論出ました
終了

480 名前:デフォルトの名無しさん (ワッチョイ 5f3e-NodX) [[ここ壊れてます] .net]
>>476
あれ総スカンだったんですか?
外部データの取り込みでcドライブのファイルを取り込んでいるのに

そのエクセルのファイルを他の人にコピーして渡したら同じ場所にファイルを配置しているのにファイルが読み込めないって聞いただけなのに笑

481 名前:デフォルトの名無しさん mailto:sage [2022/09/03(土) 12:58:16.39 ID:WuOEJ3Bid.net]
あっちでも総スカンだしここでも総スカンなんだからもういいでしょ
レベル低いよあんた

482 名前:デフォルトの名無しさん [2022/09/03(土) 14:11:09.43 ID:fgoOqg3v0.net]
しつこい馬鹿

483 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 02:41:16.33 ID:+4pXrWCU0.net]
向こうの総合相談スレはこのスレと違って厳しい人ばかりだからな。

484 名前:デフォルトの名無しさん [2022/09/04(日) 17:26:08.83 ID:nTptsQZA0.net]
>>483
VBAのスレよりも質問スレは厳しい人ばかりなんですね

485 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 21:22:49.28 ID:+4pXrWCU0.net]
少しでも的外れな質問したら総スカンだからな。
初級者だろうが容赦ないのが向こう。

486 名前:デフォルトの名無しさん [2022/09/04(日) 22:38:27.70 ID:I+EDFKibr.net]
replace関数でワイルドカードを使用してるのですが、
うまく置換していくれないのでなぜですか?

やりたいこと A1セルのKKK1111というデータを2222に変換したい
replace("A1","*" & "K"& "*","2222" )

487 名前:デフォルトの名無しさん (ワッチョイ 07a5-Iguz) mailto:sage [[ここ壊れてます] .net]
REPLACE(文字列, 開始位置, 文字数, 置換文字列)



488 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 23:39:15.09 ID:+4pXrWCU0.net]
優しいなみんな
総合スレだったらフルボッコ

489 名前:デフォルトの名無しさん [2022/09/05(月) 18:43:28.63 ID:8FlTtg5u0.net]
初心者あるあるなんだろうか

490 名前:デフォルトの名無しさん [2022/09/05(月) 22:48:54.81 ID:C53zNTJD0.net]
ありがとうございました。
ユーザー定義型と連想配列を知って少し前進しました。

検索掛けてもなかなかでないので教えてください。
dim i
for i....
使い終わったらiを未定義に戻したいんですが、
宣言の反対?になるような未定義に戻す関数?ステートメント?はありませんか?

491 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 23:44:13.97 ID:ZiXiUX+x0.net]
無いし気にする必要もない

492 名前:デフォルトの名無しさん [2022/09/06(火) 02:21:14.99 ID:xcONMZhZ0.net]
>>490
ちなみに戻したい理由は何?

493 名前:デフォルトの名無しさん [2022/09/06(火) 03:38:48.46 ID:DWdJNYk/d.net]
馬鹿に理由を問う虚しさ

494 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 05:21:21.45 ID:Fb+lfM05d.net]
変数は使い捨てだよVBAの場合

495 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 06:55:14.80 ID:FWLy+pWW0.net]
プロシージャ内で宣言した変数ならプロシージャを抜ければクリアされるしマクロ全体が終了すれば全てクリアされるからあまり気にしない。
privateやpublicで宣言したオブジェクトなら明示的にnothingをsetすることはあるけど、イマドキのPCでメモリ解放もあまり気にする必要はない気もする。
エラーで止まったときを考えると念の為しておくくらいかなぁ。

496 名前:490 (ワッチョイ bf66-bBdM) [[ここ壊れてます] .net]
初心者なのでプロシージャ内で処理の順番を変えたくなる時があります。
使う直前に宣言したいのでプロシージャの初めに宣言は出来ればしたくありません。
コピペでソースコードを入れ替えて処理の順番を変えるとforが1回目とfor2回目が入れ替わってしまう事があります。
だから毎度forを使う前は、foreacheもそうですが、宣言が必要かをプロシージャ内を戻って探します。
forが終わるたびに未定義に出来ればいいなと思ったのは使い終わった変数名が後からかぶっても
使い終わった時点で未定義に戻しておけばエラーも不具合も出ないからです。
他の言語だとあるのであるかなと思ったのです。

497 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 10:03:36.29 ID:Z9J6cI+IM.net]
はい、わかりました



498 名前:デフォルトの名無しさん [2022/09/06(火) 10:56:34.50 ID:MUc/w1ud0.net]
>>496
>他の言語だとある
これ本当?

499 名前:デフォルトの名無しさん [2022/09/06(火) 11:47:55.76 ID:DWdJNYk/d.net]
馬鹿ではなく糖質かな

500 名前:デフォルトの名無しさん [2022/09/06(火) 11:53:04.38 ID:o3g0SSKzd.net]
会社のパソコンでvbsからエクセルvbaを起動させメール本文、添付ファイルを作成し添付、outlookでメール送信をしたいのですがOutlookが起動しません。
エクセルから手動でvbaを起動すると正常に動作するのですが、vbsから起動するとタスクバーのエクセルが点滅し停止します。
特にエラーを吐いている様子はありません。

何か思いあたる部分があればご教示ください

501 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 12:06:14.05 ID:QxRWO4Sk0.net]
漏れの推測だけど、

>タスクバーのエクセルが点滅し
これは、バックグランドで起動しているのでは?

それで、エクセル内のマクロなどが起動しないとか?

502 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 12:18:01.17 ID:iobTnTaB0.net]
>>498
定義済みが未定義になるわけじゃないけど
ブロックスコープとかいうやつだな

残念ながら旧VBやVBAにはない。VB.NETにはあるけど

VBAの一番狭いスコープはプロシジャ
なので、プロシジャの先頭に宣言まとめとけって作法がある

503 名前:デフォルトの名無しさん [2022/09/06(火) 13:03:51.66 ID:BhZhCXYFd.net]
>501
vba自体は動作しております。
手動でvbaを起動するとエクセルが開き添付ファイルなどを作成し、Outlookで送信するのですが
vbsでの起動だと添付ファイルまでは作成するのですが、Outlookが立ち上がらず、タスクバーのエクセルが点滅して動作が止まります。

ネットで調べても事例が出てこず、会社のパソコンなのでシステム管理者に制限をかけられているのか…
何か調べる方法がありましたら教えてください

504 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 13:07:25.60 ID:Z9J6cI+IM.net]
printfデバッグでどこまで動いているか確かめましょう!

505 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 13:13:46.25 ID:Td+5EGNEa.net]
>>496
始めに宣言を書いている方が探しやすいと思うけど
要らなさそうなものはまとめてコメントして確認すればいいわけだし

506 名前:デフォルトの名無しさん (ワッチョイ 07da-oTx6) mailto:sage [[ここ壊れてます] .net]
VBAでメールとか初めて見た

507 名前:デフォルトの名無しさん (ワッチョイ e72f-HH83) mailto:sage [[ここ壊れてます] .net]
>>500
手動で実行できるなら、VBSで起動しているときのユーザとその権限があやしい
つかエラー吐いてないんじゃなくて、ちゃんとエラー捕まえられてないだけだと思うが

あとスクリプト系からのメール送信はいろいろセキュリティ周りでチェックされるかもしれん
とくに会社で管理されてるようなPCなら、ちゃんと管理者に許可とってからやれよ



508 名前:デフォルトの名無しさん (ワッチョイ 2749-DXwO) mailto:sage [[ここ壊れてます] .net]
メール送信用のc#のexeつくって呼び出させるようにしたことならある
あとsendgridAPIよぶの
前者は他にも使い回したな。.NETcoreだった気がするからいつまで使えるやら

509 名前:デフォルトの名無しさん (ワッチョイ 5f01-yqJ9) mailto:sage [[ここ壊れてます] .net]
>>498
あるものもある、例えばPowerShellにはそのものズバリのRemove-Variableなんてものがあったりする

510 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 16:28:13.42 ID:QxRWO4Sk0.net]
>>503
>タスクバーのエクセルが点滅して動作が止まります
バックグランドで起動しているだけじゃ、エクセルのマクロが実行されないのかも

printf デバッグで、どこまで動いているか確かめるべき!
エクセルのマクロの、Outlook の起動コードの前後で、何かを出力すれば?

Outlook の起動前に、端末・ファイルへ出力する
Outlook の起動コード
Outlook の起動後に、端末・ファイルへ出力する

511 名前:デフォルトの名無しさん [2022/09/06(火) 20:05:52.59 ID:D5ckGmEva.net]
動作が止まるのは終了したからかもよ

512 名前:490 (ワッチョイ bf66-bBdM) [[ここ壊れてます] .net]
>>505
なるほど。そういう方もおられるのですね。
EXCEL VBAのプロシージャはあんまり長くしない方がいいよみたいなサイト読んで影響受けてます。
コードの書き方って結構こだわりを持っている方がいるようで、自分はそれに影響を受けやすい方です。
自分もこだわりたい方なんだと思います。

EXCEL VBAを知って、宣言は直前が基本ですよみたいな記事読んで強く影響受けました。
だから使い終わるごとに未定義に出来れば毎度宣言しなおせるからすっきりするのになぁみたいな気持ちでした。
EXCEL VBAとしてはfor やfor eachに使うような変数は先頭宣言にしてやっていこうと思います。

513 名前:デフォルトの名無しさん (ワッチョイ 47ac-DXwO) mailto:sage [[ここ壊れてます] .net]
ちゃんとfunction分けてたら直前でいいけど、
大抵クソデカ関数ひとつか、グローバル宣言祭りだろうからなあ

514 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 20:37:51.18 ID:z3X/Y8zI0.net]
>>512
> EXCEL VBAとしてはfor やfor eachに使うような変数は先頭宣言にしてやっていこうと思います。
とりあえずそれで動くところまで持って行ってコードが固まったらこだわりのコードスタイルにリファクタリングすればいいかと

515 名前:デフォルトの名無しさん [2022/09/06(火) 21:28:56.11 ID:3UeoLADl0.net]
>>512
>他の言語だとあるのであるかなと思ったのです。

他の言語って具体的に何?
答えられない?逃げる?それともまた言い訳?

516 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 21:54:35.94 ID:iobTnTaB0.net]
>>512
個人的に、VBAに限定した話で宣言は直前とかいう記事はあんまり信用できないと思ってる
最近の言語ならそれで良いんだけどね

517 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 22:58:52.94 ID:z3X/Y8zI0.net]
>>515
>>509
煽るならもうちょい知識をつけてからにした方がいい



518 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 23:05:26.43 ID:NuTb9qxy0.net]
あまり複雑化しても辛くなるしな
シンプルにシンプルによ

519 名前:デフォルトの名無しさん [2022/09/07(水) 07:28:44.73 ID:TmSq6TyA0.net]
>>516
どういうこと?
最近の言語と違って
・ブロックスコープがない
・宣言と同時に代入できない
以上VBAの特徴2点を差し引いたとしても、
先頭宣言が直前宣言より優れている所なんかひとつもないと思うんだが

520 名前:デフォルトの名無しさん [2022/09/07(水) 09:01:28.19 ID:l5y/t4MDM.net]
個人的信条を議論するのは無意味

521 名前:デフォルトの名無しさん (アウアウクー MMbb-2Jzk) mailto:sage [[ここ壊れてます] .net]
変数はImmutableにするのが最近の言語でしょ
こうなるもうどこで宣言しようが関係ない

522 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:33:33.73 ID:nObPwJJb0.net]
>>519
まあ>>520に同意しつつ、一番の理由は、
VBAでの一般的なスタイルに反するからなんだが

ブロックスコープがないのに直前で変数宣言するのは、
違うブロックで宣言された変数と宣言が被るリスクが上がるだけなんだが
むしろ直前宣言が優れている点ってどこだよ?

523 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:40:46.55 ID:qgePcMk7a.net]
>>519
同意する
まあ>>516は理由を書いてない時点であまり信用できないと思ってる

524 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:45:10.64 ID:qgePcMk7a.net]
>>522
> 違うブロックで宣言された変数と宣言が被るリスクが上がるだけなんだが
そんなものどこで宣言しても同じだろ

> むしろ直前宣言が優れている点ってどこだよ?
コードを追う時に見える範囲に宣言あれば型とかも分かるだろ

525 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:47:45.63 ID:URQHgzNh0.net]
>>522
・別functionにしない
・設計が出来ない
・順番がコロコロ変わる

こういう場合は直前の宣言がいいんだろうな

526 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:48:48.00 ID:ie60y+bR0.net]
インデックスとはいえ変数を使い回すのはNGなのです!
VBAだとしても許されません!ロボコン0点

527 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:14:29.57 ID:lr2lUZXda.net]
質問でもなく他人のコードの変数をどこに書こうがどうでもいいのに書き方に熱くなる人はバカなんだろうね
まあそういう技術的な部分に関係ないところしか語れない程度が集まるスレなんだろうけどw



528 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:36:38.49 ID:pBpkzzj3a.net]
>>527
そんなに熱くなるなよw

529 名前:デフォルトの名無しさん (スッップ Sd7f-VPUc) [[ここ壊れてます] .net]
>>517
で、答えられずに逃げたのかよ

530 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:55:49.52 ID:qYDBMpOU0.net]
>>529
マジでアホなの?
PowerShellって書いてあるだろw

531 名前:デフォルトの名無しさん [2022/09/07(水) 21:25:08.49 ID:dOhAzb3IM.net]
>>530
へー、shellコマンドと言語の違いがわからない人か
納得

532 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 21:50:42.41 ID:qYDBMpOU0.net]
>>531
PowerShellって結構リッチなプログラム言語ですけど?
頭大丈夫?

533 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 22:25:03.60 ID:GXE70sRqM.net]
シェルとシェルスクリプトは間違えてませんですわー

534 名前:デフォルトの名無しさん [2022/09/07(水) 22:55:46.20 ID:N0bzWtYO0.net]
>>524
そうね。ブロックスコープは確かに便利。
ただ、匙加減の問題にもなるけど
ブロックスコープに慣れるとついつい
単一責任原則の考え方がおざなりになりがちで
密結合なものを作ってしまい易くなる。

なので、あくまで俺はだけど
EXCELのVBAに関してはメソッドや関数の
頭に変数定義を行うようにしている。
それでコードが読み辛くなるようであれば
その時点でリファクタリングの対象になるという考え。

535 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:29:34.28 ID:N0PmJDO50.net]
でも誰も読まないんだよなー

536 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:46:23.08 ID:QgSPv1dJ0.net]
ここの回答者は上級者なんだからVBAの事端から端まで知っていると思っていたんですけど??
なんでこんなに荒れているのですか?

537 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:51:19.61 ID:oCHm3LOdM.net]
VBAで単一責任て
そもそも表計算ソフトで画面やDBモドキ作ってる時点でおかしいと思わないのか



538 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 00:18:03.89 ID:GEpvz+Yp0.net]
知識と人間性には何も関係がないからじゃね

539 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 01:29:45.47 ID:ih3U5PTX0.net]
だって回答者に回れるって事は知り尽くしてるって事なんでしょ?
ちょっと詳しいだけじゃ回答できるはずないもんね?

540 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 01:40:01.52 ID:eb3KVsRH0.net]
>>539
ソースは?
誰の発言?

541 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 04:43:57.30 ID:dSUuwrfW0.net]
>>534
なので、の前後の関係がよくわからん
> EXCELのVBAに関してはメソッドや関数の頭に変数定義を行うようにしている。
それこそ余計蜜結合になるかと

542 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:11:23.79 ID:vw1M88UR0.net]
誰が上級者と認定したん?
ここのカキコに資格試験なんかあるかいな・・・

回答が使えるかどうか、正しいかどうかが全てじゃ。

543 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:33:16.02 ID:13BgqVgC0.net]
どこで宣言するか問題って、画面上部をスクロールせず固定出来るようになれば解決するんだろうな。
エクセルは出来るんだから、VBAの画面も出来るようにして欲しいものだ。

544 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:54:06.36 ID:9KZ4CtoQa.net]
>>543
VBEは昔ながらのUIなので垂直スクロールバーの上部を下にドラッグすると同一オブジェクトコードの水平分割表示ができるけれど

545 名前:デフォルトの名無しさん [2022/09/08(木) 08:07:26.88 ID:YfOXyicz0.net]
>>541
分かり辛かったかな?
平たく言うと変数が何に使っているか分かり辛くなるような長いコードをひとつの関数やメソッドに書くなということ。

そもそもひとつの関数やメソッドにはひとつの役割だけ持たせるべきで、そうした場合、変数が何に使ってるか分からないくらい長くなること自体あまりないし、
それで長くなるようであればそもそもの作りがおかしいのでリファクタリングの対象とする、ってことなんだけどね。

546 名前:デフォルトの名無しさん (アウアウウー Sa8b-Ro21) [[ここ壊れてます] .net]
VB/VBA/ExcelもAccessもOfficeごと窓からポイッ

547 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 10:06:01.26 ID:dSUuwrfW0.net]
>>545
> 平たく言うと変数が何に使っているか分かり辛くなるような長いコードをひとつの関数やメソッドに書くなということ。
それ変数の宣言位置とは違う話だろ
まあ先頭に変数宣言するメリットを説明できないならいいや、バイバイ



548 名前:デフォルトの名無しさん (ワッチョイ 5f4f-ozIc) [[ここ壊れてます] .net]
>>547
なんで?
どうせ同じ関数内で同じ名称の変数なんて作れないんだから
全部纏めて同じ位置にあった方が「この変数はこのシチュエーションのときにこう言った意味で使う」とか命名し易いじゃん。

使ってる変数名を再宣言しようとして「あ」となることもないし、
同じ変数をバカみたいに使い回して本当は値変えると不味かったのに変えちゃったりとかアホなことも減るよ。

549 名前:デフォルトの名無しさん (ワッチョイ 5f4f-ozIc) [[ここ壊れてます] .net]
ま、そもそもそんなこと気にするくらい長いコード書いちゃいけないんだけどね。
そちらのレベルに合わせて話してもそれだけのメリットはあるよ。

550 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 13:19:53.66 ID:E2yDW5TJ0.net]
Wordがどうしようもなく使いにくいので、
Excel VBAで代わりのツールを作りたいと思います。
こんな考え方は邪道でしょうか?

551 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 13:50:27.43 ID:N6XG++JQ0.net]
WordVBAを何故つかわない?
マウロ記録がないOutlookVBAやPowerpointVBAなら一瞬気持ちがわかるが

552 名前:デフォルトの名無しさん [2022/09/08(木) 14:17:07.18 ID:Sm7a3fWy0.net]
loopのカウンタを使用後に消さないと
順番入れ替えたらバグるとか気にする初心者にはvba向いてないと思う

553 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 16:06:28.64 ID:e4Jhfn6X0.net]
ワードにできることはエクセルでほぼ出来るからワードの使いかた忘れてしもた
しかし困ったことはない

554 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 17:02:48.44 ID:dSUuwrfW0.net]
>>548
> 全部纏めて同じ位置にあった方が「この変数はこのシチュエーションのときにこう言った意味で使う」とか命名し易いじゃん。
コボル臭が... w
まあ使ってる近くにあれば宣言なども簡単に確認できるメリットより命名のメリットを重視する人もいるんだね

> 使ってる変数名を再宣言しようとして「あ」となる
んだから
> 同じ変数をバカみたいに使い回して本当は値変えると不味かったのに変えちゃったりとかアホなことも減るよ。
なんてなるわけないと思うけど?

555 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 19:47:18.35 ID:wUuMBq/Ad.net]
Excel → Markdown → Word アウトライン変換のマクロを作れば大分マトモになる予感
Excelの列で見出しを識別する感じで

556 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:50:29.07 ID:yQKHhevv0.net]
intersect( activecell.ListObject.HeaderRowRange,activecell.EntireColumn).Address

テーブル上にアクティブセルがあり、そのセルの列ラベルのアドレスを調べたく
こんなのを書いたのですが、もっと他にイケてる書き方はないでしょうか

557 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 10:48:25.59 ID:+u60WJ7w0.net]
activeCell.End(xlUp).Address は?
上に隣接する別のテーブルがないことが条件だけど



558 名前:デフォルトの名無しさん [2022/09/10(土) 15:51:20.36 ID:qRafw5tCp.net]
>>557
それだとテーブルが1行目開始でなくて
テーブルの項目名の部分にアクティブセルがあった場合は
テーブルから離れた位置にカーソルが行ってしまうな

559 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:14:19.08 ID:W9G67fQJ0.net]
バイナリデータの書き込みについて質問です。
hello という文字列をいったんバイナリにしてファイル書き込みするような
プログラムを書いているのですが、書き込みすると
h e l l o
というように変なゴミが入ってきます。
vbaではバイナリデータの書き込みは完全にはできないということなのでしょうか。

該当コード
https://ideone.com/MDI6yW

560 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:15:18.73 ID:W9G67fQJ0.net]
書き込みすると変なゴミデータが見えなくなってしまいましたが、要するに
正確に半角英数字でhelloという文字が再現できないのです。

561 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:27:32.82 ID:PnV//sAoa.net]
>>560
どういう内容なのかダンプして確認しないのかい?

562 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:41:57.90 ID:yPB6Wd0g0.net]
>>559
Option Explicit
Sub main()
  Dim bs(4) As Byte
  bs(0) = Asc("h")
  bs(1) = Asc("e")
  bs(2) = Asc("l")
  bs(3) = Asc("l")
  bs(4) = Asc("o")
  Dim fn As Integer: fn = FreeFile
  Dim fpath As String: fpath = "C:\指定のパス\output.txt"
  Open fpath For Binary As #fn Len = 1
  Dim i As Integer
  For i = LBound(bs) To UBound(bs)
    Put #fn, , bs(i)
  Next i
  Close #fn
End Sub

563 名前:559 mailto:sage [2022/09/11(日) 01:50:58.58 ID:W9G67fQJ0.net]
>>562
for each で受ける変数をvariant型にするとうまくいかんということですか?
open の変数にLen=1(1バイトごと)っていれられるんですね。

564 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:53:10.28 ID:yv0WXRwp0.net]
>>559
説明はちゃんと読もう
vbaはかなりゆるゆる言語なので、なるべくvbaにあわせたコードにしたほうがいい
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/put-statement

>書き込まれる変数が 数値型の Variant である場合は、Put により、Variant の VarType を識別する 2 バイトが書き込まれた後に、変数が書き込まれます。
こんなもん追いかけてられんよ
ステートメントは極力使わず、関数にした方がいいと思う

もう少し言うと、実現したい事を直接聞いた方がいい。
vbaでバイナリとかめんどくさすぎて誰もやってないので、
できるかどうかなんてあんまりみんな分かってない

>>561
してもあんま意味ないだろ

565 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:05:46.07 ID:yPB6Wd0g0.net]
>>563
Len = 1 にしても無駄
あと、EachはVariantしか使えない

>>564
ところがバイナリダンプしてみると1文字あたり2バイトしか書き込まれてないんだよな
その説明の通りだと3バイトずつ書き込まれるはずなのに

566 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:07:03.03 ID:W5Eoe6lQa.net]
>>564
今回はもう結果が出ているけれど、入出力を行ったら確認しないのか?
出力結果から意図するものとどう異なるかによって予測できる場合もあるだろ

567 名前:559 mailto:sage [2022/09/11(日) 02:11:34.10 ID:W9G67fQJ0.net]
>>564
正直説明一々読むの大変なのでここで聞いてそのあたりをつけようと思ってます。

>ステートメントは極力使わず、関数にした方がいいと思う
ちょっとここがよくわからないんですがどういうことですか。

>もう少し言うと、実現したい事を直接聞いた方がいい。
vbaの練習のためにとりあえずbase64エンコーディングを実装しようとしてました。
エンコーディングはできました。デコードでつまづいて格闘してましたが、デコードもとりあえずできました。
つぎは、bmpファイルを読み込んで1x1pixcelに縦横絞ったセルのシートに画像表示させるとか
やろうと思ってます。



568 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:12:49.77 ID:yv0WXRwp0.net]
>>565
3バイトずつだぞ
https://i.imgur.com/Um3HyuV.png

569 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:19:41.47 ID:yv0WXRwp0.net]
>>567
結局やりたいことはライフゲームとか、画像処理だろう
vbaは、事務処理特化なんだ。本当にやめたほうがいい。

vbaでクリエイティブな事をやろうとすると、めちゃくちゃ遅い
入出力用のセルがすごく見やすいのはわかるんだけど、別言語でやったほうがいい
具体的に言うとC#かvb.netがいい。
jsならそのままアプリにも移行できる

570 名前:559 mailto:sage [2022/09/11(日) 02:24:11.91 ID:W9G67fQJ0.net]
とりあえず入門したいんで、アルゴリズムわかるやつ実装してるだけなんであんま考えてない。
最終的には機械学習実装できりゃいいなと思ってるんで、bitmap表示実装できたら
vbaでそこまでやるレベルになるかなと。

571 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:44:48.34 ID:+Dglx5gI0.net]
vbaの使い方間違ってますよ

572 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 11:47:30.27 ID:scHPWuyOa.net]
他人が何をやろうと勝手なんだから質問にこたえないなら放置すればいいと思うけど
説教野郎って減らないよね

573 名前:デフォルトの名無しさん [2022/09/11(日) 13:01:03.57 ID:qfkrXmQcd.net]
>>567

>正直説明一々読むの大変なのでここで聞いてそのあたりをつけようと思ってます

死ね

574 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 13:48:26.08 ID:4omWB5g70.net]
いや、普通に頭くるだろ?
ダメダメな使い方してると

575 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 17:18:35.58 ID:9MrulJbSd.net]
>>569
ライフゲームってなんなのかグーグルで検索したら
結果ページ上で勝手にライフゲームが始まってたわ
さすがグーグル

576 名前:デフォルトの名無しさん [2022/09/11(日) 18:42:32.58 ID:+bJdyqft0.net]
>>575
気づいたときにはライフがゲームオーバーになってるよ

577 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 20:43:41.22 ID:yPB6Wd0g0.net]
本当だ
ブラウザの背景でライフゲームが動いてるw
無駄な機能多すぎるだろGoogle



578 名前:デフォルトの名無しさん [2022/09/11(日) 22:06:38.09 ID:mrmcBHlY0.net]
ttps://excel-ubara.com/excelvba5/EXCELVBA228.html
エクセルの神髄さんのところにあるクイックソートの引数について質問です
lngMinとlngMaxを必ず指定しないといけないようなのですが、
どんな数字を入れればいいのですか?

 vBase = argAry(Int((lngMin + lngMax) / 2))
こうなっていて、argAryインデックスの2倍を超える数値は入れられないようです。
インデックスとしての真ん中であるなら関数側でuboundとかlboundとかから計算すればいいように思いました。

バブルソートやインサートソートと違ってイマイチやってる事がわからないので、
lngMinとlngMaxの引数にいれるべき数値がわかる方おられましたら教えてください。

579 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 22:37:51.72 ID:3GTYFVAp0.net]
>>578
配列のうちでどこをソートするか指定できるようになってるんじゃないですかね

580 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 22:42:49.09 ID:6zTUjY+M0.net]
>>578
ソートしたいレンジの最初と最後のインデックス
クイックソートは最初にピボットを決めてそれより小さいものをピボットより前に、大きいものをピボットの後ろに移動して、ピボットの前の区間と後ろの区間をそれぞれクイックソートする方法を繰り返す

ピボットの決め方は色々あるけど、その人は配列の真ん中のオブジェクトを選んでるだけ。ランダムに選ぶと平均的には最も良い結果が得られるけど、もうひと手間かかる

581 名前:デフォルトの名無しさん mailto:sage [2022/09/12(月) 01:30:49.61 ID:0s0pxnwOM.net]
ユーザーフォーム内のコマンドボタンではfunctionの呼び出しはできない仕様でしょうか?
似たようなコードのボタンがあり、特定ブックを取得するための同じコードを全部のボタンに書いています
ごちゃごちゃしてしまっているのできれいにしたかったのですが、functionが呼び出せず変数が空でエラーになってしまいます

582 名前:デフォルトの名無しさん [2022/09/12(月) 07:39:53.33 ID:STPpGgy+0.net]
>>581
呼び出し出来るよ。そのエラーになったコードをここに書いてもらえれば原因がわかるかと。

583 名前:デフォルトの名無しさん [2022/09/12(月) 11:53:11.04 ID:fWVKyvtQa.net]
sub から呼ぶとか

584 名前:578 mailto:sage [2022/09/13(火) 09:42:49.11 ID:g8hgly2P0.net]
>>579
やってみたら確かに!驚きです。
>>580
クイックソートって発明品みたいなものですよね。
人間が手動で並べ替えても慣れる程にクイックソートみたいなやり方が高速になっていくんですかね。

皆さんありがとうございました。

585 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 10:05:15.02 ID:kJFB2T9s0.net]
いえいえ

586 名前:デフォルトの名無しさん [2022/09/13(火) 23:06:23.52 ID:m4C/g6mCM.net]
>>582
フォームが3階層くらいありますが

1.モジュールからフォームの呼び出し
Sub commentForm()

rowBtn = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
colBtn = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column

大分類.Show vbModeless

End Sub

587 名前:デフォルトの名無しさん [2022/09/13(火) 23:09:43.50 ID:m4C/g6mCM.net]
すみません、1つ目フォーム呼び出しのモジュール内に以下のコードがあります
Public ShIndex As String

2階層目で3つの大分類の選択

2.分類選択
Private Sub CommandButton1_Click()

'コマンドボタンのタイトル反映 ※エクセルのセルを反映させています。
中分類.CommandButton1.Caption = Worksheets("2-1").Range("C1").Text
中分類.CommandButton2.Caption = Worksheets("2-2").Range("C1").Text
中分類.CommandButton3.Caption = Worksheets("2-3").Range("C1").Text
中分類.CommandButton4.Caption = Worksheets("2-4").Range("C1").Text
中分類.CommandButton5.Caption = Worksheets("2-5").Range("C1").Text

中分類.Show vbModeless

End Sub



588 名前:デフォルトの名無しさん [2022/09/13(火) 23:11:31.11 ID:m4C/g6mCM.net]
3.さらに次の分類へ

Private Sub CommandButton1_Click()

ShIndex = "2-1"

'コマンドボタンのタイトル反映 ※エクセルのセルを反映させています。

中分類1.Caption = Worksheets(ShIndex).Range("C3").Value
中分類1.CommandButton1.Caption = Worksheets(ShIndex).Range("D3").Value
中分類1.CommandButton2.Caption = Worksheets(ShIndex).Range("D7").Value
中分類1.CommandButton3.Caption = Worksheets(ShIndex).Range("D11").Value
中分類1.CommandButton4.Caption = Worksheets(ShIndex).Range("D15").Value

中分類1.Show vbModeless
End Sub

589 名前:デフォルトの名無しさん [2022/09/13(火) 23:36:32.69 ID:m4C/g6mCM.net]
4,最終の選択ボタン
コメントアウトの範囲内をfunction(wbSerch)として、値を返して変数を使用したいです
Private Sub CommandButton1_Click()
Dim wbRepName As String
'########## ここから ##########
Dim i As Long
Dim wb As Workbook
Dim wbFullPath As String
For i = 1 To Workbooks.Count
Set wb = Workbooks(i)
If wb.FullName Like "*検索ワード*" Then ' * *に挟まれた文字を含むブックを検索する
wbFullPath = wb.FullName
Exit For
End If
Next
Dim pos As Long
pos = InStrRev(wbFullPath, "\")
If (pos > 0) Then
wbRepName = Right(wbFullPath, Len(wbFullPath) - pos)
End If
'########## ここまで ##########
Dim rowRep As Long
rowRep = Worksheets("シート名").Cells(rowButton, "Q").Value
Dim num As Long
num = 1
If Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 1, "H") = "" Then
Workbooks(wbRepName).ActiveSheet.Range(Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 1, "H"), Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 2, "H")) = _
Worksheets(ShIndex).Range(Worksheets(ShIndex).Cells(3 + (num - 1) * 4, "E"), Worksheets(ShIndex).Cells(3 + (num - 1) * 4 + 1, "E")).Value
End If
Workbooks(wbRepName).ActiveSheet.Range(Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 4, "H"), Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 7, "H")) = _
Worksheets(ShIndex).Range(Worksheets(ShIndex).Cells(3 + (num - 1) * 4, "F"), Worksheets(ShIndex).Cells(3 + (num - 1) * 4 + 3, "F")).Value
End Sub

590 名前:デフォルトの名無しさん [2022/09/13(火) 23:37:53.43 ID:m4C/g6mCM.net]
コードをアップする際に一部書き換えで変数が微妙に違うのは許してくださいw

591 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 01:24:17.40 ID:jzWlgqKP0.net]
>>589
大量のコード張るなら、どっかコード張るサイトあるからそこ使ってくれ

>コメントアウトの範囲内をfunction(wbSerch)として、値を返して変数を使用したいです
やれば良いとしか
自分でやって動かなかったっていうコード出せよ
エラーが出たならエラー内容も

Functionが呼び出されないんじゃなくて、呼び出したけど値を返してないか
返された値をちゃんと受け取ってないんじゃないかと予想したがな

592 名前:デフォルトの名無しさん [2022/09/14(水) 05:04:23.30 ID:Pxkwm+eH0.net]
>>589
色々気になるところばかりですが、Functionだけについていうと

Public Function プロシージャ名() As String
'処理
プロシージャ名 = ファンクション内で作成した文字列
End Function

という感じで作って、呼び出す側は下記で

wbRepName = ファンクション名

593 名前:デフォルトの名無しさん [2022/09/14(水) 08:09:29.31 ID:wHV8fEyKd.net]
>>592
ありがとうございます
やっぱりそれでいいんですよね
とりあえず動かないのは困るので、関数を呼び出すコードは削除してしまったのでまたやり直してみます

適当にネットで検索して継ぎはぎしているのですが、これはやめた方がいいみたいなところがあれば教えていただけると

594 名前:デフォルトの名無しさん [2022/09/14(水) 08:09:41.99 ID:wHV8fEyKd.net]
>>592
ありがとうございます
やっぱりそれでいいんですよね
とりあえず動かないのは困るので、関数を呼び出すコードは削除してしまったのでまたやり直してみます

適当にネットで検索して継ぎはぎしているのですが、これはやめた方がいいみたいなところがあれば教えていただけると

595 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 10:47:45.73 ID:DQiHAQaU0.net]
>>594
ネットで継ぎはぎはやめたほうがいい

596 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 14:30:03.63 ID:AS+oyxbj0.net]
継ぎはぎっていちばんやってはダメな事でしょ
不具合でたら修正困難

597 名前:デフォルトの名無しさん (スプッッ Sd0a-JgIN) [[ここ壊れてます] .net]
>>594
お前みたいな奴がVBAを使うのはやめた方がいい



598 名前:デフォルトの名無しさん (ブーイモ MM3e-lqbG) [[ここ壊れてます] .net]
それな

599 名前:デフォルトの名無しさん (アウアウウー Sa21-bmfI) [[ここ壊れてます] .net]
ネットの情報をうのみにするのはよくない

600 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 15:23:36.39 ID:mWSu9Hj1M.net]
特にここの奴らの言うことなど……

601 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 16:32:30.56 ID:AS+oyxbj0.net]
このスレも含めてネットをなんでもかんでも鵜呑みにしないように。

602 名前:デフォルトの名無しさん [2022/09/14(水) 20:19:10.06 ID:qlFB5bFT0.net]
むしろガンガンコードのコピーでも継ぎはぎだらけでも何でもやれ
それで痛い目を見れば二度とやらなくなるだろう
ただし、他の人に迷惑を掛けない範囲でな

603 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 20:25:13.51 ID:tyPb8uvVM.net]
継ぎ接ぎでもなんでも動きゃいいよVBAなんて

604 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 22:09:32.51 ID:LR6kMMNU0.net]
どんなにひどいコードを書こうが仕事は結果がすべて
過程を見て部分点がもらえるのは高校まで

605 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 23:32:37.08 ID:XFOFR3Sy0.net]
ひどいコード書いて、エクセルに殴られたら嫌だなあ

606 名前:デフォルトの名無しさん [2022/09/15(木) 02:24:16.54 ID:mZ1kOEzbd.net]
>>604
馬鹿はメンテナンスのことを考えない
こういう馬鹿がいるからVBAが禁止の会社が出てくる

607 名前:デフォルトの名無しさん [2022/09/15(木) 07:02:34.29 ID:K2oLP0MfM.net]
と、馬鹿が申しております。



608 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 07:47:29.25 ID:p0uH79QOd.net]
VBA禁止はメンテがどうのこうのじゃなくて
スキルが低い人間が酷い結果をもたらすコードを書いてしまうからじゃね
下手に書くと他人の労働の成果が一瞬にして無に帰すからね

609 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 08:13:47.40 ID:V+/rW9Cpd.net]
そもそもエクセル側でVBA使ってごちゃごちゃやる職場がセンス無い

エンジニアが管理画面を作ってVBAでやってた処理をそっちでやって、事務系の人は管理画面からcsvを落としてそれをまんま使うぐらいが良い

610 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 08:15:36.60 ID:HISUe1p20.net]
ほいきたばーかばーか

611 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 08:16:33.94 ID:HISUe1p20.net]
CSVって発想がだめだね
プロは引用符も不要になるTSVを使う
うんこ

612 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 08:20:49.72 ID:tsRCCw+k0.net]
いや事務員にはcsvがちょうどいいよ
tsv開けませ~んとか言われるだけ
もっと目線を合わせろ技術キモオタ

613 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 10:16:19.88 ID:HISUe1p20.net]
TSVはメモ帳で開いて全選択のコピペでシートに貼り付けできるんだよ
見事に馬鹿が露呈したな

614 名前:デフォルトの名無しさん [2022/09/15(木) 11:34:27.47 ID:9BPOZrDw0.net]
いやいや
そこは用途に合わせようよ
PDFやEXCEL出力した場合が良い場合もあるよ

615 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 14:52:36.98 ID:5XNYG1220.net]
なんで事務員がエラーの対処法を知らないんだよ。。
毎日いじってるから一通りの対応はできるだろ?

616 名前:デフォルトの名無しさん [2022/09/15(木) 16:19:16.15 ID:9BPOZrDw0.net]
エラーの対処法「システム部にお問合せ下さい。」

617 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 19:11:05.38 ID:5XNYG1220.net]
そんなのExcelできる事務員じゃないわ!



618 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 19:27:19.21 ID:2CSrOwDy0.net]
最低限のことしかできないって人結構いるけどな

619 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 19:44:47.37 ID:bsuDXGPV0.net]
ボタン押してるだけの事務いるいる。

620 名前:デフォルトの名無しさん [2022/09/15(木) 20:05:30.90 ID:/Qo8z/Hb0.net]
ボタンの押し方で仕上がりが変わる。
優秀な事務員はボタンの押し方が素晴らしい。
日本の技術は世界一。

621 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 20:17:03.66 ID:QyIKtajFH.net]
>>608
いいえ、コードは汚いしドキュメントを残さないので、便利であってもレガシーとなってしまうからですよ

622 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 22:23:17.31 ID:5XNYG1220.net]
事務員=Excelを極めている

623 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 22:31:56.27 ID:QsPmWhIy0.net]
VBA のファイル・テキスト処理などは、Ruby に比べて、圧倒的に可読性が悪い。
作った瞬間から、修正できない産業廃棄物となるw

だから、常に廃棄して新規開発しているw

624 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 00:12:03.43 ID:vQLtnuER0.net]
VBAで複雑なものを作ろうという思考がおかしい
適当に組んで動きゃいい程度のスクリプトだろ

625 名前:デフォルトの名無しさん (ワッチョイ 5d79-VPVD) mailto:sage [[ここ壊れてます] .net]
VBAに飽きたらVBSがいいよ
VBAの枷から開放される

626 名前:デフォルトの名無しさん (スッププ Sd0a-vfPx) mailto:sage [[ここ壊れてます] .net]
>>621
いいえ、レガシーとなることの問題は認めるけど、それは禁止になる理由とはならないわ

627 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 02:37:02.68 ID:l4bz3k9Q0.net]
他人がどんなに良いコードを書いてあろうが、容赦無く切り捨ててイチから書き直すのがプログラマーだと聞いたからよ



628 名前:デフォルトの名無しさん [2022/09/16(金) 04:32:30.78 ID:UN95gjXqd.net]
>>627
他人から聞いたことを鵜呑みにする馬鹿

629 名前:デフォルトの名無しさん [2022/09/16(金) 09:26:48.43 ID:jiIjsvyj0.net]
そもそもなんだけど
どんなPG言語使ったって綺麗に書く人は綺麗に書くし
ぐちゃぐちゃにする人はぐちゃぐちゃにする

630 名前:デフォルトの名無しさん [2022/09/16(金) 11:41:36.71 ID:eDTruZ7Ya.net]
だからほっとけばいい
自分の担当部分だけ直す

631 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 13:52:21.47 ID:Zuqq5jJMd.net]
自分の書くコードと自分に影響する人が書くだけ気にすればいいのに
無関係の人が書くコードなんてきたなかろうがどうでもいいのにな

632 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 20:53:11.37 ID:IL7FnXUn0.net]
>>627
プログラマーはプログラムを書く人だし、設計すればエンジニアだし、営業や事務処理をすることもあるよ
会社員ならわかると思うが他人のコードは他人の給料、自分のコードは自分の給料になるってわかるよね?

633 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 00:16:02.34 ID:lfSciaka0.net]
ならねぇよ。
コード書くだけで給料貰えるとかいつの時代だよ?

634 名前:デフォルトの名無しさん (スップ Sd3f-w3i5) [[ここ壊れてます] .net]
下請けの下請けのそのまた下請けの派遣だろ

635 名前:デフォルトの名無しさん [2022/09/17(土) 14:40:46.13 ID:P15Vbqti0.net]
書けないでコピペするやつのひがみw

636 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 16:20:56.81 ID:93E6/MjHa.net]
コピペばかりのヤツってある意味恥ずかしく無いのかや?
知識ありませーん!
あるのはコピペのスキルだけです!
と、言っているようなモノだぜ。

637 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 18:06:13.42 ID:T834+5z1M.net]
コピペを極めるとオブジェクト指向になるのかもしれんな



638 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:26:19.25 ID:eUUvOszSM.net]
オブジェクト指向って奥深いな

639 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:30:59.86 ID:P15Vbqti0.net]
コードのコピーじゃなくアプリをコピーして販売したら違法だからな

640 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:39:13.29 ID:lfSciaka0.net]
でも現実はコピペ野良マクロ職人が各職場に溢れているんでしょ?

641 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 21:30:27.81 ID:c/Rfax+qa.net]
何もかもは覚えられんからそりゃみんな多少はコピペするでしょな。
問題はちゃんと意味わかって使いこなして、修正や変更の対処ができるかどうか。

642 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 21:33:47.44 ID:VC1vunq70.net]
アマチュアはコピペと卑下するけど
プロは既存コードの利用と言って車輪の再発見で悦んでいる給料泥棒はクビにする

って誰かが言ってた

643 名前:デフォルトの名無しさん [2022/09/17(土) 23:02:08.58 ID:Q8wI91eUd.net]
>>642
参考にするのとコピペは違う
お前、>>627の馬鹿だろ

644 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 23:46:26.93 ID:lfSciaka0.net]
>>643
そうやってすぐ他人と同一人物と決めつけるヤツの方が余程バカだと思うけどな。
あ、思い込み癖のある病気かゴメンゴメン。

645 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 05:37:23.90 ID:kct9LvbO0.net]
とあるアルゴリズムはコピペして使ったな

646 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 06:53:23.17 ID:6BtvF8DRa.net]
アルゴリズムは脳内コピペで使ってる
でないと例えばクイックソートなんて一生思いつかんし

647 名前:デフォルトの名無しさん [2022/09/18(日) 08:41:21.39 ID:flQCTRcU0.net]
参考という意味でならコピペすることはあるね。
訳も分からずただ貼り付けて使うのは論外だと思うけど。



648 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 10:16:08.09 ID:Nn59gXvs0.net]
gitやらスニペットやらの今時機能たちを使う試みはよく見ますが
皆さんはどうされていますか

649 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 10:25:50.10 ID:XVqHa/Kgd.net]
>>648
VBAの使用を必要最小限に留める

650 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 11:33:12.72 ID:Nkc7aKdEd.net]
回答の出なくていい話題ばかりでレスが増えてうんざりだな

651 名前:デフォルトの名無しさん [2022/09/18(日) 13:38:06.64 ID:KpBP36NGa.net]
VBAはオワコン
excelもオワプリ

652 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 13:39:06.35 ID:RKuP+gWA0.net]
>>650
そして一番の問題はそれなのにお前が来て文句を書きなぐることか

653 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 15:31:19.98 ID:umLTL+l4M.net]
>>651
代替ソフトは?

654 名前:デフォルトの名無しさん [2022/09/18(日) 16:13:20.55 ID:wwX2JCe10.net]
VBAと他言語できる人にしつもん
今までVBAしか知らなくていま他言語勉強してます
VBAだったらエクセルのシートに書いとけば良かったデータとか
一体どこに書いとけばいいのかしら
プログラム内の配列とかじゃ電源切ったら消えちゃうでしょう
やっぱデータベースソフトとか別にいるの?
言語はPythonとC
記録したいのは株価の過去データとかです

655 名前:654 mailto:sage [2022/09/18(日) 16:25:19.20 ID:wwX2JCe10.net]
ちなみにSQLとかあるのは知ってますが
数千行程度のデータでもそんなの使わなくちゃいけないのでしょうか
また別に勉強しなくちゃなんないし、面倒くさい
もっと楽な方法ないもんかと(´・ω・`)

656 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 16:34:05.92 ID:K8Zbj7cX0.net]
データベースの導入が敷居が高く億劫と思うのならば
Pythonから慣れているexcelファイルを操作すればよい
そしてプログラムを組んでいるうちにいろいろ面倒で非効率である感じ
データベースの素晴らしさに気づいたときにデータベースを始めればよい

確かにpythonとデータベースを同時に学習するのは大変だよね

657 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 16:45:16.35 ID:aJoH8T5Ea.net]
>>655
> もっと楽な方法ないもんかと(´・ω・`)
はい、解散!



658 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 16:46:45.71 ID:Ufv82Dax0.net]
>>654
VBAで作ったのをGoogleスプレッドシートに移行しつつある。
シートを複数人で同時参照できるとかメリットも多い。

659 名前:デフォルトの名無しさん [2022/09/18(日) 16:47:16.95 ID:si+E4x/dd.net]
csv,tsv,xml,データベースとか色々あるだろ
そういうのが難しいと思うならやめとけ

660 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 17:54:45.16 ID:69Jy4am90.net]
>>654
Python のオブジェクトとしてデータがもう手元にあるなら pickle でそのままディスクに残せる。もしくは csv か json に出力するか
データベースでもsqliteならサーバー立てる必要もない

661 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 17:57:42.22 ID:qB0Seojna.net]
>>651
そう
そしてお前らもここも終わり

~終了~

662 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 18:49:48.79 ID:Nkc7aKdEd.net]
>>654
「とか」に何が含まれるかしらんけどその程度のデータならDBなんて使わなくても
今まで通りExcelブックでもいいし、テキストファイルでもなんでもいいのでは
今時の言語(ツール)ならそれぞれのデータにアクセスするライブラリもあるから
質問にある内容だけなら言語なんてなに使っても問題ない

>>655
自分ができる中で楽な方法を探すならまだしもできないことだらけで楽な方法なんてないんじゃない
お金があるなら外注で作ってもらえば楽かもね
世間にあるIT企業はそういうもんだし

663 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 19:07:54.85 ID:N1Q6b8hc0.net]
世の中は金あるヤツが強い

664 名前:654 [2022/09/18(日) 19:53:45.66 ID:wwX2JCe10.net]
皆々様がたありがとう
とりあえず>>656氏の方針でいく

>>657
君はなにもわかっていない
他の商売は知らんがプログラマーの場合
「面倒くさい、なんか楽な方法ねえかな?」からスタートする
Zed Shawがそう言っている

665 名前:デフォルトの名無しさん [2022/09/18(日) 19:55:06.18 ID:si+E4x/dd.net]
はい、また他人の言葉を鵜呑みにする馬鹿でしたとさ

666 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 20:11:40.98 ID:/3elu/X80.net]
>>664
お前なにを勘違いしてるのか知らんけどプログラマーは
「楽をするためには苦労をいとわない」
という生物だぞ
単に楽をしたいなら>>662が言うように外注しろよw

667 名前:デフォルトの名無しさん [2022/09/18(日) 21:07:19.77 ID:a87PubfG0.net]
んなわけない。
そういうのは、安月給でヤリガイ搾取されてるような交渉力のないゴミムシ。



668 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 21:30:30.41 ID:N1Q6b8hc0.net]
このスレを含めてインターネットを鵜呑みにしてはいけません!

669 名前:デフォルトの名無しさん [2022/09/18(日) 21:53:06.97 ID:oVIBC1f90.net]
>>655
vba、C#、python、web系色々と勉強してきたけど、
単純なデータの入出力だけならエクセルvbaがダントツで一番楽

超絶高機能なエクセルってものがあるのにわざわざ他言語を選ぶ理由がない
なおスプレッドシート+jsでも良い

670 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 22:11:40.89 ID:JTgtpdd/0.net]
プロのバックエンド・エンジニアなら、
YouTube で有名な雑食系エンジニア・KENTA の初心者向けRuby on Rails サロンが有名。
他には、RUNTEQ、東京フリーランスのデイトラなどもある

バックエンドは、Linux, Docker, AWS, データベース(DB)などが必須。
データベース・スペシャリストの資格があれば、部長クラス

RailsのO/R マッパーでは、DBの設計の仕方・組み方ばかり勉強する。
第3正規形、1対多・多対多とか、検索用インデックスの作り方など

671 名前:デフォルトの名無しさん [2022/09/18(日) 22:19:10.17 ID:si+E4x/dd.net]
>>670
釣り?それとも真正馬鹿?
それもいつものキチガイRubyクズ?

672 名前:デフォルトの名無しさん [2022/09/18(日) 22:23:40.29 ID:oVIBC1f90.net]
rubyとかもうすぐ無くなる言語じゃん

673 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 22:27:42.29 ID:K8Zbj7cX0.net]
VBAももうすぐ無くなると言われてから延命してるな

674 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 23:15:37.10 ID:69Jy4am90.net]
Rubyとか2005年で時間止まってる?

675 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 01:07:42.95 ID:iZ5Ix3Ky0.net]
>>669
ほんとうにそう思う
データをシートに書けばいろいろ考える必要なくアクセスできるもんね
IDEでそういうとこが簡単にできるシートを作って欲しいもんだ

676 名前:デフォルトの名無しさん [2022/09/19(月) 01:41:49.94 ID:iY8r+Bg+0.net]
この人もRubyがいいと言っている。
https://youtu.be/ipMC90r26uA

完全に時代遅れ。
もうむちゃくちゃ。
自分を客観視できていない。

677 名前:デフォルトの名無しさん [2022/09/19(月) 05:00:23.87 ID:EY8w4DgiM.net]
>>675
小規模なデータしか扱ったことのない馬鹿



678 名前:sage [2022/09/19(月) 08:40:56.76 ID:ReLBLDbZ0.net]

なんか幼稚な煽りしてる奴いてるなあ
そんなことしてて楽しいのか

679 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 09:31:55.83 ID:vK/zDm8+d.net]
このまえ2000万レコード扱った時はC#でSQLite使った

680 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 10:27:41.73 ID:WQozd2gd0.net]
そろそろExcelもビッグデータを扱えるようにしないと時代に取り残される
最低2億レコードぐらいは一発で実用時間内で処理できないと

681 名前:デフォルトの名無しさん [2022/09/19(月) 11:09:06.92 ID:NE4NRLG3F.net]
tksqlite便利ですぉ

682 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 11:17:10.29 ID:/tS0t+5W0.net]
それソフトよりもハードの問題じゃね

683 名前:デフォルトの名無しさん [2022/09/19(月) 14:37:24.08 ID:Z9ZARiSG0.net]
>>679
どうだった?
更新、遅くならんかった?

684 名前:デフォルトの名無しさん [2022/09/19(月) 14:45:49.33 ID:LZxjUErQd.net]
>>678
内容を理解できない馬鹿は黙っていればいいのに

685 名前:デフォルトの名無しさん [2022/09/19(月) 15:32:14.37 ID:Z9ZARiSG0.net]
>>680
アクセスでさえテーブル容量に2GBの制限bェあるらしいのbナ、エクセルにbサんなもの求めbトも仕方がないbフでは?

2GBでも、中小企業の在庫管理には十分だし。

エクセルの使い道がない人は、無理して使うものでもないと思います。

686 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 16:01:28.33 ID:vK/zDm8+d.net]
>>683
てか、VBAスレでその質問するからには、エクセルとの比較で聞いてるんだろうけど
そもそもエクセルでこのボリュームのデータ扱えないから比較できない
データベースファイルだけで4GB超えるから

687 名前:デフォルトの名無しさん [2022/09/19(月) 16:05:58.47 ID:Z9ZARiSG0.net]
>>686
SQLiteで2000万レコードについて聞いてますよ。
以前試したときは、ファイルが10GB超えるあたりから性能が悪化したんだけど、今はどうなのかなと思って。



688 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 16:10:19.86 ID:vK/zDm8+d.net]
>>687
遅いですよ
自分の用途だと十分だけど

689 名前:デフォルトの名無しさん [2022/09/19(月) 16:24:13.35 ID:Z9ZARiSG0.net]
そうですか。
ご親切にどうも。

690 名前:デフォルトの名無しさん [2022/09/19(月) 18:23:11.48 ID:mA0CNwkF0.net]
win10
office2019

VBAの相談なんですけど、test.xlsmというファイルで練習をしていて
エラーが出てエクセルが落ちてしまいました。
そのあと、復旧したファイルでコードチェックをしてエラーが出ないようになりました。
しかし、test.xlsmファイルを開くと「セキュリティに問題がある」うんぬんという警告が
そのファイルでだけ出るようになりました。

ささいな事ですが気になっています。
もしかして特定のコードを含んでいると出るのでしょうか?
ループ処理が多いとか。

691 名前:デフォルトの名無しさん [2022/09/19(月) 18:26:26.58 ID:QQSMzDQg0.net]
マクロの場合って必ずでなかったっけ

692 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 18:47:49.51 ID:b1CdxAyP0.net]
トラストセンターで有効にしておけば警告は出ないよ、って言うかこのスレにいる人ならほとんどこの設定にしてると思う
https://www.officepro.jp/excelmacro/rec/img/p4-11.png
あとは1番下の「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」がクリアされててtest.xlsmにコードを触るようなコードが入ってる場合ぐらいかな

693 名前:690 [2022/09/19(月) 21:28:16.87 ID:mA0CNwkF0.net]
>>692
ありがとうございます。
もともとそのチェックはどのファイルにも入っていませんでしたので、
触るコードを書いてるという事かと思います。
どんなコードが該当するのですか?
バグに気付けていない可能性もあるので、知りたいです。
オブジェクトモデルっていってもdictionaryを一回重複チェックで使ってるくらいで、
後はsetしてるのは条件付き書式とかworksheetとかworkbookとかrangeくらいでしょうか。
たいした事はしてないのですが、結構長くなってるので特定しづらいです。

694 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 21:42:09.79 ID:b1CdxAyP0.net]
>>693
> どんなコードが該当するのですか?
そんなもん説明しきれんわ
そもそも
> しかし、test.xlsmファイルを開くと「セキュリティに問題がある」うんぬんという警告がそのファイルでだけ出るようになりました。
のスクショなりを上げなよ

695 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 22:00:45.12 ID:ai3lFfV6d.net]
コードを新規作成したtest 2.xlsm にコピペしてみりゃ一発だろうに

696 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 22:01:05.04 ID:s9D2fBDK0.net]
>>679
Ruby on Rails では、2千社・2億レコードでも全く問題ないと、外人が言ってた

Railsでは、開発環境ではSQLite も使うが、
本番環境では、MySQL, PostgreSQL

Heroku では、PostgreSQL

>>676
セレブエンジニアの小松和貴は、反SES/Java で有名。
Java土方はうつ病になるから、やるなと言ってる

697 名前:デフォルトの名無しさん [2022/09/19(月) 22:05:09.07 ID:LZxjUErQd.net]
rubyみたいなオワコンを持ち上げるキチガイは消えろ



698 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 22:36:59.93 ID:O/s366mO0.net]
火に油を注ぐ発言はやめような

699 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 23:45:50.71 ID:A/Pc+E3NH.net]
火に油を注ぐから楽しいのに

700 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 00:31:18.18 ID:Rlnm1h+Y0.net]
それあぼーんな人だから触らないほうがいいよ

701 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 07:23:58.96 ID:Qfc1UF5x0.net]
>>697
黙れハゲ童貞

702 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 08:18:55.69 ID:TKjURbNB0.net]
なんだかんだで、納品物はエクセルで!とか言ってるからいつまでもVBAやめられなくて辛い

703 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 12:12:55.21 ID:ZsS5zbqxM.net]
>>702
Excelやめてなんのソフトを代替にしたいの?

704 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 14:20:11.48 ID:E6px8L9o0.net]
Excelを使わない事務仕事なんか無いだろうね

705 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 14:37:00.62 ID:a8qXzxjlM.net]
うちの会社は弥生会計をずっと使ってるぞ

706 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 17:24:35.64 ID:Qfc1UF5x0.net]
>>704
うちの会社の経理は紙の帳面だぞ
古代エジプト時代と変わらん

707 名前:デフォルトの名無しさん (スップ Sd3f-w3i5) [[ここ壊れてます] .net]
>>706
パピルスと現代の紙とは異なる
髪はその頃と一緒だが



708 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 19:11:26.07 ID:bPcXAKoD0.net]
>>702
そんなに辛いなら転職したらいいんじゃね

709 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 20:36:15.87 ID:E6px8L9o0.net]
>>706
The 昭和

710 名前:デフォルトの名無しさん [2022/09/20(火) 20:42:24.19 ID:z6cIhAGk0.net]
昭和の頃はすでにMZ-80とか有ったからね。

711 名前:デフォルトの名無しさん [2022/09/20(火) 21:20:11.78 ID:9PvWzZvw0.net]
>>695
ありがとうございました。
それで徐々にコードを消していったら判明しました。
助かりました。

712 名前:デフォルトの名無しさん [2022/09/20(火) 21:52:40.24 ID:9PvWzZvw0.net]
ユーザー定義型を配列に入れて使っているのですが、nameでソートしたり、
idでソートしたり、ageでソートしたり、その都度いろいろなプロパティでソートをしたいのです。
いままでは一旦二次元配列に入れてソートしていましたが、二次元配列のkeyposにあたるような
key elementsみたいに引数で渡す事はできないのでしょうか?

Sub Sort(ByRef User as Usertype,ByRef Property asここがわかりません)
なんというかworksheetオブジェクトとrangeオブジェクトみたいな関係みたいな

最悪プロパティ毎に違う名前のソート関数にすれば一応好きなプロパティの値でソートして返せるのですが

こんな感じで

713 名前:デフォルトの名無しさん [2022/09/21(水) 15:26:19.55 ID:IxQ+qaQI0.net]
まずユーザー定義型をクラスにして、その後は IComparer インターフェイスでよしなに

Sorting of objects by their properties in VBA
https://scripts4all.eu/sorting-of-objects-by-their-properties-in-vba/

個人的にはここまでやるならVBA以外を検討するけどね

714 名前:デフォルトの名無しさん (ワッチョイ f749-GjCD) mailto:sage [[ここ壊れてます] .net]
別の方法としてADODBでメモリ上にテーブルを持つのもある
テーブルにぶち込んでしまえば、ソート、フィルター、その際の項目指定とかどうにでもなる
その分のメモリは必要だし、テーブルに対する出し入れの処理はあるので
配列の大きさやソートの頻度で使うかどうか考える

715 名前:712 (ワッチョイ bf66-W3aP) mailto:sage [[ここ壊れてます] .net]
>>713
そちらを見に行ってEnumの便利さに気付きました。
二次元配列のfor for ネストでやってるような処理、列が増えるほどだんだん
わからなくなりますが、enum使えば二次元配列の利便性も残しつつ
ユーザー定義型みたいに使えますね。
二次元配列の悪い所はだんだん自分が何を指定してるのかわからなくなるところだったので、
Enumと相性抜群ですね。

せっかく教えてもらった高度な手法は今回は見送りさせて頂いて、簡単なEnum&二次元配列でやってみようと思います。
感謝です。

716 名前:デフォルトの名無しさん mailto:sage [2022/09/21(水) 20:40:31.74 ID:NsHiQ7yd0.net]
元データがどこにあって、それをソートしてどうしたいのかわからんが
普通に考えればエクセルシートに展開すれば良いんじゃないかと思うんだが

717 名前:デフォルトの名無しさん (ワッチョイ b7da-E+l9) mailto:sage [[ここ壊れてます] .net]
たぶんEXCELのソート機能を使わず自分でソートしたいんじゃね



718 名前:デフォルトの名無しさん (アウアウウー Sa5b-8eP5) [[ここ壊れてます] .net]
なぜ競プロではVBAの出番が無いのか

719 名前:デフォルトの名無しさん mailto:sage [2022/09/22(木) 11:36:03.90 ID:V4zanZlpM.net]
遅いとか記述が冗長とかサーバーサイドで動かせないとかテクニカルな問題はいくらでもあるけど、
最大の理由は競プロやるような人はVBAなんか使いたがらないから

720 名前:デフォルトの名無しさん mailto:sage [2022/09/22(木) 18:38:55.33 ID:+Wi4osLB0.net]
>>718
年末のAdvent of CodeはVBAだかExcelだけかでやってる人たまにいる

721 名前:デフォルトの名無しさん (ワッチョイ 97da-rZTD) mailto:sage [[ここ壊れてます] .net]
>>666
いいえて妙、ワロタw

722 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 19:12:26.46 ID:27USMHor0.net]
外注ってやっぱ高い?

723 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 01:17:31.15 ID:mU6CwKwa0.net]
素人にやらせると、見かけは安上がりだけど結果的に高く付くことが多い

724 名前:デフォルトの名無しさん [2022/09/24(土) 03:39:42.11 ID:sis0YFKKa.net]
何人で何ヵ月かかるかで金額が変わる

725 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 04:49:54.00 ID:rKbJBgHg0.net]
じゃあここのスレの方ならプロだから安心して頼むそうかな??
金額以外は

726 名前:デフォルトの名無しさん [2022/09/24(土) 05:51:09.21 ID:Bbc/0kyt0.net]
RubyはそれだけではDBとなるものを持ってないからEXCELやACCESSのVBAとは比較できない。

もっとも、同様にDBを持たない言語と比較するなら
セーフティーでガベージコレクションの概念がなくスピードの速いRust辺りと比べるとゴミ同然

727 名前:デフォルトの名無しさん (ワッチョイ c23d-dJZP) mailto:sage [[ここ壊れてます] .net]
エクスプローラーでフォルダーのプロパティを開いて
カスタマイズタブのところに「フォルダーの種類」が全般とかビデオとかになってるけど。
これをVBA/VBSで変更できる?
フォルダーのtypeを見ても全部「ファイル フォルダー」になる。



728 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 09:33:48.67 ID:DeEi7HC40.net]
>>727
レジストリ操作でやりたいことができたわ。

729 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 14:15:19.28 ID:qbD2jrks0.net]
お、おう、よかったな

730 名前:デフォルトの名無しさん [2022/09/25(日) 05:30:19.65 ID:/q7OsFL50.net]
一般ユーザがある列のセルを編集できないようにしたい。
でも、VBAの実行や、セル関数の結果は反映させたい。

https://support.microsoft.com/ja-jp/office/excel-%E3%81%A7%E3%82%BB%E3%83%AB%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B-b942fe92-5e87-0985-214b-9617b5b6d53f
↑セルのロック
という機能で試してみたがVBAマクロでの変更は許されなくてちょっと困っています。

セルに対してマウスイベントを発生させない。みたいなことを考えて、調べているが。
皆さんも悩まれる案件かと思います。もっと良い方法ないでしょうか?

731 名前:デフォルトの名無しさん [2022/09/25(日) 06:18:07.93 ID:jaItMug30.net]
VBAん中でロック解除して
処理終了間際にロックし直しってんじゃだめなの?

732 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 07:44:30.90 ID:dPa0+M2C0.net]
SheetSelectionイベントとIntersect使うだけでは

733 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 09:13:59.54 ID:nIE2ah490.net]
お願いします。
検索をシートからではなくブックからをデフォルトにしたいです。
下記のサイトのコードを使い検索は出来るのですが、
結果表示ではなく( '<全てのシートの検索が終わったら、結果を表示します。> )、
検索値まで移動するにはどのようにコードを書けばいいか、ご教授願います。。
https://www.moug.net/tech/exvba/0040005.html

734 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 10:44:33.52 ID:mk9vdghN0.net]
>>730
worksheet_boforedoubleclick みたいなイベントプロシージャでできる

735 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 10:58:13.51 ID:/q7OsFL50.net]
ありがとうございました。
>>731の方法で簡単にできました。
VBA実行時に保護を解除して、終了時に再度保護をかけることで、
すんなりといけました。

736 名前:デフォルトの名無しさん [2022/09/28(水) 13:31:05.50 ID:/kKDTdjO0.net]
A1:10もしくはA100に入力された値を配列に格納しています。
動的配列です。
Select Case 文字列A
case A1:A100のどれかに一致するなら
case B1:B100のどれかに一致するなら

みたいな書き方って出来ないのでしょうか?

737 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 13:35:10.17 ID:Rj0JQSes0.net]
ifで条件書けよ



738 名前:デフォルトの名無しさん [2022/09/28(水) 15:15:27.03 ID:n6LgYqsE0.net]
>>736
恐らく出来ない。
ただ、Select Case の後の文字列の部分をTrueとして、
A10:A100の中に該当文字列が有った場合、
Trueを返す関数を作成して、Case文の後ろに記載して
その条件に当たったかを判別して、Case文の下に
その条件下での処理を記載することは可能。

Caseにある条件のA10:A100にとある文字列が
有った場合とB10:B100にとある文字列が
有った場合と下に続く処理が同じなら、
先程言った関数の引数に対象範囲と検索対象文字列を
持たせておけばCase文を使う必要すら無い。
戻り値がTrueかFalseかをIf文で判断すれば良い。

その辺は実際の状況に合わせて上手く作ってくれ。

739 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 16:15:51.79 ID:vR69ytL90.net]
select caseにtrue??
知らなかったわ何それ??

740 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 18:26:27.19 ID:Pxqx/4k10.net]
Do
With
End With
Loop

よりも

With
Do
Loop
End With

の方が計算が早い(PCにとっては楽)と考えてよいでしょうか

741 名前:デフォルトの名無しさん [2022/09/28(水) 19:01:46.26 ID:8l5UWazH0.net]
>>736
こんな感じ?
https://i.imgur.com/wuSExDf.png

742 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 19:28:29.47 ID:Aad51sjLa.net]
>>736
Private Function F(R As RangeRange, S As String) As Boolean
Dim C As Range
For Each C In R
If C.Value = S Then
F = True
Exit Function
End If
Next
F = False
End Function
...
Select Case True
Case F(Range("A1:100"), 文字列A)
...
Case F(Range("B1:100"), 文字列A)
...
Case ...
End Select

743 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 19:32:38.30 ID:Aad51sjLa.net]
>>740
たいていのプログラムだと有意な差はでないから気にせずに作りやすい方で作れ
有意な差がでそうならまず測定

744 名前:デフォルトの名無しさん [2022/09/28(水) 19:38:38.93 ID:n6LgYqsE0.net]
>>740
これも恐らくの話で申し訳ないけど、
元々Withで設定されているインスタンスが既に生成されているものであれば、その格納アドレス先を読むだけなので
Withがループの外にあっても中にあっても処理コストは変わらないと思う。
変わったとしても繰り返し実行での誤差と見分けが付かない程度と思われる。

逆にインスタンスが生成されておらず、With New 〜 のようにWithでインスタンスを生成する場合は
ヒープエリアのメモリにそのインスタンスを展開するため、Withがループの外に有った方が処理コストは低くて済む。


・・・はず。

745 名前:デフォルトの名無しさん [2022/09/28(水) 19:40:24.19 ID:2tCqxjcra.net]
とりっきー

746 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 19:51:29.67 ID:30UfjVhGd.net]
>>739

ケツの穴をガバガバにして全通しするいやらしい関数だよ

Select Case True
Case オナラ
よし通れ
Case うんこ
よし通れ
End Select

747 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 21:06:15.14 ID:Apn5XmOg0.net]
>>742
結局If文でラップしてるだけじゃん



748 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 21:06:47.83 ID:vR69ytL90.net]
>>746
汚ねえな。。
こっちは夕食のカレー食ってんだぞ。。

749 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 21:20:17.00 ID:0sCmeNkX0.net]
>>747
If 文でラップとか意味わからんこと言われてもw

750 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 00:27:52.00 ID:tkXe+LzA0.net]
ヘイヘイヘイ~!
もしも~オブジェクト変数でぇ~宣言したぁ~値がぁ🎵
ラップ調

751 名前:デフォルトの名無しさん [2022/09/29(木) 01:53:20.13 ID:I3DbECBa0.net]
ラップのセンスはいまいちだね

752 名前:736 mailto:sage [2022/09/30(金) 17:41:05.63 ID:8DTKPQSA0.net]
>>738-742
ありがとうございました。
変数Strの中の値が配列Listのどれかと一致するかということだったので、そのCountIFがまさにその通りでした。
それようの関数書いてSelect case True使わせていただきます。

753 名前:デフォルトの名無しさん [2022/09/30(金) 21:34:23.42 ID:RGIc4eHD0.net]
>>752
Select Case True の話持ち出しといてなんだけど
最初のCase の条件に引っ掛かってその下の処理を実行した後でも
次のCaseの条件に引っかかったらその下の処理も実行するからそれだけは気をつけてね

754 名前:デフォルトの名無しさん (スッップ Sd32-r4yT) mailto:sage [[ここ壊れてます] .net]
>>753
そんなことないのでは?と思って試したけどやっぱりそんなことなかったんだが
普通はcaseの条件の中に入ったら次のステップはEnd Selectにいかないか?
Dim ncount As Long
ncount = 0
Select Case True
Case 0 = 0
ncount = ncount + 1
Case 1 = 1
ncount = ncount + 1
Case 2 = 2
ncount = ncount + 1
End Select
Debug.Print ncount
これは1になるんだが

755 名前:デフォルトの名無しさん (ワッチョイ 927c-cqZP) mailto:sage [[ここ壊れてます] .net]
>>754
多分breakいれなきゃいけないCとかと勘違いしてるんだと思う

756 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 22:50:53.72 ID:oHn8O8ll0.net]
Select みたいな文で複数の選択肢が条件満たした場合に複数の選択肢を実行する言語って PowerShell ぐらいしか知らんけど他にもあるんだろうか?

757 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 23:04:52.77 ID:FO5tGPcx0.net]
>>756
cとかそうだったはずだし、たぶん複数実行するほうが多数派なんじゃね
c#も、文法上は複数実行することになってるけど、break書いて抜けないと怒られるという
よくわからんことになってるし



758 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 23:17:37.16 ID:2no5G0l30.net]
CもそうだしJavaもそうだしPythonもそうだしJavaScriptもそう

759 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 23:34:30.49 ID:oHn8O8ll0.net]
>>757-758
C/C++ はそもそも複数選択肢が条件満たすことはないよ(たいていの処理系でコンパイルエラーになる)
fall through と勘違いしてるでしょ

760 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 23:56:30.92 ID:2no5G0l30.net]
>>759
ああそうだ。勘違いです
申し訳ない

761 名前:デフォルトの名無しさん [2022/10/01(土) 00:36:40.48 ID:fyOJn4KOa.net]
>>754
これってコンパイル時に畳み込みで定数化されて同一のラベルが複数あってエラーになるとかしないのか

762 名前:デフォルトの名無しさん [2022/10/01(土) 01:42:48.83 ID:a0drtoBbd.net]
>>761
馬鹿にはそう思えるのだろ

763 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 01:48:20.03 ID:AX86MJ2c0.net]
>>759
ああ、まさにfall throughだった

つかそうなると、fall throughじゃなくて
複数一致したら複数ブロック実行するような言語って知らないな
PowerShellってそうなのか?

764 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 01:53:07.95 ID:AX86MJ2c0.net]
>>761
VBAのCaseは定数以外にいろいろ書けるから

765 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 04:50:29.38 ID:igg+s+OR0.net]
>>763
複数一致
同じ条件を複数回追加すれば、それらすべてがトリガーされます。
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/deep-dives/everything-about-switch?view=powershell-7.2

766 名前:デフォルトの名無しさん [2022/10/01(土) 07:29:29.38 ID:66c8QTBM0.net]
みんないろんな言語やってるのね

767 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 07:40:45.91 ID:BiebxrBw0.net]
他言語やってる人が暇潰しに見に来る場所って印象があるよね
質問も簡単だし答えるほうに余裕があるので他スレと比べると寛容というかギスギスしてない



768 名前:デフォルトの名無しさん [2022/10/01(土) 13:08:15.88 ID:sQwPc1U3d.net]
Excelでデータベースを作り、各レコード?事に
〜月〜日 〜
〜月〜日 〜
みたいなログを表示したいのですがどの様にすればできるのか教えていただけませんか?

769 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 13:10:34.86 ID:PSWCeSJW0.net]
キーボードで打ち込め

770 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 13:17:44.94 ID:GEkLNCKa0.net]
>>768
入門書買って自分で勉強したらどうかな
あ、EXCELが入っているPCを持ってないと無理かも

771 名前:デフォルトの名無しさん [2022/10/01(土) 13:31:32.89 ID:sQwPc1U3d.net]
テキストボックスにセルの値を参照するとか、繰り返しの処理とかlookup関数とかindexとmatch関数はわかります
あとはこのリストが欲しいです

772 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 13:34:23.97 ID:mp76wcbAa.net]
MSのサイトを見ればいいだけじゃね?

773 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 14:11:06.32 ID:m6/aGG23M.net]
>>771
漠然としすぎていて適切に回答できない
書式設定のこと?ファイル出力?
どこにそれを表示したいの?

774 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 14:50:47.98 ID:ozHkf13K0.net]
もう自分で勉強してくれって。

775 名前:デフォルトの名無しさん [2022/10/01(土) 15:38:51.00 ID:66c8QTBM0.net]
>>768
そもそもそのログの日付とやらはどこから持ってくるつもりなのか

776 名前:デフォルトの名無しさん [2022/10/01(土) 15:39:00.83 ID:05rfSfda0.net]
>>773
すみません
VBAのユーザーフォームで検索用のテキストボックスを作り、
検索結果に該当したレコード(行)を選択(抽出)?して
それをテキストボックス2やリストボックスに表示したいです

〜番(ID)

名前
テキストボックス(リストボックス)
〜月〜日 何をした

みたいな表示画面が作りたいです

777 名前:デフォルトの名無しさん [2022/10/01(土) 15:40:48.76 ID:05rfSfda0.net]
>>775
〜番号 名前 〜 〜 〜
の様な感じで列に追加していくやり方で作ろうかなと考えています



778 名前:デフォルトの名無しさん [2022/10/01(土) 16:48:39.94 ID:vnBH5ihbM.net]
>>776
まずワークシート上でlookup,index,matchで検索、表示できるものを作る。
それからフォームのテキストボックスに入れた値をワークシートの検索用のセルに書き込み、結果をフォーム上のテキストボックス、リストボックスに書き込むVBAを作る。

779 名前:デフォルトの名無しさん [2022/10/01(土) 16:50:40.38 ID:05rfSfda0.net]
>>778
ありがとうございます
まずはそこからですよね

780 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 16:52:55.19 ID:GEkLNCKa0.net]
どこでつまずいているかを書かないで答えだけほしいとか言われてもね

781 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 16:55:41.93 ID:HuJ3UkiEd.net]
>>768
こんなんVBAでもなんでもなくシステムを作りたいっていってるようなもんでしょ
金払って作ってもらえよ

782 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 17:09:04.65 ID:AX86MJ2c0.net]
>>768
なぜそれをエクセルでやりたいと思ったのか

今のレベルだと一から勉強レベルだと思えるが
c#かせめてVB.Net覚えたほうがいいんじゃない

783 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 18:15:10.78 ID:BiebxrBw0.net]
セルの内容(日付のところは文字列型(頭にアポストロフィ)で入れてる)
ID 名前 日付 イベント
1 名前1 2012年3月14日 Aをした
2 名前2 2012年3月15日 Bをした
3 名前3 2012年3月16日 Cをした
4 名前4 2012年3月17日 Dをした
5 名前5 2012年3月18日 Eをした
6 名前6 2012年3月19日 Fをした

※Sheet1のマクロ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With UserForm1
y = ActiveCell.Row
.TextBox1 = Cells(y, 1)
.TextBox2 = Cells(y, 2)
.TextBox3 = Cells(y, 3) + vbNewLine + Cells(y, 4)
End With
End Sub

フォーム(UserForm1)を作って下記コントロールを配置
TextBox,TextBox1,TextBox2,TextBox3(Multiline=true),CommandButton1

UserForm1のマクロ
Private Sub CommandButton1_Click()
Sheets(1).Range("A1").AutoFilter 2, "*" & UserForm1.TextBox.Text & "*"
End Sub

ファイル開くイベントとかボタン作って下記マクロでフォームを表示
UserForm1.Show vbModeless
聞いた限りではこんなのしか思い浮かばない

784 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 18:31:08.84 ID:oCrNNmAI0.net]
VBAのPicture.Insertでリンク貼付けさせないようにクリップボード利用でPasteで貼り付けてみたら画像が異常に重くなりすぎて使い物にならない…。
おとなしくShapes.addPicture使うしかない?

785 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 18:49:59.64 ID:PeKIyBQF0.net]
>>768
Listobject作ってListrowsを都度登録する仕組みを作って目的のListrows()を呼び出すユーザーフォームを作ればいいんじゃないっすかね。

786 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 18:55:31.78 ID:HuJ3UkiEd.net]
まず質問者は何ができて何ができないのか気になるが何もできないんだろうなと推測してる
なのでここで丸投げしてバカなお人よしに作ってもらおうとしてるんだろ

787 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 23:20:55.43 ID:BiebxrBw0.net]
猪木が死んだ、時代が流れていく
思えばPCとの付き合いももう40年か
戦時中はと口癖のように言っていたジジイ共も消えてアマチュア無線なみにニッチな趣味だったPCが主流になるとは不思議なものだ



788 名前:デフォルトの名無しさん mailto:sage [2022/10/02(日) 07:27:45.20 ID:ySn/5a2I0.net]
>>784
もとの画像が大きいんじゃね、表示用の画像を別途つくってから貼り付けてみ

789 名前:デフォルトの名無しさん [2022/10/02(日) 13:27:44.47 ID:TlawqFoR0.net]
>>783
わざわざありがとうございます
助かりました

790 名前:デフォルトの名無しさん [2022/10/02(日) 15:47:28.98 ID:DdgukWIZ0.net]
>>787
おいおいいつだよって思ったら昨日かよ

>>786
それでいいと思うんだよな
それが社会の基本だし、暇な元事務のNEETはそれで快楽を得つつ勉強になり、
転職への自信になるだろう

791 名前:デフォルトの名無しさん [2022/10/02(日) 20:54:31.26 ID:TlawqFoR0.net]
VBAは作業を登録して自動化するくらいで覚えておいた方がいいですよね

792 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 06:16:19.93 ID:S2WAje4f0.net]
>>788
800kの画像でやってみたけど15Mぐらいまで巨大化してしまう
やはりAddPictureで代用してみる

793 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 07:27:24.16 ID:4wRZXMmm0.net]
VBEに書いたコードの整列っていうかコードを整えるっていうか自動インデントっていうかそんなショートカットキーがあったと思うけどなんだっけ?

794 名前:デフォルトの名無しさん (ワッチョイ 53ce-OAEy) mailto:sage [[ここ壊れてます] .net]
タブ

795 名前:デフォルトの名無しさん [2022/10/03(月) 20:58:11.99 ID:FDmFS1zQ0.net]
>>791
変な枷付けること考えんと
好きに作っていいんやで

796 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 15:00:55.06 ID:pLalriKq0.net]
イベントで質問

余所で作ったエクセルにVBAで改造加えてるんだけど
1マス入力だけするSheetにActiveXのコマンドボタン付けたら
Worksheet_SelectionChange
が発生しなくなった

コマンドボタン押したイベントは拾ってるので
EnableEventsがFalseってわけじゃない(イミディエイトで確認済み)

デザインモードを解除してもWorksheet_SelectionChangeイベントが起きないので
しょうが無いからまた一から作り直したんだが
この現象って頻発するもの?
ググってもOfficeの修復かEnableEventsしか解決策が出てこない

797 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 15:54:59.32 ID:TDYI1fTGd.net]
>>792
Sub Macro1()
ActiveSheet.Pictures.Insert "C:\Work\Sample1.jpg"
End Sub



これで400KBのpngで試してみたけど
なぜかxlsmファイルのサイズは15KB
何か別の要因とか



798 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 19:28:07.31 ID:uOFwOuxi0.net]
>>796
そりゃエクセルを改造したら駄目だろ

799 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 19:47:41.77 ID:o+JurUyd0.net]
>>792
オプションの詳細設定-イメージのサイズと画質 ってどうなってる?

800 名前:デフォルトの名無しさん [2022/10/04(火) 21:08:36.46 ID:vyetwO+c0.net]
Dim ar(2) As Variant
ar(0) = 1
ar(1) = 2
ar(2) = Split("1,2,3,4,5", ",")
Dim i
For i = 0 To UBound(ar(2))
ar(2)(i) = CLng(ar(2)(i))
Next i

splitで作ったジャグ配列の中身をlong型に変換したいです。
variant変数に一度入ったらもう無理ですか?
一応他の変数に入れる事で型変換には成功するのですが。
余計な変数を二つも用意してstringで作成されたのを一時的なvariant型ノーマル配列に
おさめてmそのあとで本当に使いたい配列のジャグ配列に入れていくというのが
どうも汚い感じで腑におちません。
アドバイスもらえると助かります。

801 名前:デフォルトの名無しさん [2022/10/04(火) 22:26:54.77 ID:cce3s7590.net]
>>800
出来ません
諦めてください

802 名前:800 [2022/10/04(火) 22:43:48.69 ID:vyetwO+c0.net]
>>801
ありがとうございます。
ジャグ配列はRedim出来ないのがデメリットですね。
動的な配列の中にジャグ配列なのですが、なんとか先に不確定な親配列の中にある
不確定な数のジャグ配列を一時的なLong型配列に作って
そこからさらにsplitなしでなんとか作ろうとあれこれしてたら
よっぽど>>800の方法の方が処理がわかりやすくなってしまい徒労に終わりました。

諦めます。踏ん切りつきました。

803 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 23:35:06.72 ID:o+JurUyd0.net]
>splitで作ったジャグ配列
>動的な配列の中にジャグ配列
ジャグ配列って用語の使い方が微妙に間違ってる気がするが...

そもそも文字列を分割して配列作ってるんだから文字列の配列になるのが当然で
Variant上等でやるなら、それを使う側がVariantで受ければいいだけでは?

まあ俺ならどうしても文字列をSplitしてLongにしたいなら
Longの配列返すSplitのラップ関数作るけど

804 名前:デフォルトの名無しさん [2022/10/05(水) 04:48:52.00 ID:b9GTOuH90.net]
sqliteで作ったジャグ配列。

805 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 07:10:06.74 ID:8YZU4Hq7a.net]
>>797
それでいくとうまくいくんだけどね、
通常のPictures.Insertだとリンク貼付けなのよ。他人に送付したら見れない。

だから一旦クリップボード経由でPaste使ってやってるんだがそれだと容量がヤバくなる。

806 名前:デフォルトの名無しさん [2022/10/05(水) 08:07:32.65 ID:hw4y4dFR0.net]
そもそも何でもかんでも配列で処理しようとするのがちょっとねぇ。
例えば列に当たる要素毎に違う型を使いたいなら
ちょっと仕組みは大きくなるけどADODBのRecordsetを使うことや
1行の列データ単位の値を格納するクラスを作ってそれを行単位としてディクショナリやコレクションに追加して行くことも検討することを視野に入れると
結局後で読みやすく汎用性の高いロジックが組めたりする。

処理速度優先なら配列一択だからそのときのシュチュエーションに合わせて使い分けだね。

807 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 08:19:21.40 ID:SsR8S72r0.net]
構造体ではできんの?
ジャグ使う機会無いからなんとも言えんが



808 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 10:50:57.71 ID:HrKgxVhUd.net]
すぐDBとか持ち出す奴いるけどコスト考えたらそう簡単にDBなんか使わんと思うけどね
普通に配列処理用の関数のみのモジュールでコード管理すればいいだけと思うわ

809 名前:デフォルトの名無しさん [2022/10/05(水) 13:20:52.03 ID:7KiNZ4t1d.net]
>>808
何のコスト?

810 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 14:41:00.50 ID:bxBPBLxH0.net]
やっぱ好きなように作るのが1番ね

811 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 15:47:13.70 ID:DsSYxIFi0.net]
ワークシートがDBみたいなもんだしね

812 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 15:53:15.41 ID:tZ9pwx2fM.net]
学習コスト

813 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 21:19:11.66 ID:/BrWnOTx0.net]
コストコ

814 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 23:35:05.88 ID:bxBPBLxH0.net]
コスパ良い

815 名前:デフォルトの名無しさん [2022/10/06(木) 16:49:22.22 ID:wENRazb+d.net]
例えば、誕生石を取得するGetBirthStone関数を作ろうとすれば引数は「日付 as Variant」と「月 as Integer(Long)」のどちらがいいでしょうか?

816 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:54:16.04 ID:lmEPcDvIM.net]
Dateではあかんのか?

817 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:55:37.45 ID:1FPDwTBGM.net]
そんなもんVLOOKUPで誕生石シートを検索すれば十分
VBAを正しく使うコツはVBAを可能な限り書かないことだよ



818 名前:デフォルトの名無しさん [2022/10/06(木) 17:19:15.50 ID:wENRazb+d.net]
>>816
Date型でも大丈夫ですか?

一応、最初の部分はこう書いてみました
If Not IsDate(日付) then
GetBirthStone = CVErr(xlErrValue)
Exit Function

819 名前:デフォルトの名無しさん [2022/10/06(木) 17:48:34.71 ID:KR9VbeXw0.net]
>>817
いや、むしろVBAだけの方がメンテしやすい
データとロジックは分ける方がいい

820 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 19:10:02.45 ID:YSVEcn1gd.net]
>>815
元のデータが何によるかで違うけど「月 as Integer(Long)」でいいのではと思う
仮に元のデータが日付でもGetBirthStone(Month(日付))で済む
月を渡すようなケースがありえないなら日付を渡して関数内でMonthを使うでもいい

821 名前:デフォルトの名無しさん (ワッチョイ 435f-pIDl) [[ここ壊れてます] .net]
月だけでいい
特定の日付に依らずある月の誕生石を知りたい場合に
意味のないDate値用意しなきゃいけなくなるから可読性が落ちる

>>817
誕生石みたいに改訂されたことがニュースになるくらい固定されてる内容ならコードにベタ打ちでいいと思う
祝日みたいに毎年変動するものとか、組合せの数が多すぎる要素ならシート管理の方が扱いやすいと思うけど

822 名前:デフォルトの名無しさん (ワッチョイ d3da-pIDl) mailto:sage [[ここ壊れてます] .net]
>>815
その程度のこと自分で決められんようでは時間かかってしょうがないだろ

823 名前:デフォルトの名無しさん (ワッチョイ 6f8c-SQdC) mailto:sage [[ここ壊れてます] .net]
>>815
Function getBirthStone(日付 As Date)
Application.Volatile True
getBirthStone = WorksheetFunction.Choose(Month(日付), "ガーネット", "アメシスト", "アクアマリン", "ダイヤモンド", "エメラルド", "ムーンストーン、真珠", "ルビー", "ペリドット", "サファイア", "オパール、トルマリン", "トパーズ", "トルコ石、タンザナイト")
End Function

こんなかんじ?

824 名前:デフォルトの名無しさん [2022/10/06(木) 22:32:10.00 ID:wENRazb+d.net]
>>823
ありがとうございます。

825 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 22:47:25.99 ID:HCQdlFdq0.net]
>>823
わざわざワークシート関数を呼ばなくてもVBAにもChoose関数あるよ
https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/choose-function

826 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 23:06:53.10 ID:gOgPUvPm0.net]
ほんとだw てへ

827 名前:800 mailto:sage [2022/10/09(日) 17:09:18.30 ID:Kilq6kjS0.net]
>>803
ラップ関数作る解決方法最高です。
頭固かったです。
他にも導入できそうなところが見つかり助かりました。
感謝です。



828 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 21:48:05.32 ID:P58+Ol8v0.net]
>誕生石みたいに改訂されたことがニュースになるくらい固定されてる内容ならコードにベタ打ちでいいと思う
>>823を見ての通りこの手は表記ゆれが問題になる事が多いから
可能な限り外部データにした方がいい

829 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 13:53:54.44 ID:uAPvvwer0.net]
インプットボックスで入力される値が数字かどうか判断するコードってどう書けばいい?

830 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:15:03.61 ID:fEDU7G4fd.net]
・符号(+-)を許すか
・ドット(小数点)を許すか
・カンマ(桁区切り)
を踏まえて文字の妥当性チェックすればいいんじゃないの

831 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:17:40.55 ID:fEDU7G4fd.net]
あと自分はWorksheetFunction使うの好きじゃないけど
WorksheetFunction.IsNumber
でもいいかもね

832 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:26:37.29 ID:H84z/pNR0.net]
全角は?漢数字は?ローマ数字は?欧米式の桁区切りは?
入力検査は考え始めるとキリがない分野の一つだぜ

833 名前:デフォルトの名無しさん [2022/10/11(火) 15:13:10.17 ID:DoWcBI1l0.net]
>>829
IsNumericじゃダメなの?

834 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 17:02:04.45 ID:uAPvvwer0.net]
>>833
さんきゅーそれだ
てかVariant型が数値かどうか調べられるんだな~
書き方解ったらvartypeとかtypenameでも行けそうな気がする
ちょい試してみよ

835 名前:デフォルトの名無しさん [2022/10/11(火) 18:13:13.59 ID:DoWcBI1l0.net]
>>834
語弊があるといけないから言っておくと、
IsNumericはあくまで数値として扱える値(数値に変換出来る値)かどうかを判定するよ。
だからString型でも”123”みたいのはTrueを返すからそこは注意してね。

836 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 20:16:52.08 ID:hb9m45MO0.net]
考慮点はまだあるぞ
IsNumericって
"\3"とか"3e3"とか"&habc"とかもTrueだぜ

837 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:33:18.55 ID:FAaW2+wFd.net]
じゃ足し算する関数を別に作ってノーエラーで戻ってきたら数値

Sub Main()
 '全角数字も数字と見なす
 If Suujikana(StrConv(InputBox("入力せぇ"), vbNarrow)) Then
  MsgBox "数字だよ"
 Else
  MsgBox "数字じゃないよ"
 End If
End Sub


Function Suujikana(moji As Long) As Boolean
 On Error GoTo er
 moji = moji + moji
 Suujikana = True
 Exit Function
er:
 Suujikana = False
End Function



838 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:35:48.26 ID:FAaW2+wFd.net]
あ、これじゃだめかえらーでるあ

839 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:38:00.09 ID:FAaW2+wFd.net]
このやろ、variantにしたら+で文字列つくりやがって
こんのやろぉ

840 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:39:59.19 ID:FAaW2+wFd.net]
これでいい?らめ?

Sub Main()
 '全角数字も数字と見なす
 If Suujikana(StrConv(InputBox("入力せぇ"), vbNarrow)) Then
  MsgBox "数字だよ"
 Else
  MsgBox "数字じゃないよ"
 End If
End Sub


Function Suujikana(moji As Variant) As Boolean
 On Error GoTo er
 moji = moji * moji
 Suujikana = True
 Exit Function
er:
 Suujikana = False
End Function

841 名前:デフォルトの名無しさん [2022/10/12(水) 09:33:08.65 ID:JFXNmWRt0.net]
>>836
まぁその辺は数値として受け取れるとも言えるからね。
その辺除外したいなら最初に“¥”や“e”や“&h”が含まれていたら数値ではないって分岐入れとけばいいだけじゃないの?

842 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 09:45:17.75 ID:05zETGAlM.net]
>>840
自分も同じこと考えたけど型の制約が緩いと面倒くさそうなので思考を放棄した、よく頑張ったな

843 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 10:05:45.44 ID:05zETGAlM.net]
そういえば昔型はあるのとないのではどっちが良いのかって記事を見たことあるな
結局型がないと論理エラーが出ないように型をちゃんと理解する必要があるって書いてた

844 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 10:15:23.77 ID:FnwlmZOz0.net]
kgとkmは単純に足し算しても意味ないからな

845 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 04:03:11.23 ID:j3UF+2500.net]
別にVBA使わなくてもワークシート関数でできるじゃんって意見どう思う?

846 名前:デフォルトの名無しさん [2022/10/13(木) 04:08:37.62 ID:QthptHxba.net]
やりたいようにやれ

847 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 05:43:31.20 ID:l6HSpiwg0.net]
>>845
内容によるけどまあワークシート関数でできるならその方がいいだろうな



848 名前:デフォルトの名無しさん [2022/10/13(木) 06:51:28.60 ID:R3JkkIAh0.net]
A1に入力されているものが消えたらB1以降の入力セルデータが右から左に自動で繰り上がってくるようにしたいのですがこれで大丈夫ですか?

これをA20くらいまで適用したいんですけど教えて貰えませんか...?

Private Sub Worksheet_Change(ByVal
Target As Range)
If Target.Address = Range("A1").Address
And IsEmpty(Target) Then
Application.EnableEvents = False
lastrow = Cells (Rows.Count,
"A").End(xIUp).Row
Range("B1:F1"&lastrow).Copy
Range("A1").PasteSpecial xIPasteValues
Range ("A"&lastrow).ClearContents
Application.EnableEvents = True
End If
End Sub

849 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 11:53:03.67 ID:Ue05WQwm0.net]
キーボード操作でマクロ作って呼べばいいんじゃね

850 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 13:03:11.83 ID:8suwpN2kr.net]
"B1:F"&lastrow
下から4行目は何の処理かな
g列以降にデータがないなら、a列削除でもいけそう

851 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 13:57:54.49 ID:UFLyO0SD0.net]
xIUp >> xlUp >> xlLeft
xIPaste >> xlPaste

excel だから xl だよ
本から手入力したのかな

852 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 15:04:44.40 ID:xeSsgHCJ0.net]
文字列にしてTrimして
右から一文字づつAscでコード調べて数字判別してる

853 名前:デフォルトの名無しさん [2022/10/15(土) 01:10:39.87 ID:zmWNo0nm0.net]
そういや何気にVBAの中でCallByName使うとJavaScript 使えるらしいね。
使ったことないけど。

854 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 01:25:23.69 ID:eU4yePu40.net]
>>853
どういうこと? どうやるの?

855 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 07:21:27.16 ID:tw/asOzR0.net]
>>853
文字列で言語書いて実行するのってどうも好きじゃないな
そもそも有効な場面ってあるんだろうか
bougyuusonnin.seesaa.net/article/191171013.html

>>854
調べなよ・・・

856 名前:デフォルトの名無しさん [2022/10/15(土) 09:05:24.46 ID:zmWNo0nm0.net]
>>855
さあ?
メソッドチェーンが使えるくらい?
まぁ無理して使うもんでもないような。
現にJavascript知っててもVBAに混ぜて
使うような状況なんてなったことないし、
大体記述がめんどいし。

857 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 09:07:30.39 ID:tw/asOzR0.net]
>>856
ありがとう
やっぱりほとんど無いよね。



858 名前:デフォルトの名無しさん mailto:sage [2022/10/16(日) 03:31:09.39 ID:IoSf1xr/0.net]
メリットはネイティブの手段でJSONがパースできるようになる事なんだけどVBAで必要になることはほとんどないか
ちなみに似たような方法でHtmlFileからIEのjavascriptを呼ぶ方法もある

859 名前:デフォルトの名無しさん mailto:sage [2022/10/16(日) 05:54:19.77 ID:zEVEZIxw0.net]
ネイティブ?

860 名前:デフォルトの名無しさん mailto:sage [2022/10/16(日) 06:00:43.85 ID:q8mBJvHk0.net]
予め言語側で用意されてるってことじゃない

861 名前:デフォルトの名無しさん [2022/10/16(日) 06:58:42.73 ID:4eBUdjNxM.net]
正規表現をRegExpオブジェクトで利用することはネイティブですか?

862 名前:デフォルトの名無しさん [2022/10/16(日) 08:27:49.05 ID:6FfxZTeW0.net]
正規表現をRegExpオブジェクトで利用したらハゲますよ

863 名前:デフォルトの名無しさん mailto:sage [2022/10/16(日) 23:46:46.75 ID:n3hO69PQ0.net]
性器のことしか考えてないから禿げるんじゃね

864 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 02:28:59.55 ID:Foj5GBltM.net]
正規表現はexcelapiを使うのが楽

865 名前:デフォルトの名無しさん [2022/10/17(月) 17:47:22.14 ID:LwSzkOCXr.net]
すみません、質問させてください
range内の空白セルを除いた部分を一気に配列に入れる方法ってありますか?
例えばA1、B2、A3、B3に1が入っていて、Range(Cells(1,1) ,Cells(2,2))を選んでいる状態で配列ArrにArr(1,1)=1、Arr(1,2)=1のみを入れる。ということです
「Range(Cells(1,1) ,Cells(2,2))を選んでいる状態」というのはFunctionで関数を作ったときにこの範囲を選んでいるという意味です
CurrentRegionを使ってもA2、B2の空白まで配列に入ってきてしまって困ってます

866 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 17:53:55.90 ID:c98RAUt6M.net]
selectionでforeach回せばできる気がするけどな

867 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 18:05:29.40 ID:PbBQX3S8M.net]
一気にやるなら判定文をスピルで一気に適用するか



868 名前:デフォルトの名無しさん [2022/10/17(月) 18:22:32.67 ID:KXCnFpZrr.net]
すみません、先程の質問の意図はvba 100本ノックの以下の問題を解いていましたhttps://excel-ubara.com/vba100/VBA100_062.html
最初に範囲内を配列にすべて入れてdictionaryで出す方法を考えたんですけど、範囲のところがA1:C5とかならいいのですが、A:Cだと、すべての行まで配列に入ってしまって、それの行すべて処理するようになってしまったので、数字が範囲内の最終行までを配列に入れることができれば処理速度も変わるので、そういう方法があればという質問でした

869 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 18:56:02.19 ID:eqEJLsQnM.net]
答えも解説も書いてあるんだからそれ見ろよ

870 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 20:25:02.38 ID:sP2+Ci5U0.net]
>>864
へーそんなのあるのか

871 名前:デフォルトの名無しさん [2022/10/17(月) 21:15:18.56 ID:8otnrSal0.net]
作成依頼です。

G列に空白セルがあった場合、その空白セルの隣のセルに入力されている値をクリアにする。

というコードを作成いただけないでしょうか。

よろしくお願いします。

872 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 22:12:03.14 ID:ISXu5HOG0.net]
いやです

873 名前:デフォルトの名無しさん [2022/10/17(月) 22:18:07.47 ID:+NOpXqIT0.net]
待て、これは孔明の罠だ

874 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 22:23:49.67 ID:AIOop8Dz0.net]
F、G、H列を無条件で消せばいいのね

875 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 22:24:49.52 ID:tLF3dHHy0.net]
隣とはどっちだ
あまりにも指示が不明瞭でバカが書いたとしか思えない文章
スルーで決定

876 名前:デフォルトの名無しさん [2022/10/17(月) 22:28:51.88 ID:dYe0p6CB0.net]
>>871
マジレスするとここは質問スレであり
作成要請スレではありません。

作る方法等を聞けば教えてくれる人もいるかも知れませんが、作ってくれと丸投げにした場合、
その見返りを要求されるか一蹴されるかして終わるのが関の山です。

自分でそう言った趣旨のスレを探すか立てるかした方が賢明と思われます。

877 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 22:46:52.95 ID:/WpPTN/JH.net]
>>871
welcome to https://mevius.5ch.net/test/read.cgi/tech/1434079972/



878 名前:デフォルトの名無しさん [2022/10/17(月) 23:47:38.34 ID:yX88xE7Ya.net]
>>874
消す方だったか、"クリア"って書くのかと思ったぜ

879 名前:デフォルトの名無しさん [2022/10/17(月) 23:49:43.92 ID:+NOpXqIT0.net]
>>878
甘い
空(そら)と白(しろ)で合わせて空白まで読み取らないと

880 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 05:15:15.98 ID:s0SrGZFEa.net]
4000件くらいのデータのExcelファイルから
A. 特定の数十件の社員データを除いたデータファイル
B. Aで除いた数十件の社員のデータのみのファイル
を作成しなければなりません

元のファイルを2つFileCopyして
・Aから対象社員のデータをUINONメソッドでRangeに格納して一括削除
・Bから非対象社員のデータをUINONメソッドでRangeに格納して一括削除

もしくは

・Aから対象社員データをAutoFillterしてBに貼り付け
→Aから対象社員データ削除

を考えてますがどちらが速いでしょう
元の書式を活かしたExcelファイルが必要なので
CSV出力やExcelファイルにデータのみ転記することはできません

881 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 05:41:41.52 ID:o16XpPR+M.net]
何度も繰り返し行なう作業とか面倒な作業ならVBA使うメリットもあるけど、その程度ならシートコピーとフィルターでさっさと手作業で済ませた方が手っ取り早いのでは?

882 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 07:10:04.49 ID:v8qBslO70.net]
>>880
画面の書き換えだけ止めとけば、たぶん、どの方法でも大差ないと思うよ
Unionは重いから、削除は一括じゃない方がいいかも
気になるならベンチマークとってみれば?

883 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 07:14:36.77 ID:NY9qjYA4d.net]
>>876
>コード書き込みや作成依頼もOK
1をよくみような

884 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 08:05:51.17 ID:YCyRiw4bM.net]
個人的にはコード作ってとか書かれてたら困ってるんす金くださいと言われてるくらい嫌なので余計に作らないわ~
書くのは勝手だけど

885 名前:デフォルトの名無しさん [2022/10/18(火) 08:46:11.19 ID:q+c/s7kpM.net]
誰もお前には頼んでないのに、俺は作らない宣言しちゃう人って自意識過剰すぎません?

886 名前:デフォルトの名無しさん (ワッチョイ 2bcd-7iBv) mailto:sage [[ここ壊れてます] .net]
>>871
1:30で書けたけど・・・
これぐらい書くのにみんなどれぐらい時間かかるもんなの?

Sub foo()
最終行 = Cells(Rows.Count, 7).End(xlUp).Row
For i = 1 To 最終行
If Cells(i, 7) = "" Then
Cells(i, 6) = ""
Cells(i, 8) = ""
End If
Next
End Sub

887 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 09:45:31.08 ID:345TXlIrM.net]
>>880
回答待つより実際に作って比較した方が早くない?



888 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 10:14:58.17 ID:UuGhYYcHd.net]
>>887
いい回答だと思う
自分でやればわかることを他人に聞くのってほんとバカなのかなと思う

889 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 10:42:22.37 ID:fjjhfMGv0.net]
>>871
Ruby で作ってみた。
未入力の列はnil となるので、a, c も未入力となる

require 'csv'

input_text = <<TEXT
,a
b,b
,c
TEXT

output_text = String.new

CSV.filter( input_text, output_text ) { |row|
row[ 1 ] = nil unless row[ 0 ] # nil の時
}

print output_text

出力
,
b,b
,

890 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 11:09:36.18 ID:NJQ5BOf00.net]
>>885
で、誰もお前に意見聞きたいとか頼んでないのにどうしてそんな自意識過剰な反応してんの?

891 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 13:16:40.55 ID:O7d9QRYR0.net]
>>889
見づら!
なにこのクソ言語

892 名前:デフォルトの名無しさん [2022/10/18(火) 14:44:23.15 ID:5fCnmsLA0.net]
>>886
2~3分だな90分もかからんよ

893 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 19:46:45.52 ID:LJ6jaE7r0.net]
ちょうど今日別々のシートの範囲Unionして二次元配列にしようと思ったらエラーだったな
同一シートじゃないと無理らしいね
二次元配列同士を結合したからまあいいけど

894 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 21:13:25.02 ID:bD7mk4M6d.net]
>>886
Nextのズレが気になって気になって今日は眠れないわ

895 名前:デフォルトの名無しさん [2022/10/18(火) 23:15:32.25 ID:fRTdwDaSa.net]
変数に漢字w = 0

896 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 15:06:47.27 ID:XsVwav6s0.net]
マウスで範囲指定した複数のセルから値を受け取ったり書き込んだりする方法はありますですか?

"A1:C3" と指定した状態でそこに有る数値をVba側で受け取って一つ一つ何かをしたあと、
また今の指定した範囲のセルに書き込むとかです。

一つのセルであれば、ActiveCell.Value とすればいいですよね。

897 名前:デフォルトの名無しさん [2022/10/19(水) 15:45:02.14 ID:RzDK/9cQa.net]
日本語が不自由な人多いな



898 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 16:40:42.06 ID:kjFQ3fMO0.net]
>>896
Application.Selection.Valueで出し入れできる
基本的に2次元配列を操作することになるが、
単一のセルだと配列にならないとか
複数の領域が選択されていたときにどうするかとか
細かいところを考えることになる

899 名前:906 mailto:sage [2022/10/19(水) 20:54:47.64 ID:wavRu5Wg0.net]
>>898
大変重要なキーワードを提示いただきありがとうございます。

とりあえずの目的は達成できました。

また、これで詳しい内容をググりに行けますです。

900 名前:906 mailto:sage [2022/10/19(水) 22:12:45.50 ID:wavRu5Wg0.net]
ここに書いてありました
ttps://detail-infomation.com/vba-selection/

901 名前:デフォルトの名無しさん (ササクッテロラ Sp0f-HPGf) [2022/10/20(木) 01:06:22.80 ID:Rvw6iN3vp.net]
>>886
>>889
ありがとうございます。

902 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 06:04:53.46 ID:I98JYgIT0.net]
外出先でもスマホからマクロ実行したいからGASでプログラムやろうかと思ってる

903 名前:デフォルトの名無しさん (ワッチョイ 9f42-M5DG) mailto:sage [2022/10/20(木) 07:03:58.77 ID:D7MvRF2u0.net]
勝手にやればええやん

904 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 09:47:53.53 ID:gU8aHBR/M.net]
GASいいよね
Googleスプレッドシートは単一のブックを皆で共有してつつき回すのが前提だから、
Excel VBAでよくあるようにデータとマクロ用ブックを分けて部署別の複数のデータファイルをVBAでまとめて集計するみたいなことをする必要性が低くて、
そもそもGASを書かなくて済むケースが多かったりする
外部APIとのデータ連携が必要なときくらいだな

905 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 10:11:29.65 ID:od/5Btdhd.net]
ここで広げる話じゃねぇ

906 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 11:53:08.75 ID:jbEEQ7MN0.net]
GASってスマホからも動かせるの?

907 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 12:40:27.98 ID:gU8aHBR/M.net]
もちろん



908 名前:デフォルトの名無しさん [2022/10/20(木) 17:44:35.99 ID:zIYHKHDh0.net]
>>904
それってWeb版EXCELと何が違うの?

909 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 17:58:16.85 ID:wfln4dMhM.net]
もちろん違わないよ
全く同じことがWeb版Excelにも言える
まあExcelにしちゃうとせっかく共有してても結局ローカルコピーを作るバカが必ず出てきて邪魔になりがちだから、間違った使い方をするのが難しいという点では好ましいかもね

910 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 18:01:51.16 ID:rx8Gs0n5M.net]
それはWEB版を使いにくいと思ってる人が居るってことでは?

911 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 23:20:50.15 ID:I98JYgIT0.net]
試しにAndroidスマホからボタン(図形)をクリックしたけどgasを実行できなかったよ
なんか色々と制約があるみたいだし、JAVAやC#でスマホアプリ作ったほうがいいな

912 名前:デフォルトの名無しさん [2022/10/21(金) 00:43:10.35 ID:HmQfBwoT0.net]
どんどんスレの趣旨からはなれtrくなー
そもそもスマホアプリ作るならAndroidでC#使うならXamarin使うことが前提になるしiPhoneならSwiftかObjectiveCだろ

WindowsPhoneならxamlとC#かVB.Netで作ること出来たけど死滅しちゃったからなー
Javaは実行時に中間コード翻訳が挟まるから重いし
やっぱりスマホはiPhoneをSwiftで開発するのが最強だろうな
AppleのMacで開発することが前提になるからちょいお金が必要になるけど。

ExcelのVBAやってる人はMac買うんなら別途Windows も必要だな
MacのEXCELはVBAまともに動くことを期待しない方がいいから。

913 名前:デフォルトの名無しさん [2022/10/21(金) 01:50:58.42 ID:6vVdUlmSd.net]
>>912
突っ込み所が多過ぎ

914 名前:デフォルトの名無しさん [2022/10/21(金) 08:00:32.41 ID:K0Nv/hCp0.net]
>>912
突っ込み所がほんと多過ぎ

915 名前:デフォルトの名無しさん [2022/10/21(金) 17:19:06.50 ID:qYJSQXItd.net]
質問ですが、
シートに動的に追加したボタンに対して、共通のクリックイベントを追加したいのですがやり方がわかりません。
教えてほしいです。

activesheet.buttons.addで追加したボタンに対して、
クラスモジュールで作成したクリックイベントを結びつけたいです。

916 名前:デフォルトの名無しさん [2022/10/21(金) 17:20:50.78 ID:qYJSQXItd.net]
動的にボタン作成しながらそのボタンに対して共通のクリックイベントを結びつける方法です

917 名前:デフォルトの名無しさん (ワッチョイ 9fd8-NYmr) mailto:sage [2022/10/21(金) 18:49:07.97 ID:7JSr5kXR0.net]
>>916
.OnAction プロパティにプロシージャ名を設定



918 名前:デフォルトの名無しさん (ワッチョイ 7b2f-KWxC) mailto:sage [2022/10/21(金) 19:01:18.29 ID:DZ21JFev0.net]
基本的にはボタンのOnActionにマクロ(Subのメソッド)名を設定すればいいんだが
クラスモジュールのメソッドとか直接指定できないんじゃないかな
間に標準モジュールかますとかすれば行けると思うが

919 名前:デフォルトの名無しさん (スッップ Sdbf-h7FX) mailto:sage [2022/10/21(金) 19:01:59.59 ID:2/IIqD8Nd.net]
マクロの記録でもやればおおよそやりたい事のひな型のコードはできると思うんだよね
そういうやり方で解決できない人ってなんだろと思う
ActiveSheet.Buttons.Add(168, 108, 186.75, 66.75).Select
Selection.OnAction = "Macro1"
マクロで作ったこれを参考にすればいいんじゃないのと思うが
Addで作ったものをObject型の変数で受け取ってその変数のOnActionに代入するだけでしょ
それにググればこの程度はいくらでもでてくるんだけどね

920 名前:デフォルトの名無しさん [2022/10/21(金) 23:26:00.91 ID:HmQfBwoT0.net]
>>918
確かに。
何でクラスモジュールのメソッドに紐付けようとするか謎だよな。
そもそもそれにはインスタンスが生成されていなければならない訳だし
VBAのクラスはそこまで万能では無いからシングルトンパターンでよく使われるみたいに自分で自分を生成することも出来ない。

そうすると前もって生成したインスタンスのメソッドに紐付けるしかない訳だけどそんなことVBAのクラスで本当に出来るのか?と思ってしまうわな。

921 名前:デフォルトの名無しさん [2022/10/22(土) 09:44:18.85 ID:+w0aEr6Jd.net]
クラスのモジュールではなくてもいいんですけど、何かしらの共通メソッドを呼び出せるようにしたいです。

動的に作った編集ボタンが100個くらいあって、編集するフォームを呼びだす共通メソッドに紐付けたいです。

922 名前:デフォルトの名無しさん mailto:sage [2022/10/22(土) 10:00:21.77 ID:tvj8JbCcF.net]
初心者向けサイトに出てくるWithEventのやつじゃないの
クリックならいけるけどEnterとか一部はだめだから使わなかった

923 名前:デフォルトの名無しさん [2022/10/22(土) 10:24:34.97 ID:ivMt1YnGp.net]
>>921
それは同じ関数呼んで引数で関数内で何とかするんじゃダメなの?

924 名前:デフォルトの名無しさん mailto:sage [2022/10/22(土) 10:41:03.80 ID:ANF77yYL0.net]
この辺?
https://thom.hateblo.jp/entry/2016/10/13/005105

Newしたcommandbuttonにaddeventhundlerみたいなことって出来ないのかな

925 名前:デフォルトの名無しさん mailto:sage [2022/10/22(土) 10:49:28.11 ID:tqPxko+s0.net]
だから何人も.OnActionだって言ってるのにアホなん?

926 名前:デフォルトの名無しさん mailto:sage [2022/10/22(土) 11:20:03.36 ID:c1Knyq/s0.net]
目的や使用場面が不明だけど、それは1Sheet上にボタン100ヶ必要なものなのか?
そのボタンは、どう配列・配置されるものなのか マス目に10×10とかなのか、タテとかヨコにぞろぞろ100ヶなのか
何らかのデータの塊の傍にボタンを動的に配置し、それを押すことでひな型の編集フォームを呼び出すというのか
>>924 とか上に書かれてきたサンプルを参考にして苦心して作れたとしても、結果として「それ違くね?」には成らないのか
設計の妥当性が問われる
「動的に編集ボタンをつくる」ための何らかのイベントが在るわけだし、だったらそれに結びつけた方が無駄が少ない とも

927 名前:デフォルトの名無しさん [2022/10/22(土) 15:30:44.10 ID:UYHwlHOK0.net]
>>926
確かにねー
でもリストの行の横っちょにボタン付いてて
そのボタン押すとその行のデータ読んできて処理するとか
ExcelのVBAじゃなくてもよくあることだし
そう考えると100どころか1000くらいくっついてても
それがユーザーにとって使いにくいとは言い切れない
ケースもあるから何とも言えないね



928 名前:デフォルトの名無しさん mailto:sage [2022/10/22(土) 16:00:19.50 ID:Md3R6uzp0.net]
ポタン100個つけるならフォームは考えないでワークシートでselectionchangeでいいと思う

929 名前:デフォルトの名無しさん mailto:sage [2022/10/22(土) 16:21:19.65 ID:ANF77yYL0.net]
onclickでセルによって判別でもいいかもね

930 名前:デフォルトの名無しさん (ブーイモ MMe6-QNr5) mailto:sage [2022/10/22(土) 17:25:01.86 ID:R6+v0VTJM.net]
>>929
あ、そっちのほうがいいね

931 名前:デフォルトの名無しさん mailto:sage [2022/10/22(土) 18:08:51.98 ID:8rFwb/oz0.net]
ボタンって最大何個ぐらい貼り付けできるんだろ?
メモリがあれば10万個とか貼れんのかな

932 名前:デフォルトの名無しさん [2022/10/22(土) 18:14:52.06 ID:CPpJyo/d0.net]
>>928
>>929
確かにボタンにこだわる必要はないですね
セルクリック時にフォーム呼び出したらいいですね

933 名前:デフォルトの名無しさん mailto:sage [2022/10/22(土) 22:30:23.86 ID:GMPaa0s5d.net]
と言う事で無事解決しましたね

934 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 11:33:27.17 ID:le1S+yxh0.net]
Excelのイベントに onclick とか無いけどな
OnDoubleClick ならあるけど 余計な位置でクリック・ダブルクリックした時に
そのたんびに編集フォーム出るのを対策必要かな
違うイベントに関連付けた方がいいのかな

935 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:22:22.37 ID:BP6ngYdb0.net]
まあワイだったら単純にするために、
セル(か行)を選ばせて、
ボタンではその値を参照してフォームに渡させるって感じで作るけどな
シートにオブジェクト何個も置くのはワイ的に無し

936 名前:デフォルトの名無しさん (ワッチョイ 05da-ze3V) [2022/10/23(日) 18:53:55.43 ID:WPTFsqfB0.net]
初心者は100ぐらい根性で書けばいいのだ

937 名前:デフォルトの名無しさん [2022/10/23(日) 20:53:35.93 ID:+izIRcqGM.net]
>>936
そのあと「これは効率が悪い」と気付いて修正するならいいけど、それしか考えられず500,1000と増やし続けているおじさんがウチの会社にいます。



938 名前:デフォルトの名無しさん [2022/10/23(日) 23:34:27.69 ID:3vnbJWYw0.net]
>>935
セルを選択させてボタンを押してその行の値をユーザーフォームに引き渡すの?

939 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 03:27:38.59 ID:lrg5VPVy0.net]
(;・∀・)1000個やった。。プログラマはすげぇやって思ったけど効率いいやり方あるんか。

940 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 06:08:08.92 ID:6AUN+j8g0.net]
似たような処理ならforでもdoでもいいから1000回ループさせればいいわいな

941 名前:デフォルトの名無しさん [2022/10/24(月) 11:49:03.56 ID:iXy6XZlxa.net]
動いているなら問題ないと思うよ

942 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 20:02:23.15 ID:lrg5VPVy0.net]
時間できたら改修してみるわ

943 名前:デフォルトの名無しさん [2022/10/25(火) 13:18:15.56 ID:dMEmx1y0a.net]
問題なく動いているのを変に直してバグ入れる人よくいる

944 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 14:05:40.72 ID:Awxzqqqu0.net]
ん?
俺の悪口やめろよ

945 名前:デフォルトの名無しさん [2022/10/25(火) 15:35:28.46 ID:zuyTceYk0.net]
wordVBAについて質問したいのですがここでも良いですか?
win10
2019版ですが、ページ番号5のページ全体を選択状態にしたいのですが、ググって見つかったrectangles(1)の手法は2019ではうまくいきません。
解説サイトがExcel VBAに比べてとても少ないので困っています。
ご存知のかたいませんでしょうか?

946 名前:デフォルトの名無しさん [2022/10/25(火) 15:37:35.82 ID:rYg1mhKw0.net]
>>945
死ねよ

947 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 15:39:53.50 ID:PC01Ck0J0.net]
いや、あんたじゃないよ、おれの悪口だよ



948 名前:955 [2022/10/25(火) 15:48:40.06 ID:zuyTceYk0.net]
https://www.wordvbalab.com/code/3737/
ここで解決しました。

ルール違反だったようですみませんでした。

949 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 17:07:14.74 ID:KrF65cxW0.net]
>>948
956が頭おかしいだけだから気にすんな

950 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 01:53:51.72 ID:cEMR/QGK0.net]
今は死ねとか言っちゃいけないんだぞ!

951 名前:デフォルトの名無しさん [2022/10/26(水) 11:34:25.48 ID:gGo/2Fws0.net]
VBAのスレはこの今に存在するし、Excelって書いてあるのに無視して質問してる
更にはあまりにくだらないないようであるし
この手の連中はつけ上がるからな

952 名前:デフォルトの名無しさん (ワッチョイ 8201-yYWu) mailto:sage [2022/10/26(水) 14:36:09.42 ID:xzd5i3vP0.net]
なら誘導してやればいいだけだろ

VBAなんでも質問スレ Part3
https://mevius.5ch.net/test/read.cgi/tech/1631184381/

953 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 19:48:54.22 ID:EO+J62QK0.net]
バカは死ななきゃ治らないそうですよ

954 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 21:41:45.13 ID:Zi5ur2ypM.net]
>>953
それは残念でしたね

955 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 22:17:58.40 ID:izoyFRHN0.net]
>>953
あっ・・・

956 名前:デフォルトの名無しさん [2022/10/28(金) 13:09:52.87 ID:KYP1+/DId.net]
Excel初心者です。
カレンダーから日付入力のアドインをチェックボックスを使って表示・非表示したいのですが可能ですか?
また、スクロールしても画面内の同じ位置に表示し続けることは可能ですか?
できればコードを教えてほしいです(*_ _)

957 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 16:04:55.62 ID:OMbpfHro0.net]
おまいら親切すぎるんだわ
どんだけお人好しなんだ?



958 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 16:17:16.47 ID:n9kqTWYK0.net]
>>957
って思うじゃん?
ここで回答すると、違っていた時やもっといい方法があるときに上乗せして回答される
すっげーいい勉強になるんだぜ

959 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 18:37:43.76 ID:OMbpfHro0.net]
単にマウント取られてるんじゃなくて?

960 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 19:20:57.49 ID:YuCy5lGNM.net]
マウント取られるならむしろ勉強になるだろ

961 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 19:39:15.46 ID:sCscEEFEd.net]
優劣つけたがる奴多いけど
技術的な解決方法の話(こういう方法もあるぞ)だったらマウントいうのはおかしくないか?

962 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 19:49:26.94 ID:xzhsh84s0.net]
質問に対しての回答例ならマウントという表現はおかしいと思うが
その後の雑談は確かにマウントの取り合いに見える

963 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 20:29:32.46 ID:TnsRe9wR0.net]
僕が一番VBAをうまく使えるんだって言いたくなるのはわからなくはない

964 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 20:42:13.46 ID:xzhsh84s0.net]
二位じゃ駄目なんですか

965 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 21:17:01.84 ID:n9kqTWYK0.net]
>>959
頼むからマウント取ってください!
とにかく俺の上のスキルを見せて欲しい。なんでもしますから!

>>961
実際、確実に上って人はいくらでもいるよ

966 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 21:23:26.29 ID:ZY9+XqOP0.net]
お前がぐちゃぐちゃ入ってないで解答教えてやれや
971がやきもきしてるぞ

967 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 00:12:28.15 ID:LP1UZCi+0.net]
>>956
カレンダーアドインは使ったことないんでわからん
カレンダー程度なら自作できるので融通の利かないアドインは好かんのです



968 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 02:12:02.06 ID:Q43C9b/9M.net]
汎用性のある日付入力カレンダーの自作は結構大変だろ
休日祝日の更新処理が面倒で自作はあきらめた

969 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 07:19:37.14 ID:EvNBvM9mM.net]
>>968
最近使ってるが祝日はこれ使うと楽だぞ
https://excelapi.org/docs/datetime/holiday-list/

970 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 07:56:20.37 ID:y8vo38aP0.net]
>>968
> 休日祝日の更新処理が面倒で自作はあきらめた
それ汎用性のある日付入力カレンダーでやることじゃないだろ...

971 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 09:53:33.94 ID:WkAX7jzB0.net]
日数算出するの面倒いよな
うちの会社は祝日が全部休みじゃないし

972 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 10:12:47.32 ID:S8npcbCXM.net]
結局、日付入力はカレンダー形式やめてテキストボックスとスピンボタンで適当に誤魔化した

973 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 11:10:55.70 ID:zPpzpsf30.net]
>>956
アドインでは無くてユーザーフォーム作ってそこにボタン配置してシート上のセル操作ならやったことある
[BttnF] という名のユーザーフォームを呼び出すのに、A1セルにボタン [cmdBttnF] を配置(ウィンドウ枠の固定でA1はずっと表示してるから)

Private Sub cmdBttnF_click()
With BttnF
.StartUpPosition = 0
.Top = 100
.Left = 800
.Show vbModeless
End With
End Sub
これだけで、画面スクロールしてもシート上の同じ位置に居続けるし、もちろんフォーム掴んで動かし回してもいい ×で閉じることもできる
うっかり閉じても、又A1セルにあるボタン押せば表示できるし

974 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 11:19:55.02 ID:LP1UZCi+0.net]
>>956
少しだけ補足すると、質問の文章がきちんと書かれていないので回答しにくい部分があって
EXCELのバージョンとカレンダーアドインについての情報がないので私の環境での説明では質問者のものと異なるかもしれない
アドインの表示/非表示はVisibleとかの表示関係のプロパティーは調べないのか
スクロール範囲は「ウインドウ枠の固定」かユーザーフォームとかが考えられるんじゃね

975 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 14:34:50.58 ID:zPpzpsf30.net]
>>956 「カレンダーから日付入力」のアドインは個人用アドインに取り込まれて
毎回それをダイアログから追加するか貼り付けたまま使い続けるかの使用方法しかない様子
マクロの記録で一連の操作をしても望む動きしないし、ユーザーフォームに貼り付けるとか
コピペとかいろいろ試したけど、どれもできず断念
作者に交渉して「こういう使用方法したい」と改善依頼するしかないような 誰か他の案プリーズ

976 名前:デフォルトの名無しさん [2022/10/29(土) 17:02:02.57 ID:pObfyH4Kr.net]
初心者あるあるの後だし条件

977 名前:デフォルトの名無しさん [2022/10/29(土) 18:34:46.28 ID:XVu26ZuG0.net]
質問です。
VBAの処理の途中経過をログのようにコマンドプロンプトに表示させたいのですが、
どうすればよろしいでしょうか?
高速だと尚嬉しいです。



978 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 19:12:37.96 ID:LP1UZCi+0.net]
>>977
表示だけならユーザーフォームにテキストボックス貼り付けるだけでいいんじゃね

979 名前:デフォルトの名無しさん (ワッチョイ 69cd-Tk+f) mailto:sage [2022/10/29(土) 22:00:56.05 ID:Ty5cM9IY0.net]
>>977
debug.printでイミディエイトウィンドウじゃだめなの?
フロートさせることもできるからわざわざコマンドプロンプトに投げなくてもいいと思う
https://i.imgur.com/yslLf52.png

980 名前:デフォルトの名無しさん [2022/10/29(土) 22:52:21.52 ID:XVu26ZuG0.net]
ありがとうございます。
フォームか、イミディエイトウィンドウを独立に出すのですね。
VBAを別のシステムから呼び出すのですが、エクセルをアクティブにしていなくても前面に出てきますでしょうか?

981 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 23:18:52.58 ID:PRTnNeqn0.net]
別の、、システム?

982 名前:デフォルトの名無しさん [2022/10/29(土) 23:36:52.05 ID:pTxh4CzU0.net]
Pythonとかじゃね

983 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 23:38:18.77 ID:epZm7Ut5M.net]
Excelを他のシステムから呼び出すならVBAではなくてOfficeアドイン(COMアドイン)

984 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 23:45:53.72 ID:VMSbDQpEd.net]
そこまでの事するわりにここで質問するとかw

985 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 01:27:01.53 ID:PMPwr2WR0.net]
すみませんいろいろとあるのですが、とりあえずイミディエイトウィンドウで試してみます

986 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 03:01:55.11 ID:fzG7wj8e0.net]
よく分からんけど、VBSなら呼び出しも黒窓も両方できるぞ。

987 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 08:52:03.88 ID:OaWd/xmf0.net]
>>986
コマンドラインプロンプトからvbs経由でエクセルのマクロ叩くのはいいけど、そのマクロからDebug.Print的なのを画面に書き出すのはどうやるの?マクロからテキストファイル開いてログを書き出す方法ならわかるけど



988 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 10:19:47.96 ID:5A/AyQcT0.net]
ドラマや映画の中でよくある、でっかいマルチモニター複数枚に
犯人画像や防犯カメラ映像、それに並べてプロファイリングや位置情報やらの隅っこで
黒窓の中に意味不明な文字列がズラズラ流れてるような そんなのを作りたいんだと思う おれはつくりたい

989 名前:デフォルトの名無しさん (ワッチョイ 1901-Uvty) mailto:sage [2022/10/30(日) 10:52:42.98 ID:PMPwr2WR0.net]
>>988
イメージとしてはそうです。
ありがとうございます。
黒窓だとログっぽさが出て使う人がわかりやすいかなぁと思っていた次第です。
Microsoft同士なのに単純には出来ないんですね

990 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 11:37:34.89 ID:LcJSLwmnd.net]
ログっぽさとかw
VBAだけでやろうとせずにPowershellでも使ってファイルに出力したログをずっと表示するような仕組みでいいんじゃないの
画面に流しても見逃したらログのいみなくね?

991 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 105日 4時間 30分 0秒

992 名前:デフォルトの名無しさん [2023/07/25(火) 15:40:42.48 ID:9LIYNDaoI]
要するに少子化対策ってのは本来て゛あれば孑なんか産んた゛ら遺棄罪で逮捕懲役にされるへ゛き貧乏人に孑を産ませようという遺棄の幇助だろ
男は6○代て゛も妊孕能あるが女はЗ○才で妊娠困難.ひと昔前なら女学校時代に孑を産んた゛り.許嫁がいたり,行き遅れとか言われたりと
女性の特性に合致した社会風土によって多くの子が作られていたわけた゛が.そんな大事な時期を資本家階級の家畜にする目的て゛,洗腦して
奇妙な社会的圧迫を加えて子を産めなくしてるのか゛最大原因た゛ろうに更に子供手当だのと憲法の下の平等すら無視した社會的歪みを加えて
余裕か゛あるから孑を作るという真っ当な家庭の孑が10萬のiPhone(笑)とか持ってて,私は買ってもらえないから始まって.公明党齋藤鉄夫
国土破壊省によるクソ航空騷音に勉強妨害されて精神的圧迫されて.路上で幸せそうな親孑に斬りつけた不幸JСみたいのを増やそうとか
奨学金ガ━なんてミ二バン飲酒運転して事故って死んでる某大生とか典型た゛か゛そいつらに遊ふ゛金くれてやることに何の意味か゛あるってんだか
やることなすことすへ゛てがてめえの私利私欲のために賄賂癒着してる資本家階級の利益を追求してるた゛けなのがハ゛レバレでキモチワルヰな

創価学會員は,何百万人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まで出てる世界最悪の殺人腐敗組織公明党を
池田センセ━か゛ロをきけて容認するとか本気で思ってるとしたら侮辱にもほと゛か゛あるそ゛!
hТΤрs://i,imgur,сοm/hnli1ga.jpeg






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef