Board logo

標題: [發問] cell double click & copy 語句 [打印本頁]

作者: jakcy1234    時間: 2013-9-5 14:24     標題: cell double click & copy 語句

[attach]15949[/attach]

有幾個問題想問問...............

問題 (1.)
我想做一個button click (restart auto filter)
但是沒有 shift + space 既語句 ( 只可以用 Rows("1:20").Select )
如果row 會一直增加 21 , 22 , 23 ............N 行,
而又不會SELECT 影響到 22至26行 (如圖)

想問有沒有好像  shift + space 既語句 用 A1 column 為目標到 N行 (最尾的編號) 然後 select all row

我只想了一個辦法 在 M20格加了記號(如圖), 就可以選到 A1~~L20 都是 filter 範圍
  1. Sub Macro19()
  2.     Range("A1").Select
  3.     Range(Selection, Selection.End(xlDown)).Select
  4.     Range(Selection, Selection.End(xlToRight)).Select
  5.     Selection.AutoFilter
  6.     Selection.AutoFilter   
  7. End Sub
複製代碼
================================================================================


問題 (2.)

還有 reset auto filter, 是不是只可以一個一個排 ( 可以不可以一次過 1 至 5 一起 ) ?
如果選了很多filter , data 又太多, 逐個 reset 就會很慢.
  1. Sub Macro20()
  2.     Selection.AutoFilter Field:=1
  3.     Selection.AutoFilter Field:=2
  4.     Selection.AutoFilter Field:=3
  5.     Selection.AutoFilter Field:=4
  6.     Selection.AutoFilter Field:=5
  7. End Sub
複製代碼
=================================================================================

問題 (3.) cell double click & copy ( 不是要即時paste, 只存在記憶中  ), 請問應該要點改 ?
  1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
  2. With Worksheets("Sheet2").UsedRange.Cells
  3. Dim r As Long
  4. r = Target.Row
  5. For Each c In Rows(r).Cells
  6. b = c.Address
  7. Worksheets("Sheet3").Range(b) = c
  8. Next c
  9. End With

  10. End Sub
複製代碼

作者: GBKEE    時間: 2013-9-6 07:24

回復 1# jakcy1234
2# sunnyso 說上傳檔案是方便解答(不必瞎子摸象)
  1. Option Explicit
  2. Sub Macro19()
  3.     Dim Rng As Range
  4.     With Sheets("SHEET1")
  5.         Set Rng = .Range(.[A1], .[A1].End(xlDown)).Resize(, 12)            'M20格加了記號(如圖), 就可以選到 A1~~L20 都是 filter 範圍
  6.         'Set Rng = .Range(.[A1], .[A1].End(xlDown)).Resize(, .[L1].Column) 'M20格加了記號(如圖), 就可以選到 A1~~L20 都是 filter 範圍
  7.     End With
  8.     MsgBox Rng.Address
  9. End Sub
複製代碼

作者: jakcy1234    時間: 2013-9-6 17:20

回復 3# GBKEE

謝謝你的解答
你的語句比我的簡單很多, 以上3個問題我昨天已經解決了.


另外其實cell double click & copy 已找到方法, 但是如果我在 1至8行中增加N行數 , 指定的 Range 範圍就失去效用,
是不是要用vlookup offset 來設定 (如A9為 [項目名] >> vlookup 項目名 offset Range 導向 10,0 : 20,3 ),
我只識vlookup 函數formula 但macro 就不懂怎寫, 請問要怎改?
  1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  2.     If Not Intersect(Range("A10:D20"), Target) Is Nothing Then
  3.         Application.EnableEvents = False
  4.         Range("E20") = Target
  5.         Application.EnableEvents = True
  6.             Range("E20").Select
  7.     Selection.Copy
  8.     End If
  9. End Sub
複製代碼

作者: GBKEE    時間: 2013-9-6 18:03

回復 4# jakcy1234
http://forum.twbts.com/thread-10339-1-1.html  的 13帖
作者: jakcy1234    時間: 2013-9-8 07:50

回復 4# GBKEE
Dim findValue As Range
Set findValue = Range("E1:E100").Find(What:="項目", After:=Range(" E1 "), LookIn:=xlFormulas)
If Not findValue Is Nothing Then
...........
End If
(findValue.Offset(1, 0).Address)   ' $E$19 就變 $E$20


我沒有lookup或index 最後我簡簡單單用 find xlFormulas + offset 去選用範圍
作者: GBKEE    時間: 2013-9-8 08:24

回復 5# jakcy1234
不錯,條條道路通羅馬.




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)