2016-10-13 14 views
4

申し訳ありません。職場における新しい役割。このExcelのリクエストを受け取った:VBAの使用:ダブルクリックのセルが新しいシートを作成し、セルも新しいシートにハイパーリンクされます

  1. シート内のセルをダブルクリックすると、新しいシートが作成されます。
  2. ダブルクリックされた元のセルがハイパーリンクに変わり、新しく作成されたシートにリンクします。
  3. 元のダブルクリックだったこのセルのダブルクリック機能が削除されました。

私は正直に立ち往生しています。私は以前はVBAを使用して実際にプログラムしていません。私はダブルクリックで新しいシートを作成する方法を理解しており、ハイパーリンクする方法を考え出しました。しかし、私は新しく作成されたシートにハイパーリンクする方法と、元のセルからダブルクリック機能を削除する方法を理解することはできません!

は、ここで私はここにすべてのルールを破っていた場合私を許し、また、私が持っているすべて...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    Sheets.Add 
End Sub 

だ、これはここに投稿初めてです。ご助力ありがとうございます!

+1

私は良い最初の質問のために+1をあげる宣言し、(この場合はws)をオブジェクト変数を使用することです。あなたはあなたが試したこと/あなたが持っているものを示し、問題を説明し、期待される結果が何かを示しました。ハイパーリンクは時々トリッキーになることがあります。最初の質問はたくさんありますが、「これは私のために」と尋ねるだけです。 – mrbungle

+0

うわー、ありがとう!私はもっ​​と学び、より良くなることを楽しみにしています。 – TheRRguyandsushi

答えて

3

あなたは正しい道を歩いていますが、もう少し多くのコンポーネントが必要です。重要な点は

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    Dim ws As Worksheet 

    ' Prevent screen flicker 
    Application.ScreenUpdating = False 

    ' Add worksheet 
    Set ws = Me.Parent.Worksheets.Add 

    ' Add Hyperlink 
    Target.Hyperlinks.Add Anchor:=Target, Address:="", SubAddress:=ws.Cells(1, 1).Address(True, True, , True), TextToDisplay:=ws.Name & "!A1" 

    ' Restore original sheet as active 
    Me.Activate 

    ' Disable original Doubleclick action 
    Cancel = True 

    ' Restore screen updating 
    Application.ScreenUpdating = True 
End Sub 
+1

Excel用の偉大なリソース(SOのほかに)[cPearson.Com](http://www.cpearson.com/Excel/MainPage.aspx) –

+0

ワウ、それは1つの重いサイトです - 私はそれをブックマークします私が再び投稿する前にそれを参照してください:)。ソリューションをありがとう、私はすぐにそれをテストします! – TheRRguyandsushi

+0

ああ、それは働いた。唯一の私は削除されていると思う: – TheRRguyandsushi

関連する問題