![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
エクセルであるシート(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シートにしはペーストできんのだが・・。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No1です。
>例えば逆にBシートのをCシートに貼り付けるにはどう書けばいいのでしょうか
同じものでシート名を入れ替えたものを設定しておけば可能です。
とは言え、結果的に何がなんだかわからなくなりそうな懸念を感じますけれど・・
No.1
- 回答日時:
こんにちは
ご提示のコードに
>(必要に応じてカスタマイズ)
と書いてありますが、H1~H10はシートBへ、H11~H20はシートCへリンクするという仮定で、決め打ちの記述がされているようです。
実際のリンクがどうなっているのか不明ですけれど、そのあたりが整合していないだけでしょう。
また、ご質問文には
>ハイパーリンクされたセルをマウスでダブりクリックすると~
とありますが、FollowHyperlinkを使っているので、シングルクリックで動作します。
(ハイパーリンクのセルの場合は、ダブルクリックを取得するのは難しいですけれど・・)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PowerPoint(パワーポイント) エクセルのマクロ設定について教えてください。 2 2021/10/29 11:36
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Excel(エクセル) Rangeメソッドは失敗しました。globalオブジェクトについて 6 2021/11/21 21:54
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Visual Basic(VBA) ワークシート内 検索 HITしたら すべて選択する 6 2021/11/11 22:50
- Visual Basic(VBA) シートごとに 個数と集計 2 2021/10/25 22:00
- Excel(エクセル) マクロ作成で困っています。お教え頂けませんか。 1 2021/12/12 17:02
- Visual Basic(VBA) シート名でファイル検索する 2 2021/11/30 17:05
- Visual Basic(VBA) サブフォルダ含むすべてのフォルダの Excel 検索 4 2021/12/13 09:33
- Excel(エクセル) マクロを修正できないものか、統合シートについて 3 2021/12/07 09:26
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】全シートのセルの...
-
実行時エラー'1004': WorkSheet...
-
ブック名、シート名を他のモジ...
-
ユーザーフォームに入力したデ...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
別のシートから値を取得するとき
-
excelのマクロで該当処理できな...
-
実行時エラー1004「Select メソ...
-
エクセルVBAでダブルクリックを...
-
VBAで同じシート名のコピー時は...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
Excel VBA 複数行を数の分だけ...
-
XL:BeforeDoubleClickが動かない
-
Excel チェックボックスにチェ...
-
エクセルのマクロで条件一致の...
-
【Excel VBA】Worksheets().Act...
-
Access エクセルシート名変更
-
いつもお世話になっております...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAで大量のファイルをシート名...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】Worksheets().Act...
-
ブック名、シート名を他のモジ...
-
エクセルのシート名変更で重複...
-
ExcelのVBAのマクロで他のシー...
-
Excel VBA 複数行を数の分だけ...
-
エクセルのマクロについて教え...
-
VBA 最終行まで数式をコピーする
おすすめ情報
ありがとう
途中からですが
-------
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シートに貼り付けるにはどう書けばいいのでしょうか