1 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 23:41:03.61 ID:rni/4bMj0.net] !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part60 https://mevius.5ch.net/test/read.cgi/tech/1552736349/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
299 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 06:58:44.20 ID:SD95iW5CM.net] >>298 映像はどうみても20年以上前だな 的確な対応で現在も使える
300 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 09:27:28.15 ID:ztZYN21m0.net] セルの値を数式に代入って無理でしょうか? たとえばA1セルに乱数が入ってた場合に どっかのセルに =A2-乱数 という数式を代入したい感じです
301 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 09:41:17.90 ID:5+y7OppMM.net] =A2-A1
302 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 09:43:43.65 ID:ogyeLG/uM.net] 演算あり値コピーの話?
303 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 09:52:11.18 ID:AHnUJ8Jk0.net] いやセル番地じゃなくて値を数式に代入したい感じです たとえばA1セルに2,134という数字が入ってた場合に =A2-2,134 という数式をどっかのセルに代入 A1セルが387だとしたら =A2-387 説明下手糞で申し訳ないです
304 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 09:54:20.78 ID:hC9fKDDe0.net] >>300 書いている意味がよくわからんど セルに式でも値でも代入できる ただ、乱数は曲者で常に変わるから もう少しやりたいことを具体的に書き込もう
305 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 10:00:56.85 ID:hC9fKDDe0.net] >>303 乱数は曲者で A1セルが387だとしたら =A2-387 ほかのセルに「=A2-387」を入れた時点でA1セルは変わるから もう少し何をしたいのか書くように
306 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 11:59:27.46 ID:zi+TqRd2r.net] そもそも数式はスレ違いだろ VBA関係ないならどっかエクセルの使い方の板かスレかさがせ
307 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 13:17:58.06 ID:/GezpU1zp.net] >>305 A1セルの乱数結果が現時点で387だとしたら 変数(仮にrとする)に、387を格納して ほかのセル(仮にB1とする)に"=A2-r(中身387)"を入力したいって事? それなら確かに関数じゃできないよね
308 名前:284 mailto:sage [2019/05/22(水) 13:58:22.19 ID:WDej9GuM0.net] >>303 Range("C3").Value="=A2-" & Range("A1").Value じゃ駄目?
309 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 16:05:46.41 ID:hC9fKDDe0.net] >>307 それに意味あると思えない、乱数なんてふつうは仕事に使わない 例えば、学校の先生あたりが、引き算足し算などの問題を自動的に作りたいとか であれば、A列に乱数1の結果をB列に乱数2の結果を C列に計算式を、D列に回答をで別シートなどで問題文を作る このぐらいだな
310 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 18:12:45.70 ID:j7jZt3jJM.net] 説明下手糞ってレベルじゃねぇぞ…
311 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 18:48:51.39 ID:RRuRLAJCM.net] >>309 ちょっとしたシミュレーションで使うかもしれない。(Excelでやるとは言ってない) >>302 じゃダメなの?
312 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 19:16:53.47 ID:CZzIGWUTM.net] >>311 ちょっとしたシミュレーション・・無いだろ この文書力だとセルに入れたい式って 計算式の文字列かもしれん
313 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 22:59:24.50 ID:bxcYYOqD0.net] もうあれだ。 ここは、何の用途に使うのか当たられたやつが優勝スレにしよう。
314 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 23:13:17.16 ID:K7mhmRd90.net] 完全乱数を使って円周率の計算をする
315 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 07:43:57.81 ID:mLR+BkfhM.net] 別に用途は何でもいいさ 興味ゼロってわけじゃないけど
316 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 10:22:05.81 ID:WDXUv9KM0.net] こっちで作って欲しいと言われたものをつくってると そんなもの作られたら困る 楽になって人が減らされると困る、と古参がちくちく この古参、自分の作業を楽にしたい時には これがもう偉そうな態度で、「作らせてやる」とでも言わんばかりに頼んでくる どうしたいんよもう っていうことないっすか もう面倒なんで職場で作るのやめようかな すんません落書きしちゃって
317 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 10:56:07.55 ID:cSCM+dO10.net] 厚労省で配布されている https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/000116890_00001.html にある https://www.mhlw.go.jp/content/10900000/000494621.xlsm なんだけど、内容は単純で 1件いくらの検査があって、件数を入力すれば請求書が作成されるというもの 1シート=1自治体なので、複数の自治体へ請求する場合は、ユーザーがシートコピーして作る VBAで各シートを集計して総括表に転写する なんだけど、VBAみて 変数が多すぎてコーディング中に間違えても気づかんだろってのと 引っ張ってくるセルをConstで決め打ちしてるけど これ後のメンテナンスでセル一個挿入することになったら修正大変やん と思いました。 というか、エラーメッセージの所で間違えて 行を表示すべきところを列表示しているけど これこそ変数多すぎて分かりにくくした事が原因だと思います。 じゃあどうする、と言われたらみなさんならどうしますか? 同じ形の複数の2次元の表を合計するだけなんだから スタート地点とゴール地点決めてやって 後はずらしていけばいいやんと思うのですが 後、小数とか負の値ぶっこんでも動作するのはモヤモヤするんだけど まぁこの辺やりだしたらキリがないので使わせる相手によってどうするかは変えますかね
318 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 11:43:15.47 ID:mLR+BkfhM.net] >>316 義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ、 と教えてやればいい。 もしかしたら「手下にプログラミングさせればいい」と勘違いするかも知れないが、 それでは通用しないよと言ってやろう。 こういう話もあるし https://lite.blogos.com/article/376203/
319 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 16:11:36.77 ID:hFcQqqxb0.net] >>316 ただ単純に業務全体を見ずに作るから役に立たないんだよ 業務に対して目的と効果を文書ではっきり示せば古参の意見を聞かなくていい
320 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 16:13:59.49 ID:X/3FpVKz0.net] >>316 その古参の上司に報告しろ
321 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 16:14:38.98 ID:hFcQqqxb0.net] >>317 すまん、リンク先を読む気もしない
322 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 17:56:30.55 ID:pyUsEGpsM.net] >>317 べき論の先には「VBAを使うのをやめるべき」という結論しかないから不毛よ 俺ならどうするか?下請けに丸投げして終わりだよ
323 名前: mailto:sage [2019/05/23(木) 19:35:05.76 ID:QGT5qlDg0.net] >>318 >義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ 脅かすことでプログラミングができるようになるとはおもいませんが… プログラミングって極めて創造的な作業ではないでしょうか、似たようなものは数学の証明問題だと思いますが証明問題を脅かして解けるようになるとは思えません
324 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 20:39:50.63 ID:X/3FpVKz0.net] 機械学習やweb系ならともかく、 VBAレベルなら極めて事務的な仕事だろう。どこにも創造性なんて無いよ ルーチンワークを自動化させてるだけ
325 名前: mailto:sage [2019/05/23(木) 20:58:31.34 ID:QGT5qlDg0.net] >>324 でもそのルーチンワークを実際に記述するとなると一本道というわけにはいかないでしょう? 論理的な一貫性を維持しながらしたいことを記述するのは、いわれているほどやさしい仕事ではない
326 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 21:06:10.14 ID:X/3FpVKz0.net] >>325 一本道だよ、全然難しくない 強いて言えば例外を先に全部列挙した上でシステムに放り込むという順序の変更がある程度 面倒なのは仕様変更と、使いにくいというオバハンの嬌声。オバハンにalt+F8は覚えさせたけど、まぁそれぐらい
327 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 22:12:48.96 ID:0Fgm70+GM.net] まあ、自己満足で終わるなら簡単だな おばはんにも満足いくように作るんだよ
328 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 22:27:50.56 ID:49rcJhkB0.net] >>317 コンスト過ぎてワロタ。
329 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 22:55:08.55 ID:EGX4zlJj0.net] >>323 それもそうだが、その老害を大人しく させることができれば上出来と考えた
330 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 01:42:55.95 ID:9kKOGm+S0.net] Excel2016にてpersonal.xlsbに「保存せず閉じて開き直すマクロ」を作ったところ挙動が変です Sub ReOpen() Dim wb As Workbook Dim path As String Set wb = ActiveWorkbook path = wb.fullName '※1 If MsgBox("本当に変更を取り消しますか?", vbYesNo) <> vbYes Exit Sub End If wb.Close(False) Application.Wait([Now() + "00:00:01"]) '※2 Workbooks.Open(path) End Sub このマクロ自体は動くのですが、※1のIf〜EndIfを消すと※2のOpen実行直後にExcelが通知無く落ちます また、※1※2を両方消してマクロ実行した後、手動でブックを開き直すとやっぱりExcelが落ちます 対象のブックはフォームやマクロを含んだ3MB程度のxlsmファイルです MsgBox出さないだけでなぜ不安定になるのか、思いつく原因を教えて頂けると幸いです
331 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 01:44:27.87 ID:9kKOGm+S0.net] あ、Ifの末尾のThen忘れたので脳内で補完してください
332 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 06:40:29.33 ID:/lvzTPqGM.net] >>331 ハイ イイエ が逆なのも利用者が自動変換するんですね
333 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 06:54:20.73 ID:/lvzTPqGM.net] >>332 すまん、継続がキャンセルか
334 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 09:59:52.88 ID:RAYiE+wA0.net] >>330 2019で試したけど落ちなかった > Application.Wait([Now() + "00:00:01"]) これを抜いても同じ カンで答えると、再計算が邪魔してるような気がする ・一度再計算や描画、イベントを切ってみてはどうかな Application.EnableEvents = False Application.ScreenUpdating = False Application.Calculation = xlCalculationManual ・あとはこの部分のウェイトをもう少し長くする >Application.Wait([Now() + "00:00:01"]) ・まっさらなブックで試してみる
335 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 07:54:51.56 ID:TRopVMeK0.net] アドインって、ファイルを閉じたら、 一緒に閉じられるものだと思ってたけど、 VBA実行中は残るということか。 一緒に閉じられたら、途中で止まっちゃうからな。
336 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 08:55:38.15 ID:nkVbmNSl0.net] vba実行中というかずっと残るっぽい
337 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 09:55:42.63 ID:wPp02VNQ0.net] エクセルの機能に追加してるからな アドイン使ったファイルをアドインがないエクセルで編集すると壊れるよね
338 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 10:07:50.37 ID:wPp02VNQ0.net] >>330 経験上納得できない動作をするときは何か見落としているところがある step実行で場所特定して、各変数の値が壊れてないか確認 イミディエイト画面で入力してみるなど
339 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 10:14:01.11 ID:D2XIJyZK0.net] Excelに限って言えば、Excel自体に変な仕様が多い これが男を惑わせる
340 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 04:10:46.96 ID:xQGdFtWrM.net] >>334 元に戻さないアホがいると大迷惑になるな >>335 アドインはExcelに組み込むよね >>339 配列数式なんか使うとブーイングになるよな
341 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 15:23:19.13 ID:/taseRUt0.net] 以下の状態だとB1〜B3は全て1:1048576と表示されてしまいます Cells.SpecialCellsをRange("A1").SpecialCellsに変更した場合はB1〜B3は全てA1と表示されます Ctrl + Endで選択されるセルの番地を文字列として取得するにはどうすればいいですか? A B 1 Sheet1 =fn(A1) 2 Sheet2 =fn(A2) 3 Sheet3 =fn(A3) Public Function fn(sSheetName As String) As String fn = ActiveWorkbook.Worksheets(sSheetName).Cells.SpecialCells(xlCellTypeLastCell).Address(False, False) End Function
342 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 15:41:58.63 ID:/taseRUt0.net] 関数呼び出しではなくマクロやボタンクリックでなら問題なかったので そっちの方法に切り替えますすみません
343 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 06:52:50.90 ID:lha2yOvQp.net] 入力項目を複数用意したinputboxって作れますか?
344 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 07:55:59.33 ID:6csejWaN0.net] >>343 どんなものを考えているんだ
345 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 08:12:50.88 ID:lha2yOvQp.net] >>343 ごめん入力フォームじゃなくていいかも 最終的にやりたいことは、以下のボタン等が設置されたユーザーフォームを作ることです(他の要素も考えたら普通にinput boxでは無理と気づきました) ・AUTO openで開く ・押すと特定セルに文字が入力されるボタンを複数設置する ・カレンダーを設置する ・押すと印刷処理を行いつつファイルを上書き保存し閉じるボタンを設置する
346 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 08:30:52.72 ID:jh6nOFVKM.net] >>345 こんな特殊なものAUTO openでやるって非常識だな シートのマクロで十分だろてかマクロは印刷して保存だけでいいだろ それも自動記録でも十分
347 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 08:37:02.21 ID:jh6nOFVKM.net] Excelの勉強不足だろ
348 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 08:47:00.50 ID:6csejWaN0.net] >>345 それユーザーフォームにする必要がないような ユーザーフォーム超めんどいから止めたほうがいいよ あと、カレンダーはデイトピッカーと言う
349 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 09:45:56.73 ID:W0zr6KdF0.net] この程度の理解力だとカレンダーが必要かもわからない カレンダーなんか別にシートでもできるけど、どこまで使うかがわからないから 最適な解もわからない 入力をシートに反映するなんて普通にセルを参照すればいいだけ ExcelもVBAも1%以下の理解で動作仕様を描くのではなく結果で何をしたいかを描くべき これでも少しおだててるが
350 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 10:37:56.08 ID:6csejWaN0.net] おだてるの意味間違えてるよ。
351 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 10:41:41.92 ID:W0zr6KdF0.net] >>350 いや〜そうでもないよ 理解力は両方とも0.1%〜0.01%程度と思ってたから
352 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 11:25:38.71 ID:bVlhmZqp0.net] てか、みんなが >>345 ←この説明で全容を理解できてるのがすごいとおもったけど いろんな意味に解釈できそうで、おれにはそのうちの一つには絞りきれないんだけど
353 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 11:44:36.09 ID:dknccbkiM.net] >>352 教えたい人種の大半は問題の表層を自分の得意分野に転換して持論を得意気に展開してるだけ。 質問者の問題の背景に寄り添って解決を計ろうとする者は僅か。
354 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 13:50:33.03 ID:6csejWaN0.net] >>352 どういうパターンであれ、大体ロクでも無い物だという判定ぐらいなら可能
355 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 14:00:43.29 ID:zUYqf9yC0.net] >>345 ここの人達はマウント取りたいだけで実際はあまりスキルが無い人が大半なので程々に聞いていた方が良い。 あなたの要望については疑問が1つ、可能だけどあなたのスキルから考えて技術的に難しい点が1つある。 疑問は、AutoOpenで開いて、閉じるボタンで保存終了するのならExcelで作る必要は無いのでは?という疑問。 普通にC#辺りで作った方が適してると思う。この後に述べるけど、カレンダーの件もC#等の方が簡単。 技術的に難しいのはカレンダーの実現。 サブクラスとWin32の知識が無いと難しい。 後々を考えると汎用的にクラス作った方が良いからそういう技術も必要。 もっとも、ファイル追加とか自作するとかで良ければスキルが無くても出来るともいえる。
356 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 14:36:42.16 ID:dknccbkiM.net] >>355 この人はマウント取りたいだけで実際はあまりスキルが無い人なので程々に聞いていた方が良い。
357 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 14:38:46.48 ID:YnNlAtYud.net] >>356 そうくると思ったw
358 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 14:55:28.65 ID:W0zr6KdF0.net] >>355 具体的に簡単にできる方法を説明してやれよ
359 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 14:59:26.84 ID:6csejWaN0.net] >>358 まだ出せない 要件定義ができていないので、そもそもどういう設計が最適かも分からない 現状のまま作るのはめんどくさすぎる 具体的に言うとデイトピッカー、お前だ
360 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:11:18.55 ID:W0zr6KdF0.net] >>359 要件定義・・?この理解力だと 当然仕事に対する理解力もないってことだよ
361 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:14:09.75 ID:6csejWaN0.net] >>360 そこを何とかするのが面白いんじゃないの マウント取りたいならハエやカエル相手にしてればいいだけだしね
362 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:29:12.90 ID:W0zr6KdF0.net] >>361 だったら適当にすれば(笑) 出来ることを安易に提案することの影響を考えろよ 例えば、自動計算を止める こんなのそのままにされたら困るほかの人いるだろ でも単にONとOFFじゃあだめなんだよ、直前を記録して戻す また、エラーや中止でも戻さないとな
363 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:39:29.96 ID:W0zr6KdF0.net] >>361 きみはハエやカエル相手にして面白がってる 引きこもりさんってことね
364 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:42:22.97 ID:6csejWaN0.net] >>362 >>363 韓国人?
365 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:42:59.47 ID:6csejWaN0.net] おだてるの意味もわかってないみたいだし、韓国の方でしたか そりゃ話も合わないな
366 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:44:13.29 ID:W0zr6KdF0.net] >>364 きみはハエかカエル?
367 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:45:54.11 ID:W0zr6KdF0.net] >>365 ハエかカエル? しかたないな
368 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:53:54.48 ID:6csejWaN0.net] おだてる・・・w
369 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 16:04:29.34 ID:6csejWaN0.net] これ以外の高速化ってありますか? https://15g.jp/post-314/
370 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 16:27:23.36 ID:aE9KPqY2M.net] >>369 これで問題ある場合はループしてるロジックが悪いか ネットアクセスではありませんか?
371 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 16:42:48.59 ID:6csejWaN0.net] >>370 運用方法が急に変わりまして・・ 毎日 100ループ→毎時間 20000ループ 他の高速化が無いものかな、と 特になければ諦めてロジック組み直します
372 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 16:43:14.09 ID:2J++TcAHM.net] 再描画を止めるのは好かんな
373 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 17:19:36.20 ID:aE9KPqY2M.net] >>371 セルへのアクセスを減らし 変数テーブルで処理をするぐらいかな簡単なのは
374 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 17:53:10.57 ID:aE9KPqY2M.net] 変更のないセルはかきかえない 変数の型をこていするかな
375 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 20:18:12.39 ID:28fQIolrF.net] >>369 完全に嘘。 そもそも、それなりに書ける奴ならこの手法では速くならない。
376 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 20:19:14.57 ID:28fQIolrF.net] 逆に、これで格段に速くなったら恥ずかしいと思うべきだ。
377 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 20:29:10.36 ID:eWpgS1rnF.net] 高速化については下記が参考になる。 https://excel-ubara.com/excelvba4/EXCEL228.html
378 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 21:03:48.67 ID:TIEuQB3m0.net] >>345 できるけど、一番最後の処理が事故を起こしそうだから1クッション置いた方がいいかも
379 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 21:13:42.01 ID:Soi68xiZ0.net] セルというかシートは使わない データ保存には外部バイナリファイルを読み書きする
380 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 21:16:23.22 ID:TIEuQB3m0.net] >>369 これは描画を抑制するからその分の時間がかからなくなるというだけなので、表示に因らない処理の速度アップはまた別だよ
381 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 22:07:18.66 ID:9GzIJnKt0.net] 何でユーザーフォームを使うのかって? シートに書くより格好いいからに決まってるじゃんwwwww いや、わりとマジでそんなもんだと思いますけど。 だって、ユーザーフォームじゃなきゃ再現できないようなものって、 普通の事務処理でそんなに無いでしょ。
382 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 01:04:45.98 ID:Rr62XR8Vx.net] ワークシートのイベントに重めの処理を書いている場合、シート側のイベントを避けるためユーザーフォームで出入力制御や演算を処理させることはある
383 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 08:43:02.61 ID:8P1bQTIM0.net] 入力のしやすさとかフォームの方が良い場合もあるし、ユーザーインターフェイスとしてはフォームの方が優れている。 Excel使わずにメモ帳とCSVで事足りるってのと同じような考えの人がいるな。
384 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:44:28.89 ID:CE2aKfrCH.net] 初心者レベルの知識で長いことVBAいじってる者なんだが、 functionプロシージャって使わなくない? 普通のsubしか使ったことない どんな時に便利なの?
385 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:47:42.25 ID:rhAlx8Ij0.net] >>384 値を返す時。便利というか必須。=sum()で値が返らなかった時の事を考えてみると良い むしろfunctionが普通なのだ vbaの場合、ワークシート変更しておしまいってパターンが多いから恩恵を得にくいけどね
386 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:55:56.33 ID:JWvhlEsx0.net] Findを利用したコードについて教えて下さい。 書籍、サイトで掲載されていたコードを利用し、少し変えたものです。 Findメソッドを使ってC列の”たろう”を検索します。 探し出したら、A〜C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1〜G1に上書きされてしまいます。 Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。 どのように違うのか、ご指導お願いします。 ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです A B C D E F G 1 日付 売上 担当者 000 AAA たろう 2 000 AAA たろう 333 DDD たろう 3 111 BBB はなこ 4 222 CCC たかし 5 333 DDD たろう 6 444 EEE はなこ 7 555 FFF くみこ
387 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:56:25.54 ID:JWvhlEsx0.net] 386のつづき Sub Find() Dim temp As Range, tempAddress As String, i As Long With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2) Set temp = .Find(what:=“たろう”) If Not temp Is Nothing Then tempAddress = temp.Address i = Cells(Rows.Count, "E").End(xlUp).Row Do temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E") Set temp = .FindNext(temp) Loop While temp.Address <> tempAddress End If End With End Sub Sub copy() Range("A:G").Clear Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1") End Sub
388 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 10:10:54.71 ID:CE2aKfrCH.net] >>385 うーん、値を返すのは分かるんだけど、わざわざsubから取り出す意味が分からんのよ subの中に入れちゃえば良くない? コードが長くなる時とか、他のプロシージャにも流用したい場合なんかにfunctionで別プロシージャにしとくと分かりやすいってこと? そういやfunctionを関数みたいに使う場合もあると聞いたな
389 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 10:32:00.95 ID:P/fMeUQp0.net] >>384 >>385 意見に賛成だが少し付け加えます。 基本的にsubにしろfunctionにしろ長くだらだら作らない 出来るだけ意味のある汎用性のある処理はそのルーチンを呼び出すようにする その時に値を返せるfunctionの方が圧倒的に有利 初心者は同じようなルーチンをコピペで増殖させるが、後々メンテナンスに困る それらをライブラリーとして持つと自分の資産になるんだけどね、それが重要なんだよ
390 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 11:24:47.87 ID:aRCJr/ZnM.net] >>384 ネタでしょ? モドリッチがない方が便利だなんて、そんな訳ないじゃん
391 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 11:26:30.05 ID:CE2aKfrCH.net] >>389 あーその説明で分かった ありがとう たしかに今までは、動けばいいやで作ってたからコードが長くなってた 顧客コードから各データを検索する時なんか、 Cells(i,2).value=Range(Z:Z).Find(Cells(i,1)).Offset(0,5).Value みたいなコードを10行とか書いてたわ
392 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 12:23:13.41 ID:1q3vxt7ga.net] OutlookのVBAもここで可でしょうか? 違ったら誘導お願いします 上司へ「承認お願いします」と言った趣旨のメールを送った際、上司がボタン1つで承認する旨のメールが送れるようにしたいです しかし複数いる上司全員にマクロの設定方法を教えるのは面倒です 私から送信するメール本文にマクロを組み込み、上司が受け取った際に本文にあるリンクを押せば(マクロを自分で設定していなくても)返信メールが自動作成されるような手法が取れればベストなのですが、そういったことは可能なのでしょうか?
393 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 12:47:38.41 ID:i1bbppKtM.net] >>392 ウィルスメールの作成方法きいてる様なもんだなw
394 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 12:51:48.37 ID:Z4r31YmpM.net] >>392 まずは社内でOLのセキュリティ設定がどうなのか。 ザルならやりようはいくつもあるが、ガチガチなら選択肢は少ない
395 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 13:44:15.47 ID:P/fMeUQp0.net] >>392 まあ、バカ上司をサポートするのと バカ上司の影響をサポートするのと どちっがしたいんだ?
396 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 13:45:21.90 ID:8P1bQTIM0.net] >>388 VBA初心者にありがちな意見だね。 プログラムを組む時の考え方が全く違う。 組める奴なら最初から構造的に考える。 動きゃ良いなどと考える奴はいない。
397 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 13:48:09.91 ID:8P1bQTIM0.net] >>392 マクロでやらなくても承認ボタンを追加する機能があった筈だが。
398 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 13:50:35.37 ID:i1bbppKtM.net] > VBA初心者にありがちな意見だね。 はい、きょうもマウント取りたい人が来ましたよ
399 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 14:01:27.19 ID:8P1bQTIM0.net] >>391 >>389 の言ってることは全くその通りなんだが、FunctionにしろSubにしろ、内容が汎用的なものをまとめる、同じような処理を纏める考え方をするようになると最初から構造的に組むようになる。 その方が圧倒的に楽だから。 あと、例に挙げてるコードは良くない。 ブックやシートの省略はバグの元。