Excel VBA 質問スレ Part49©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/06/26(月) 02:15:14.60ID:T3ylemnb0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

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

※前スレ
Excel VBA 質問スレ Part48
http://mevius.2ch.net/test/read.cgi/tech/1494890685/

※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2デフォルトの名無しさん (アウアウエー Sadf-hzVx)
垢版 |
2017/06/26(月) 05:44:32.43ID:SxRL95TLa
うんこ
2017/06/26(月) 06:30:06.46ID:K3TbTzv30
>>1


>>前1000
御目
4デフォルトの名無しさん (アウアウエー Sadf-AGoN)
垢版 |
2017/06/26(月) 13:46:58.30ID:2dV2LE9Ka
おちるな!
2017/06/26(月) 17:31:56.55ID:mUlZZrNcd
埋め
2017/06/26(月) 19:50:29.41ID:mUlZZrNcd
Everything breaks.
2017/06/26(月) 22:30:10.16ID:9LdZXFFA0
地獄の社内SE
https://anond.hatelabo.jp/20170626005657

> 社内SEはなんとなく楽そうなイメージがあったので、就職した。
> 言語はエクセルVBAとVB.NET 1.0。
> 中身を見るとどちらもかなりやばい。
>
> VBA編
> ・ウォッチウインドウを知らないのか、変数はすべてセルに入れてる。変数名はすべてRANGE("A1").valueみたいな感じで全く意味が分からない。
> ・処理遷移がおかしい。
> セルに1を入れる。そのセルのchangeイベントで処理が動くとか。SHIFT+F2が無力化されてる。
> ・なるべくワークシート関数で処理してる
> データベースからとってきたデータを丸ごとワークシートにコピーしてif,vlookup,match関数を駆使して帳票にしたり、CSVにしてる。
> データ100件制限があったり、1関数を直すときは100行コピーしないといけない。画面中に埋め尽くされたワークシート関数をみて途方に暮れる。
> ・format関数を知らない。
> 8桁の日付をとりたいときyear、month、day関数がワークシートにあり、
> その下の行で月の二けた判定、日の二けた判定のif関数で頭の0をつけ3行目でconcatenateしている
> ・タイマー起動
> 毎朝100本ぐらいのマクロが動いてる。タイマー起動なので、毎日セットしないといけない。(タスクスケジューラーを知らない)
> がんがんエラーが発生するので、マクロ設定をエラー処理対象外のエラーで中断にしないと動かない。
> ・遅い
> textboxのchangeイベントでDBからのデータ取得処理を入れているので、データが多くなると1文字打つごとに数分待つ状態。exitイベントを知らないらしい
> DBの更新処理でもテーブル全件とってきて、ループしながらキーが一致するのを探して更新。
> ・変数や関数のスコープの管理
> ない。基本グローバル。
> ・クラス
> ない。
> ・ネスト
> ない。
> そんなつっこみどころしかないEXCELマクロが200本以上ある。
> おじいさんが20年にわたって深夜残業や休日出勤を厭わず作ってきた、地獄の社内システムの担当になったらしい。
2017/06/26(月) 22:46:39.40ID:sK3t30Mo0
>>7
ちょっとそうぞうしただけですっげーーーーーーーーーーーーーーーゲンナリした
うぇっっ
2017/06/26(月) 22:56:04.38ID:TlqSsAWd0
地獄とか書いてるけど、
全然地獄じゃないんだろうな。

強敵と戦う悟空みたいな感じで。
10デフォルトの名無しさん (ワッチョイ 970d-q+YL)
垢版 |
2017/06/26(月) 23:06:06.76ID:Wf2yMC4X0
VBAが仕事っていいじゃねーか
業務の合間にマクロ作ってるけエクセルが得意な人扱いしかされない
カラオケが上手いとか酒が強いとかと同じ扱いだよ俺もVBAだけやってたいな
2017/06/26(月) 23:18:33.41ID:NfcBoQUW0
何か公開するとか解説記事を続けて書くとかしないと残るものがないよな
12デフォルトの名無しさん (ワッチョイ 9711-AGoN)
垢版 |
2017/06/27(火) 00:31:50.14ID:Ou4JxjyB0
>>7
ヤバすぎでしょ
2017/06/27(火) 01:25:43.69ID:mSdvPxdC0
>>9
おれ、ああいうののメンテナンスする仕事したこと有るけど地獄だよ。
2017/06/27(火) 05:39:28.87ID:RyWS1Zia0
そこまでわかってるなら直すだけじゃん
2017/06/27(火) 12:11:28.10ID:VIhV6lAx0
inputとoutputがわかってんなら作り直したほうが…
16デフォルトの名無しさん (アウアウエー Sadf-AGoN)
垢版 |
2017/06/27(火) 13:08:41.86ID:NeDeRylha
どう考えてもイチから作り直すべきだが、それを現場がどう理解してるかだわ
セルに値が入ってないと管理できない!とかありそう
2017/06/27(火) 20:49:18.00ID:s+Xomzrw0
質問失礼します。
ある一つのセルに、氏名コメント改行文字が5人分入っていて、選択するとformにテキストボックスが5人分用意されている所に、それぞれの氏名に合わせて入る様になっています。

やりたい事は、formのテキストボックスに作業者が入力したのの更新履歴を付けたいのです。
作業者は自分の氏名のテキストボックスに入力することになっています。

コマンドボタンをクリックしたタイミングで、どのテキストボックスが最後に変更されたのか取得できる方法が有りましたら教えてください。
2017/06/28(水) 01:46:45.72ID:YSCBV96g0
>>17
AfterUpdateイベントやChangeイベントで最後に更新されたテキストボックスを記録して、ボタンを押したときにその内容を読み取る、みたいな感じになる。
↓こんな感じ

Private LastUpdated

Private Sub TextBox1_AfterUpdate()
LastUpdated = "TextBox1"
End Sub

Private Sub TextBox2_AfterUpdate()
LastUpdated = "TextBox2"
End Sub

Private Sub CommandButton1_Click()
Dim str
If Not IsEmpty(LastUpdated) Then str = Me.Controls(LastUpdated).Text
'処理
End Sub
2017/06/28(水) 01:49:22.55ID:YSCBV96g0
>>17
追伸
「vba フォーム イベント」でググると色々とできることの幅が広がると思う。
2017/06/28(水) 03:46:14.99ID:2pXrvXuM0
しばらく前に騒ぎになったランサムウェアってVBAマクロなのか
マクロウイルスって今でもあるんだな
2017/06/28(水) 06:18:19.57ID:tYXWZB4k0
>>19
ご回答ありがとうございます。
今回の件はAfterUpdateで対応出来ました。
今後の為にお聞きしたいのですが、例えばテキストボックスが100個とかあった場合、VBのコントロール配列の様に一つのプロシージャで100個のテキストボックスのAfterUpdateに対応することは出来ませんか?

よろしくお願いします。
2017/06/28(水) 12:49:44.66ID:zWYciN7lM
>>21
「vba フォーム イベント withevents」とかでググれば、クラスモジュールを使ってイベント付きコントロールを配列またはコレクション化する方法が出てくる。

フォームの履歴管理には、クラス変数にフォームへの参照と、配列のインデックスまたはコレクションのキーなんかを渡して処理すればたぶんOK。
2017/06/28(水) 22:25:33.70ID:tYXWZB4k0
>>22
ありがとうございます。
witheventsを使用してテキストボックスのチェンジイベントをひとまとめに出来ました。
afterupdateをまとめれるともっと良かったのですが、それは無理そうなのでこれで満足です。
本当にありがとうございます!
2017/06/28(水) 23:11:40.00ID:E86Fbm8W0
100という10進数をDo loop を使って2進数に変換させるにはどのようにすればよいのでしょうか?
イメージとしては、100を2ずつ割っていってそこで出たそれぞれの余りの数をセルA1に表示させたいです。
よろしくお願い致します。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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