既存の質問を検索したところ、類似の質問と回答が見つかりました。ただし、私の要件を満たすものはありませんでした。
あるスプレッドシートで、1 つのスプレッドシート内のリンクをクリックして 2 番目のスプレッドシートに移動し、クリックしたセルの値を 2 番目のスプレッドシートのフィールドに入力できるようにしたいと考えています。
たとえば、最初のシートの列Aには、単位、、およびが含まれIT
ますFinance
。Networks
これらのフィールドのいずれかをクリックすると、ユーザーは「サブユニット」という2番目のシートに移動し、セルの値をA1に配置して、サブユニットリストを入力するためのifステートメントを記述できます。たとえば、をクリックするとセルA1にIT
入力されIT
、A3-A5のifステートメントを介して次のようになります。
Security, Support, Development
次に、同様の VB コードを再利用して、サブユニット名をクリックすると、サブユニットの詳細を表示する 3 番目のシートに移動するようにします。
それが意味を成すといいのですが、
私は VBA の初心者なので、コードをどこに配置すればよいか教えてください (例: タブ内、右クリック、コードの表示、または別の場所)
答え1
シート 1 で を押してALT+F11
VB エディターを起動します。このコードをコピーして標準モジュールとして貼り付けます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Range " & Target.Address & " was double clicked"
On Error Resume Next
Dim xRg As Range
Set xRg = Application.Selection
Range("A80").Copy Sheet2.Range("A80")
Application.Goto Worksheets("Sheet2").Range("A80"), True
End Sub
使い方:
- セルにデータを入力し
A80
、セルをダブルクリックします。 - どのセルがクリックされたかを確認するためのメッセージ ボックスが表示されます。
- ボタンを押してください
OK
。 - Excel は、
Copy & Paste
の内容を取得しA80
、セル ポインターをA80
シート 2 のセルに配置します。
注意
- 必要に応じて、コード内のセル参照とシート名を調整します。
- セルの範囲については を参照してください
Copy & Paste
。 - そうするには、この行を編集します。
Range("A80:A85").Copy Sheet2.Range("A80")