- 締切済み
既存レコードの再登録機能を追加したい
いつもお世話になります。 受注管理システムを作成中です。自分で作成するのは初めてです。 自分で見直したのですが、既存レコードの場合の受注番号の検索行か、古いデータの削除行で エラーが出ます。 どなたかアドバイスいただければ幸甚です。 ************************************************************************************* '「TB_受注」シートから「伝票番号」を検索 ' 引数key :伝票番号 ' 引数num :該当データのレコード番号、見つからなかった場合は-1 ' 引数fr :該当データの先頭の行番号 Sub FindJchNum(key As String, num As Long, fr As Long) Dim tbSRange As Range '検索範囲のセル Dim tbFRange As Range '見つかったセル '検索範囲のセル(TB_受注シートの受注番号列E7)を変数に代入する Set tbSRange = Worksheets("TB_受注").Range("E7").CurrentRegion.Columns(1) '伝票番号を先頭から検索する Set tbFRange = tbSRange.Find(What:=key, _ LookIn:=xlFormulas, Lookat:=xlWhole, SearchDirection:=xlNext) '戻り値を代入する If tbFRange Is Nothing Then '見つからなかった場合、引数numは-1 num = -1 Else '見つかった場合、引数numはレコード番号 num = tbFRange.Offset(0, -2).Value '引数frに戻り値となる該当セルの先頭の行番号を代入する fr = tbFRange.Row End If 'オブジェクト変数を解放する Set tbSRange = Nothing Set tbFRange = Nothing End Sub '----- 入力データの登録 ----- '新規レコードか既存レコードかを調べる If lblレコード番号.Caption = "*" Then '新規レコードの場合 myRcdNum = lbl全レコード数.Caption + 1 'レコードカウンタを更新する lblレコード番号.Caption = myRcdNum lbl全レコード数.Caption = myRcdNum Else '既存レコードの場合は受注番号を検索する(受注伝票シートの受注番号セルI2) Call FindJchNum(Range("I2").Value, myRcdNum, tbFstRow) '古いデータを削除する Worksheets("TB_受注").Rows(tbFstRow).Delete End If
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- MARU4812
- ベストアンサー率43% (196/452)
> もう数日自分で見直しているのですがエラーが解消しないので、 > こういった質問サイトにすがっています。。。 え?それで終わりなの? プログラムは書かれていることしか実行しないので、極端な話、 1行1行ステップ実行して、関連する変数の値の変化や、関数の 戻り値を全て調べ上げれば、何が起こっているかは全て把握 できます。また、そうして、処理の矛盾点を調べる作業を デバッグ作業と呼んでいるのです。そしてデバッグは、簡単な 手順だけ覚えれば、プログラムを始めたその日にでもできる事です。 (初心者だからできないといういいわけは通用しません) また、エラーメッセージが不具合の原因そのものを表しています。 初心者には、意味不明でも、WEB をエラーメッセージで検索すれば、 どのような状況で起こったかの事例は簡単に検索できますし、 上級者はエラーメッセージから対処方法のあたりをつけます。 ・・・ということは、初心者だろうとエラーメッセージから調べれば そのエラーが起こる状況(数パターンあって、そこから絞り込む ことはできなくとも)の把握くらいはできてしまうものなんです。 どうしたら良いか分からないのは、経験不足によるものではなく、 具体的に調べていない・・・つまり処理を見直せていないに他なり ません。デバッグ作業できていないのでしょう? エラーメッセージや、実際にどの値がどう変化する事に問題があるか 説明できない時点で、話にならないのですよ。 まぁ、質問掲示板を利用する7割くらいの人がそれを認識せず、 他人任せで「どうにかして」的な説明しかできず、それを「初心者 だから当然」のように振舞ってるので、貴方が特別なわけでは無いです けどね。 それで回答を貰える(どうにかしてもらえる)と思っているのだから 幸せですよね。自分の未知の領域(新技術)で初心者と同じような状況 でも、自分の力のみで調べ上げて結果を出さないとご飯が食べれない、 職業プログラマの私にはついていけません。 まぁ、それだけなら、私がスルーして終わりですが、協力者が極端に 減ると予想できるという事です。それを問題だと思うなら、自分の 行動で示すしかないと思います。 ちなみにリンクを貼った先の moug 掲示板はマルチポストをマナー 違反としています。 http://www.moug.net/faq/kiyaku.html もともと複数の掲示板に投稿するという人の考え方の根底には、 「下手な鉄砲も数打てば当たる」的な意識がありますが、下手な鉄砲 =使えない(=自分の期待通りの回答ができない)と回答者を見ている のと同じですし、1箇所に力を入れて対応してくれた人と真剣に 向き合う覚悟が足りないんですよ。人間を相手にしている意識が 全くない。便利屋か何かのサービスと勘違いしてる。自分は1円も 払ってないくせに。失礼な話です。 http://dobon.net/vb/bbs/index.html#multipost 多分「知らなかった」と言うのでしょう。 昔から使い古された言葉ですが「無知は罪」だと思います。 ちなみに謝らなくていいですよ。私は迷惑を掛けられているわけでは ありませんので。最初からスルーの体勢ですから。
- imogasi
- ベストアンサー率27% (4737/17069)
このコーナーはデバッグのコーナーではないよ。 コードだけコピペして、>どなたかアドバイスいただければ幸甚です。は質問者にはらくだが、読んだり考えるほうはたまらんよ。 甘えすぎと思う。 もう少し自分で煮詰めて、確認点の質問ぐらいにすること。 全般的に何をやっているのかの説明もない。 エラーがでるならエラーが出る個所を質問に示すとか。 内容がおかしければ、Msgbox 変数名 を一時的に入れて実行してみるとか。デバッグのステップ実行が本当は良いのだろうが。 >既存レコードの場合の受注番号の検索行か、古いデータの削除行で エラーが出ます。 文章になってない。 データが読者にはわからないのが致命的で、テストもしようがない。 出来るだけ、データ例(一部変えて)も挙げてほしいが。
- MARU4812
- ベストアンサー率43% (196/452)
補足
申し訳ありません。 何回か投稿していますが、いつも「よく質問の内容がわからない」と言われてしまいます。 なので、今回はすべてコピペして掲載したのですが・・・デバッグを求めたように なってしまったのは、申し訳ありません。 どうも、質問の仕方すらよく理解できていないようです。 が、もう数日自分で見直しているのですがエラーが解消しないので、こういった質問サイトに すがっています。。。