• 締切済み

エクセル2003でダブルクリック処理でエラーをしてしまう

エクセルのシートAからZまであります 一部計算式が入っているのデーター処理が終了後に ダブルクリックでコピー&値の貼り付けで式をなくしていますが 列の一部とフィルターをかけると処理ができずにエラーをしてしまい 対処方法が分かりません 初心者でエラーの意味すら分からないのですが選択した領域と 貼り付ける領域が違うようなのです どこを直せばよいのか教えて下さい。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Dim RangeName As String RangeName = Target.Address RangeName = Mid(RangeName, 2, 1) If RangeName = "Z" And Target = "" Then Target = "OK" Range(Cells(Target.Row, 1), Cells(Target.Row, 27)).Copy ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Range(Cells(Target.Row, 1), Cells(Target.Row, 27)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 End If End Sub 宜しくお願いします。

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

#1、#2です こちらのエクセルが2000だからなのか、エラーが再現できないのですが 非表示を解除すると、できるということですので 非表示解除、コピペ、非表示設定としてみましたので よければ試してみてください Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Dim RangeName As Long Dim RangeHidden(1 To 26) As Boolean Dim i As Long Application.ScreenUpdating = False RangeName = Target.Column If RangeName = 26 And Target = "" Then Target = "OK" For i = 1 To 26 RangeHidden(i) = Columns(i).EntireColumn.Hidden Next Columns("A:Z").EntireColumn.Hidden = False Range(Cells(Target.Row, 1), Cells(Target.Row, 26)).Copy Cells(Target.Row, 1).PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False For i = 1 To 26 Columns(i).EntireColumn.Hidden = RangeHidden(i) Next End If Application.ScreenUpdating = True End Sub

sbym43
質問者

お礼

ありがとうございます。 うまく動きました。感動です

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

#1です #1も軽く修正もしていたのですが、一部間違いもあったので 再度、修正しました Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Dim RangeName As Long RangeName = Target.Column If RangeName = 26 And Target = "" Then Target = "OK" Range(Cells(Target.Row, 1), Cells(Target.Row, 26)).Copy Cells(Target.Row, 1).PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False End If End Sub これ、試してみて

sbym43
質問者

お礼

お礼が遅くなりまして申し訳ありません 何度も考えて頂き誠にありがとうございました。 結果はうまくいきませんでしたが 列を非表示にしなければ うまく動きますのでこちらで使用していきます。 ありがとうございました。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

どんなエラーが出るのか分からないと対処の使用がありません 列の一部?をどうしたのでしょう Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Dim RangeName As Long RangeName = Target.Column If RangeName = 26 And Target = "" Then Target = "OK" Range(Cells(Target.Row, 1), Cells(Target.Row, 27)).Copy Cells(Target.Row, 1).PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False End If End Sub 一応、コードを整理してみました

sbym43
質問者

お礼

早速のご回答を有り難うございます。 説明が不足してまして申し訳ありませんです。 ”列の一部?をどうしたのでしょう” 何列か(C,D,Gの列)を非表示にしているのです オートフィルターで絞り込んでダブルクリックをすると 実行時エラーになってしまいます コピーを選択範囲と貼り付けの領域が性格に同じでないと 目的の貼り付けを行えません。と返してきます。 列をすべて表示すると実行できるのですが どこを直せばよろしいのでしょうか?

関連するQ&A