Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10975 / 13646 ツリー ←次へ | 前へ→

【18843】未使用の連番(コード)を入力 mkcapella 04/10/14(木) 11:25 質問[未読]
【18862】Re:未使用の連番(コード)を入力 Jaka 04/10/14(木) 15:58 発言[未読]
【18864】Re:未使用の連番(コード)を入力 mkcapella 04/10/14(木) 16:36 発言[未読]
【18865】Re:未使用の連番(コード)を入力 Asaki 04/10/14(木) 16:52 発言[未読]
【18866】Re:未使用の連番(コード)を入力 mkcapella 04/10/14(木) 17:19 発言[未読]
【18867】Re:未使用の連番(コード)を入力 Jaka 04/10/14(木) 17:41 発言[未読]
【18869】Re:未使用の連番(コード)を入力 mkcapella 04/10/15(金) 8:31 お礼[未読]

【18843】未使用の連番(コード)を入力
質問  mkcapella  - 04/10/14(木) 11:25 -

引用なし
パスワード
   お世話になっております
下記をイベントマクロ等で行えないかと考えております
初心者の私にお知恵を貸してもらえないでしょうか?

文書No.を採るための
以下データベース(XLS)があります
これは従来から使用されており
文書No.の列には、既にいくつか入力済みです。
また昔のデータの箇所は
一部空白のセルもあり、完全なデータベースでは
ありません。

(支店)   (部門)  (番号) (文書No.) (担当者)(件名)
横浜:A  営業1課:010  0001  A0100001   **   ****
札幌:B  営業2課:011  0001  B0110001   **   ****
横浜:A  営業2課:011  0001  A0110001   **   ****

上記"番号"のセルへVBAで自動で入力できないかと
考えた次第です
次のWorksheet_Changeイベント以外で
何か良い方法はないでしょうか?

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 2 Then
   ###処理 2列目の"部門"が変更されたときに
       "支店""部門"列から推測される番号を
       0001から順に、4列目"文書No."列から検索し
       入力する
  Else
  End If
End Sub

件数が増えても時間がかからない、良い方法は
ないものでしょうか?

【18862】Re:未使用の連番(コード)を入力
発言  Jaka  - 04/10/14(木) 15:58 -

引用なし
パスワード
   こんにちは。
なかなかレスがつかないようですね。

>次のWorksheet_Changeイベント以外で
>何か良い方法はないでしょうか?

>件数が増えても時間がかからない、良い方法は
>ないものでしょうか?

どんな風に時間がかかるのですか?
その辺りが漠然としているので答えにくいんだと思います。

入力したら瞬時にってのは、エクセルだとデータ量等にもよるだろうけど難しいと思います。アクセスなら速そうですが...。

とりあえず関数など使っていたら、自動計算を止めてみるのも手ですね。
今さっき、この自動計算の事を忘れてて、マクロの余りのトロさに誰かが遠隔操作しているのかとか、もしかしてウイルスかよ?と思ってしまいました。

【18864】Re:未使用の連番(コード)を入力
発言  mkcapella  - 04/10/14(木) 16:36 -

引用なし
パスワード
   Jaka さん ありがとうございます
そっかー・・・
皆さん答えにくいんですね〜
全然気づきませんでした。

>どんな風に時間がかかるのですか?
よく考えたら時間あまりかからないかも知れません
実際にやってみたわけではないので。
ただ今後 数万件のデータになると
検索するループ回数も多くなりますので、
そう思ってしまいました。
紛らわしい書き方をして本当にすみません

こういう連番をつけていくことって
よくあることじゃないかと思っています。
(文字列かどうかは別にして)
まさかこんな風に入力された数値から
検索したりはしないだろうと思ってます
何かもっとすばらしいコードが存在するのではと・・・
別のプロシージャでも、
このデータベースを使用するので、
このイベントマクロはずっと動いていることになるため
余計に無駄の多いマクロに感じられます

皆さんもこんな感じでされているんでしょうか??

【18865】Re:未使用の連番(コード)を入力
発言  Asaki  - 04/10/14(木) 16:52 -

引用なし
パスワード
   こんにちは。

常に、Max+1 でよければ、それぞれの連番のMaxをどこかのセルに置いておくなどで
対応できそうですが、そうではないのですよね?

【18866】Re:未使用の連番(コード)を入力
発言  mkcapella  - 04/10/14(木) 17:19 -

引用なし
パスワード
   Asaki さん こんにちは
レス有難うございます。
私も「支店・部門」でのテーブルを作成しようかなとも考えたのですが
どうもイベントマクロが動きつづけるのが気に入らなくて・・・
ところで、そもそも特定のセルが変更されたときだけ動くマクロみたいなのは
あるんでしょうか?

【18867】Re:未使用の連番(コード)を入力
発言  Jaka  - 04/10/14(木) 17:41 -

引用なし
パスワード
   特定のセル以外のときは、マクロを終了させるぐらいしか手は無いですね。

無駄、無駄なんて考えていたらエクセル関数も無駄の部類ですね、どこか変更されたら全部再計算されるし、こっちは関数の量によって違いますが、多いとエクセル操作にも影響が出ますしね。
セルのWクリックでも再計算されるし....。

まだマクロの方が、1箇所に限定できるし(マクロが動いた後で、以後のコード実行するかを絞れる)終了もできるから速いかも..。

【18869】Re:未使用の連番(コード)を入力
お礼  mkcapella  - 04/10/15(金) 8:31 -

引用なし
パスワード
   確かにおっしゃるとおりです
私の考えすぎですね〜

いろいろご面倒かけました
有難うございました!

10975 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free