0

これは簡単な質問で、簡単な答えだと思いますが、見つかりません。

修正しなければならないスプレッドシートを継承しました。それを書いた人は誰でも、データを入力するために VBA と VBA UserForms を多用しました。1 つのフォームで、テキストおよび数値情報が入力され、特定のワークシートのレコードに保存されます。このスプレッドシートは、プロジェクト情報の記録に使用されます。それはコピーされ、何度も何度も再コピーされます。再コピーするたびにクリアされ、次のプロジェクトに使用されます。

ユーザーから、これらの主要なプロジェクトの 1 つのスプレッドシートが送られてきました。VBA、データ入力ユーザー フォームに問題があります。テキストまたは数字のいずれかを受け入れるものTextBoxは、フィールドを終了するときに常に数字を日付として再フォーマットしています!? VBAコードを3回チェックしました。データを再フォーマットするこのフィールドに関連する特別なコードはありませんOnEnter。さらに、デザイナー内の from に関連付けられてOnExitいるプロパティが見つかりません。FormatTextBox

私は C/C# 開発者であり、VBA 開発者ではありません。それでも、この「単純な」IDE には困惑しています。TextBox表示値を再フォーマットするプロパティが見つかりません。

TextBox数値を日付ではなく数値として永続的に解釈するように修正するにはどうすればよいですか?

さらに注意

2つのことを言及する価値があります。まず、ユーザーはこれらのフォームまたは VBA コードを変更できません。基盤となるモジュールはパスワードで保護されており、パスワードを知っているのは私とマネージャーの 2 人だけです。さらに、私は社内で唯一の開発者であり、誰もが何かを壊すのではないかと少し恐れているため、誰もコードに触れません。

次に、ファイル内の何かが破損している可能性があります。このファイルが私に送信されたとき、ユーザーは作業中のワークシートの名前が変更されたと述べました。WorkSheet タブの名前がランダムな 16 進文字列値に変更されたため、何かが正しく保存されなかったようです。

このフォームでは、これら 2 つの問題以外はすべて正常に機能しているようです。ヘルプやガイダンスをいただければ幸いです。

4

2 に答える 2

1

テキストボックスを出るときにそのテキストをフォーマットしているコードが最も確実にあります。あなたはまだそれを見つけていないだけです。Userforms クラス モジュールに移動し、左側のドロップダウンからテキスト ボックスを選択すると、右側のドロップダウンにすべてのイベントが表示されます。太字のイベントは使用中です。すでにそれらすべてをチェックしていると思いますが、それが出発点です。

次に、WithEvents キーワードを使用するカスタム クラス モジュールを探します。ユーザーフォームのクラスモジュールの外部でイベントをトリガーできます。

最後に、コード内のすべてのインスタンス=Format(tbxName.Text,"mm/dd/yyy")またはそのようなコードの一部を検索します。コードのどこかで、おそらく Format 関数を使用してそのテキスト ボックスに入力しています。

于 2013-11-04T16:02:04.817 に答える