2017-04-24 11 views
0

私はVBAを全く新しくしているため、私が何をしているのかわからない... 以下は私の問題と問題のコードの説明です。コードをコピー貼り付け後にリストにマクロが表示されない

:、私は明らかにこれでトリックを行うコードを発見した今

値として貼り付け、任意のセルを選択し、新しいシートを選択し コピークリックされたセル:私はもともとやりたいこと

このでした

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Not Intersect(Target, Columns("A")) Is Nothing Then 
    Cancel = True 
    If Target.Row > 1 And Len(Target.Value) Then Worksheets("S11").Range("C2").Value = Target.Value 
    End If 
End Sub 

私は「明らかに」私はそれをテストすることができないと言う。ここでの問題は、次のとおりです。

  1. Excelマクロ有効ブック
  2. はALTのQをクリックしたとして、私は、ブックを保存した - 私は、ALT F8は、それを実行するために戻って私のワークブックへ
  3. に行く - しかし、何もありません...空白....

私は何が欠けていますか?

+3

のAlt-F8実行することができますのみ表示マクロのように使用します。 'worksheet_change'イベントは' Private'なので、publicにアクセスすることはできません。また、他の何かによって呼び出されない限り、あなたには渡せないパラメータが必要です。配置したシートのコードウィンドウを調べることで、再度存在するかどうかを確認することができますが、セルA1以外の列Aに空白以外の値を置くたびに実行する必要があります。 – YowE3K

+0

上記のマクロは、ワークシートオブジェクトに配置されるように設計されており、そのシート上で選択されたセルが変更された場合に実行されます。また、新しくアクティブなセルが列Aにある場合は、何もしないように見えます。 'Cancel'を' True'に設定します。これは 'Event'で何もしません。それが列Aにあれば、それは 'Row' 1にないことをチェックし、空ではない。もしそうなら、新しくアクティブなセルに格納されている値を 'S11!C2'にコピーします。それは実際にあなたが望むものですか? – CLR

+0

ありがとうございました...それは働いた:) –

答えて

0

モジュールには、使用するマクロがあります。

public sub mymacro(r as excel.range) 
If Not Intersect(r, Columns("A")) Is Nothing Then   
    If r.Row > 1 And Len(r.Value) Then Worksheets("S11").Range("C2").Value= r.Value 
    End If 
end sub 

public sub wbtest() 
    mymacro activecell 
end sub 

ので

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Not Intersect(Target, Columns("A")) Is Nothing then 
     mymacro target 
    end if 
end sub 
関連する問題