1

最初の列に人々のリストがあり、各行の残りの部分に人々に関するさまざまな情報が入ったスプレッドシートがあります。ユーザーが人の名前をクリックしたときにポップアップしたい各レコードを入力してから編集するユーザーフォームがあります。

例えば:

Name        Age    DOB        Postcode
John Smith  55     3/6/1958   RM3 5WO
Mary Jones  22     4/2/1991   RM2 6TP

そこで、John Smith (A2) をクリックして、年齢、生年月日、郵便番号などのフィールドを含むフォームを表示できるようにしたいと考えています。また、フォームを使用してエントリを追加できるようにしたいと考えています。リストの下に少なくとも 1 行。

使用する次のコードが与えられました。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Address = "$A$2" Then
        frm_tch_staffinfo.Show
    End If

End Sub

シートでこれを使用しようとしましたが、機能していないようです - A2 をクリックしても何も起こりません。コードまたは実装方法にエラーがありますか? (関連するシートのコードに入れました)。

さらに、ターゲット アドレスを拡張して、すべての名前の範囲 (数は変更される可能性があります) と少なくとも 1 つのセル (ただし、A1 のヘッダーは除く) を含めたいと考えています。そのような範囲を定義することは可能ですか? 単純に A2 以下を選択するか、いっぱいになったセルを数えて最後に追加するプロセスを使用します。

ご協力いただきありがとうございます!

ETA:
私の使用法はデータベースではなくスプレッドシートであるため、これには間違いなく Excel が必要です。これは簡単な例でした。実際、データはすべて数値であり、他のワークシートで比較的複雑な計算に使用されています。

4

1 に答える 1

1

コメントで述べたように: コードの最初の部分は問題なく動作します (選択の変更)。
私はちょうどテストをしましたが、何も問題はありません。
ただ注意してください:

  • 正しいフォーム名を入力してください。
  • コードを正しいシート モジュールに配置する

2番目の質問については、探しているコード:

Set oRange = Range("A1:A10")
If Not Intersect(Target, oRange) Is Nothing Then
    'do something
End If

範囲を動的に設定したい場合、これについては以前に多くの投稿がありました。
例を確認してください:
実際の使用範囲の取得

于 2013-09-19T11:08:46.333 に答える