[[20101201023908]] 『自動採番+データ追跡機能テンプレート』(のんさびぃ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『自動採番+データ追跡機能テンプレート』(のんさびぃ)

http://allabout.co.jp/computer/msexcel/closeup/CU20060820A/index.htm

ここのリンクでやっていることと同じようなことをしたいのですが、見積書番号を自動採番できるようにしたいのです。台帳の行数から割り出したらどうかと思い、=COUNTA([台帳]Sheet1'!$A:$A)+1 なんて考えてみたのですが、これだと見積書を入力しているときはちゃんとした番号が表示されますが、「新しいレコードを作成する」で保存するときに、このレコードが台帳に追加されるので、見積書番号が次の番号に変わってしまい、それが保存されてしまいます。レコードを保存しても現在入力中の見積書番号が変わらないようにするにはどうしたらいいのでしょうか?エクセル2003を使用しております。どうかご協力おねがいします。


 VBAを知っていれば、保存する際に
 =COUNTA([台帳]Sheet1'!$A:$A)+1 という数式を値に変更すれば、良いのですが・・・。

 ichinose


 >これだと見積書を入力しているときはちゃんとした番号が表示されますが、
 >「新しいレコードを作成する」で保存するときに、このレコードが台帳に追加されるので、
 >見積書番号が次の番号に変わってしまい、それが保存されてしまいます。

 ちょっと理解できないのですが、環境を作るのも手間なので、以下、推理だけです。

 どこか別のセルに、=COUNTA([台帳]Sheet1'!$A:$A) と入力して置く(目障りなら非表示にする)。

 そして、今ある見積書番号は書き込み対象外にし、台帳の見積番号列へは、
 上述別セルの値を反映させるよう設定すればいいのではないですか?

 (半平太) 2010/12/01 11:00

早速のレスありがとうございます。

ichinoseさま、
すみません、VBAはあまりよくわからないのですが、もうちょっと教えてもらえないでしょうか?

半平太さま、
これを試してみたのですが、保存してある見積書を再度開いてみると、台帳に増えた行数が見積番号に加算されてしまうので、なんだかおかしなことになってしまいます???


 >保存してある見積書を再度開いてみると、
 >台帳に増えた行数が見積番号に加算されてしまうので、
 >なんだかおかしなことになってしまいます??? 

 ようやくご質問の意味が分かりました。

 従前のやり方で、台帳には正しく見積書番号が登録されていると思いますよ。
 それを確認しなかったのですか?

 登録が終わった見積書の方は、次の見積書作成に備えているのですから
 1プラスに変わっていて当然だと思います。

 それが困ると云うことなら、ichinoseさんのアドバイス通り、
 保存直前に、数式から値に変える必要があります。(手動であろうが、VBAであろうが)

 (半平太) 2010/12/01 14:25

数式から値に変えるVBA、難しいですか?教えてもらえますか? (のんさびぃ)

 >数式から値に変えるVBA、難しいですか?
 私にとっては、難易度は不明です。

 Microsoftの仕組んだVBAと絡んだ展開になるとすると
 私のスキルでは厄介かも知れないと感じます。

 どんな展開になりそうかは、環境を作ってみれば分かることですが、
 その環境を作るのが、手間と感じているので、その見極めがつけられません。

 ご質問を拝見した時、ちょっとしたアイデアでクリアできることなのかな?
 と軽率に思いレスを入れてしまいました。ご容赦ください。m(__)m

 他の回答者のレスをお待ちください。

 (半平太) 2010/12/01 21:36

 >VBAはあまりよくわからないのですが、もうちょっと教えてもらえないでしょうか? 
 どの程度は、わかっているのでしょうか?
 コードを一度も書いたことがない ということでしたら、難しいですよ!!

 =COUNTA([台帳]Sheet1'!$A:$A) という数式が入っているセルをA1だとすると、
 sub cnvval()
    with range("a1")
       .value=.value
    end with
 end sub

 上記のcnvvalを実行すれば、数式は、値に変換されます。
 でも、どのタイミングで実行させるかが問題ですね!!
 普通に考えると、保存する直前ですよね!!
 そうなると、イベントプロシジャーをつかうことになりますが、
 この辺りになると、何にも基礎知識がないと大変です。

 いかがですか?それでもVBAでやりますか?

 もし、やるなら、まず、データ追跡機能テンプレート機能を使って、
 この伝票番号を使った簡単なサンプルの作成手順を示してください。
 その記述どおりに作成すれば、誰もが同じサンプルテンプレートが作成できる
 同期のとれる記述ですよ!!

 データ追跡機能テンプレートって、以外に掲示板では、
 扱いが少ないんです。ここで、みんなで同じ題材で研究することは、
 価値があると思うので、のんさびぃさん、検討して、やる気があるなら記述してみてください。

 ichinose

   


ichinoseさま、フォローアップありがとうございます。

 >どの程度は、わかっているのでしょうか?
 >コードを一度も書いたことがない ということでしたら、難しいですよ!!

はい、自分でコードを書いたことはございません。書いてもらったコードを編集して使ったりしたことはあるのですが。。。ですのでVBAだと自分でメンテもできず、後々大変かと思います。

今回の自動採番の問題の解決には、=COUNTA([台帳]Sheet1'!$A:$A)の数式を別セルに置いておいて、「その値のみを見積番号セルにコピーする」マクロを作ってみました。
これだと(データ追跡機能テンプレートでリンクされている)台帳のレコードのアップデートにも影響されないので、とりあえず良い感じです。

ということで、勉強不足でどうもすみません。いろいろと本当にありがとうございました。また何かありましたらどうぞよろしくお願いします。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.