dポイントプレゼントキャンペーン実施中!

エクセルであるシート(A)の範囲(A1:D5)と範囲(E1:E5)を同時に別なシート 例えばシート(B)の同じ場所にコピーペーストしたい。 その時 別なシートへ移るときハイパーリンクで切り替えたいが もともとの最初(A)のシートの右側 例えば H1からH10までそれぞれのセルに移りたい各シート名を入れといて、あらかじめ 移りたいシートに移るハイパーリンクを作っておいた場合 そこのハイパーリンクされたセルをマウスでダブりクリックすると 自動的に移りたいシートに移り、最初のコピーしたシートと同じ位置 つまりはシートBの(A1:D5)と(E1:E5)にペーストされるようなVBAを教えてください とchatGPTに質問した。

帰ってきた答えは
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim ws As Worksheet
Dim rngCopy1 As Range
Dim rngCopy2 As Range
Dim linkIndex As Long

' クリックされたハイパーリンクの位置を取得
linkIndex = Target.Range.Row - Me.Range("H1").Row + 1

' シート名をH1からH10に対応するシート名に変更(必要に応じてカスタマイズ)
Select Case linkIndex
Case 1 To 10
Set ws = ThisWorkbook.Sheets("B")
Case 11 To 20
Set ws = ThisWorkbook.Sheets("C")
' 必要に応じて他のケースを追加
End Select

If Not ws Is Nothing Then
' シートAの範囲(A1:D5)と(E1:E5)をコピー
If linkIndex <= 10 Then
Set rngCopy1 = ThisWorkbook.Sheets("A").Range("A1:D5")
Set rngCopy2 = ThisWorkbook.Sheets("A").Range("E1:E5")
Else
' 例えば、範囲(E1:E5)もコピーしたい場合に対応
Set rngCopy1 = ThisWorkbook.Sheets("A").Range("A1:D5")
Set rngCopy2 = ThisWorkbook.Sheets("A").Range("E1:E5")
End If

' 対応するシートに移動して範囲をペースト
ws.Activate
ws.Range("A1").Resize(rngCopy1.Rows.Count, rngCopy1.Columns.Count).Value = rngCopy1.Value
ws.Range("E1").Resize(rngCopy2.Rows.Count, rngCopy2.Columns.Count).Value = rngCopy2.Value
End If
End Sub


と返答があったがAシート右に設定したBシートへのハイパーリンクにはペーストできるんだがAシート右に設定したCシートへのハイパーリンクセルをダブルクリックしてもBシートにいってしまってCシートにしはペーストできんのだが・・。

質問者からの補足コメント

  • ありがとう
    途中からですが
    -------
    Select Case linkIndex
    Case 1 To 1
    Set ws = ThisWorkbook.Sheets("A")
    --
    Case 4 To 4
    Set ws = ThisWorkbook.Sheets("D")
    ' 必要に応じて他のケースを追加
    End Select

    If Not ws Is Nothing Then
    ' シートAの範囲(A1:D5)と(E1:E5)をコピー
    If linkIndex <= 4 Then
    としましたが うまくいかない。



    AシートをもとにB,C,D の各シートにペーストされるのはできたが 今度はそれぞれのB,C,DにもH列のリンク先をAシートと同じく貼り付けしておいた場合 例えば逆にBシートのをCシートに貼り付けるにはどう書けばいいのでしょうか

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/10/24 12:06

A 回答 (2件)

No1です。



>例えば逆にBシートのをCシートに貼り付けるにはどう書けばいいのでしょうか
同じものでシート名を入れ替えたものを設定しておけば可能です。

とは言え、結果的に何がなんだかわからなくなりそうな懸念を感じますけれど・・
    • good
    • 1

こんにちは



ご提示のコードに
>(必要に応じてカスタマイズ)
と書いてありますが、H1~H10はシートBへ、H11~H20はシートCへリンクするという仮定で、決め打ちの記述がされているようです。
実際のリンクがどうなっているのか不明ですけれど、そのあたりが整合していないだけでしょう。

また、ご質問文には
>ハイパーリンクされたセルをマウスでダブりクリックすると~
とありますが、FollowHyperlinkを使っているので、シングルクリックで動作します。
(ハイパーリンクのセルの場合は、ダブルクリックを取得するのは難しいですけれど・・)
この回答への補足あり
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A