Excel2007マクロ:セルダブルクリックで他のセルに値をコピーする方法
- Excel2007でマクロを使用することで、セルのダブルクリックイベントを取得し、特定のセルの値を別のセルにコピーすることができます。
- 具体的には、Sheet1のF5列をダブルクリックすると、その左側にあるA5の値をコピーし、Sheet2のA列の未入力行へ貼り付けることができます。
- 上記のVBAコードをWorksheet_BeforeDoubleClickイベント内に追加することで、セルダブルクリック時の処理をカスタマイズすることができます。
- ベストアンサー
Excel2007 マクロについて
たとえばですが sheet1のF5列をダブルクリックすると、その左側にあるA5の値をコピーし sheet2のA列の未入力行へ貼り付けするにはどうしたらよいでしょうか Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, cancel As Boolean) If Intersect(Target, Range("F:F")) Is Nothing Then Exit Sub cancel = True End Sub とりあえずここまで作って開くことは開いたのですが、その先がわからず困っております。 よろしくお願いいたします。
- Eccentrici
- お礼率52% (27/51)
- Excel(エクセル)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>If Intersect(Target, Range("F:F")) Is Nothing Then Exit Sub Worksheets("sheet2").Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = Target.Offset(, -5).Value >cancel = True
関連するQ&A
- Excel2007 マクロについて
自分で何とかしようと思い試行錯誤しましたがダメでしたのでご指導のほどお願いします。 今のコードが下記です Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, cancel As Boolean) If Application.Intersect(Target, Range("F:G")) Is Nothing Then Exit Sub Application.Goto Worksheets(IIf(Target.Column = 6, "人件費", "外注費")).Range("A65536").End(xlUp).Offset(1) ActiveCell.Value = Cells(Target.Row, "A").Value cancel = True End Sub 台帳シートのF列のセルをダブルクリックするとその列の先頭A列の数字を持って人件費シートが開き 一番新しい列のA列に台帳シートの値を入れる というコードです G列では外注費で同じ事が行われます。 それにH列を追加し材料費シートをに同じ事を行いたいのですがわかりません ご指導のほどお願いします。
- ベストアンサー
- Excel(エクセル)
- 同じシート内にイベントプロシージャが二つある時
いつもお世話になります。 WINDWS7 EXCELL2010 です。 下記の1 2のマクロを同じシート内にイベントプロシージャを二つ挿入したところ、 ※1 ※2のような現象が起きました。 この現象を解決したくご指導を仰ぎたいです。 宜しくお願いします。 ※1 エラー表示 コンパイルエラー: 名前が適切ではありません; Worksheet_BeforeDoubleClick ※2 下記の構文が青色に反転 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 1 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A2:A51")) Is Nothing Then Exit Sub Cancel = True Sheets(CStr(Target.Value)).Select End Sub 2 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myRange As Range Set myRange = Intersect(Target, Range("B2:B51")) If Not myRange Is Nothing Then Select Case Target.Value Case "" Target.Value = "○" Case Else Target.ClearContents End Select Cancel = True End If End Sub
- ベストアンサー
- Excel(エクセル)
- Excel VBAについて
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, cancel As Boolean) If Intersect(Target, Range("F:F")) Is Nothing Then Exit Sub Application.Goto Worksheets("人件費").Range("A1") Worksheets("人件費").Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = Target.Offset(, -5).Value cancel = True End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, cancel As Boolean) If Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub Application.Goto Worksheets("外注費").Range("A1") Worksheets("外注費").Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = Target.Offset(, -5).Value cancel = True End Sub 上の指令はFの列をダブルクリックすると人件費のシートが開いてAある値を人件費の新しいセルのAに代入する指令ですが それをG列ダブルクリックで外注費シートに同じようにやろうと思いましたが出来ません。 たぶん根本的に書き方が間違っているのかと思われますが、ご指導のほどお願いします。
- ベストアンサー
- Excel(エクセル)
- エクセルのマクロ設定について
クリックすると、日付が表示されるように、下記のマクロ設定してあります。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("C4:C30")) Is Nothing Then Exit Sub If ActiveCell = "" Then ActiveCell = Date Cancel = True End If End Sub C4~C30とG4~G30の2箇所にしたいのですが、式はどうしたらいいのでしょうか。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel 2007 マクロについて
初心者なりに試行錯誤しながら、チャレンジしています。 B1セルには日付が入力されています。 B1をダブルクリックしたときにUserForm1のTextBox1にその 日付を表示したいのですが上手くいきません。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("B1:B15")) Is Nothing Then Exit Sub Cancel = True UserForm1.Show UserForm1.TextBox1.Value = Target.Value Unload UserForm1 End Sub どこをどのように修正したらよろしいでしょうか?
- ベストアンサー
- その他MS Office製品
- マクロで二つの構文を繋ぐには
いつもお世話になります。 WIN7 EXCELL2010 です。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub ThisWorkbook に上記のマクロに下記のマクロを追加したいのですが、 End Sub の ところを End If End With などに変えたのですがうまくゆきません。 御指導お願いできませんでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myRange As Range Set myRange = Intersect(Target, Range("M3:V27")) If Not myRange Is Nothing Then Select Case Target.Value Case "" Target.Value = "○" Case "○" Target.Value = "●" Case Else Target.ClearContents End Select Cancel = True End If End Sub 宜しくお願いいします。
- ベストアンサー
- Excel(エクセル)
- 【ExcelVBA】 既にあるマクロの間で実行させたいのです。
こんにちは 下のマクロを・・・ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "●入力" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "●" Then Target = "" Else Target = "●" End If End If End Sub このマクロの■ここで実行■で実行させたいのですが、どのようにしたらよいでしょう。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$D$1" Then Exit Sub Cancel = True Columns("A:U").Select Range("T1").Activate Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Selection.Replace What:="ああ", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("D1").Select End Sub ■ここで実行■ Private Sub Worksheet_Change(ByVal Target As Range) strAddress = "A1:A2000" On Error GoTo ErrorHandler If Target.Count > 1 Then GoTo ErrorHandler If Not Intersect(Target, Range(strAddress)) Is Nothing Then Application.EnableEvents = False Range(strAddress).ClearContents Target.Value = "●" End If ErrorHandler: Application.EnableEvents = True End Sub
- ベストアンサー
- オフィス系ソフト
- シート保護をすると実行エラーになります。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1:A2000")) Is Nothing Then Exit Sub With Selection.Interior If .ColorIndex = xlNone Then .ColorIndex = 4 Else .ColorIndex = xlNone End If End With Cancel = True End Sub A列任意のセルをダブルクリックすると色が変わるコードを組んでいます。しかしながら、 A列のみロックを解除したのち、シート保護をすると、上記の実行がエラーになります。 どのようにすればエラーを回避できるのかお知恵をかしていただければ幸いです。
- ベストアンサー
- オフィス系ソフト
- エクセル デバッグできるのとできないのがある
シートイベントについて教えてください。 シートモジュールに --------------------------------------------------------- Option Explicit Private Sub Worksheet_Activate() MsgBox "" End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox "" End Sub Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "" End Sub --------------------------------------------------------- と記載した時に、 F8で動かせるのは、Worksheet_Activateだけなのですがなぜでしょうか? ほかのイベントは、F8で実行させても、OSの音が鳴るだけで、マクロの実行はされません。 ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 【Excel】 マクロを補足してください。
A1をダブルクリックすると E、D、C、B列のオートフィルタで「すべて」を 選択するようにしました。 続けて 同じシートで、B1をダブルクリックするとE、D、C列の オートフィルタで「すべて」を選択、 C1をダブルクリックするとE、D列のオートフィルタで 「すべて」を選択するようにしたいのですが、 どのようにしたらよいのでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$1" Then Exit Sub Cancel = True Selection.AutoFilter Field:=5 Selection.AutoFilter Field:=4 Selection.AutoFilter Field:=3 Selection.AutoFilter Field:=2 End Sub お願いいたします。
- ベストアンサー
- オフィス系ソフト