Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6286 / 13644 ツリー ←次へ | 前へ→

【46148】任意の行を右クリックしたらその行の指定のセルを別シートにコピー マップー 07/1/24(水) 13:41 質問[未読]
【46149】Re:任意の行を右クリックしたらその行の指... かみちゃん 07/1/24(水) 14:18 発言[未読]
【46150】Re:任意の行を右クリックしたらその行の指... マップー 07/1/24(水) 15:35 お礼[未読]
【46151】Re:任意の行を右クリックしたらその行の指... Kein 07/1/24(水) 15:44 回答[未読]
【46175】ありがとうございました。 マップー 07/1/25(木) 14:47 お礼[未読]

【46148】任意の行を右クリックしたらその行の指定...
質問  マップー  - 07/1/24(水) 13:41 -

引用なし
パスワード
   指定シートのF列をクリックすると、その同じ「行」の指定の列のセルが指定シートの指定セルにコピーするようにしたく、ネットで質問し、さらに自分で勝手に貼り替え、以下のコードを貼ったら、思い通りに動きました。

今回、F列だけではなく、「その行のどのセルでも」右クリックしたら、
その行のG列の値をシート"印刷"のF15へコピーし、
その行のH列の値をシート"印刷"のF16へコピーし、
その行のI列の値をシート"印刷"のF17へコピーし、
その行のJ列の値をシート"印刷"のY16へコピーし、
その行のK列の値をシート"印刷"のAO16へコピーし、
その行のL列の値をシート"印刷"のAW16へコピーするというものにしたいのです。

方法を教えていただけるでしょうか。


現在、私が作ったコードは、以下のものです。

 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
   If Target.Count > 1 Then Exit Sub
   If Target.Column <> 6 Then Exit Sub
   Cancel = True
   Worksheets("印刷").Range("F15").Value = Me.Cells(Target.Row, 7).Value
   Worksheets("印刷").Range("F16").Value = Me.Cells(Target.Row, 8).Value
   Worksheets("印刷").Range("F17").Value = Me.Cells(Target.Row, 9).Value
   Worksheets("印刷").Range("Y16").Value = Me.Cells(Target.Row, 10).Value
   Worksheets("印刷").Range("AO16").Value = Me.Cells(Target.Row, 11).Value
   Worksheets("印刷").Range("AW16").Value = Me.Cells(Target.Row, 12).Value
   Worksheets("機関").Range("C2").Value = Me.Cells(Target.Row, 10).Value
   Sheets("機関").Select

よろしくお願いいたします。

【46149】Re:任意の行を右クリックしたらその行の...
発言  かみちゃん  - 07/1/24(水) 14:18 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>F列だけではなく、「その行のどのセルでも」右クリックしたら、
>その行のG列の値をシート"印刷"のF15へコピーし、
>その行のH列の値をシート"印刷"のF16へコピーし、
>その行のI列の値をシート"印刷"のF17へコピーし、
>その行のJ列の値をシート"印刷"のY16へコピーし、
>その行のK列の値をシート"印刷"のAO16へコピーし、
>その行のL列の値をシート"印刷"のAW16へコピーするというものにしたい

以下のような感じでいかがでしょうか?

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 With Sheets("印刷")
  .Range("F15:F17").Value = _
   Application.Transpose(Cells(Target.Row, 7).Resize(, 3).Value)
  .Range("Y16").Value = _
   Cells(Target.Row, 10).Value
  .Range("AO16").Value = _
   Cells(Target.Row, 11).Value
  .Range("AW16").Value = _
   Cells(Target.Row, 12).Value
 End With
 Cancel = True
End Sub

ご提示のコードでは、以下のコードで列の制限がされているだけかと思います。
If Target.Column <> 6 Then Exit Sub

【46150】Re:任意の行を右クリックしたらその行の...
お礼  マップー  - 07/1/24(水) 15:35 -

引用なし
パスワード
   かみちゃん さん こんにちは。


すっきりしたコードになりました。

勉強になりました。

ありがとうございました。

【46151】Re:任意の行を右クリックしたらその行の...
回答  Kein  - 07/1/24(水) 15:44 -

引用なし
パスワード
   こんなコードでも出来ます。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
  Dim MyR As Range, C As Range
  Dim i As Integer
 
  If MsgBox("この行の値を印刷シートへ転記しますか", 36) = 7 Then Exit Sub
  Set MyR = Intersect(Target.Cells(1).EntireRow, Range("G:L"))
  Cancel = True
  For Each C In Sheets("印刷").Range("F15:F17, Y16, AO16, AW16")
   i = i + 1: C.Value = MyR.Cells(i).Value
  Next
  Set MyR = Nothing
End Sub

【46175】ありがとうございました。
お礼  マップー  - 07/1/25(木) 14:47 -

引用なし
パスワード
   Kein さんありがとうございます。


確認用のボックスが出るのですね。(楽しいですね)

今は、クリック数を減らすことを考えているので、このボックスは今回は外そうと思いますが、次回から応用させていただきたいと思います。

ありがとうございました。

6286 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free