Board logo

標題: [發問] 請問如何對應工作表的名稱 [打印本頁]

作者: 4016    時間: 2016-5-21 12:35     標題: 請問如何對應工作表的名稱

請問各位前輩,小弟需要做一個資料統計的報表,作了以下函數
問題在於工作表的名稱,由於需要開10幾個工作表,且名稱都會再另外命名
造成效果都僅跑到品種名(1)這個工作表裡,
不知道如何能對應到工作表的名稱,讓我10幾個工作表單修改各自名稱,也都能順利執行...謝謝[attach]24332[/attach]
感激不盡!!

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
RR = Target.Row
CC = Target.Column
If RR = 3 And CC <= 4 Then
LR = Range("B3").End(xlDown).Row
    ActiveWorkbook.Worksheets("品種名(1)").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("品種名(1)").Sort.SortFields.Add Key:=Target.Resize(LR, 1), _
         SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("品種名(1)").Sort
        .SetRange Range("A3:D" & LR)
                .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End If

End Sub
作者: ML089    時間: 2016-5-22 20:51

  1. ' 放在 ThisWorkbook,
  2. ' 其他工作表的 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 請關閉或刪除
  3. '
  4. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  5.     Dim xDat As Range, xKey As Range, LR
  6.    
  7.     '    Debug.Print Sh.Name
  8.     '    Debug.Print Target.Address
  9.     '
  10.     If Application.Intersect([A3:D3], Target) Is Nothing Then Exit Sub
  11.     Application.EnableEvents = False
  12.     On Error GoTo ERR
  13.     Debug.Print "Sort ..." & Target.Address
  14.     For Each xSh In Sheets
  15.         ' Debug.Print xSh.Name
  16.         With xSh
  17.             LR = .Range("B3").End(xlDown).Row
  18.             Set xDat = .Range("A3:D" & LR)
  19.             Set xKey = .Range(Target.Address).Resize(LR - 2)
  20.             xDat.Sort key1:=xKey, order1:=xlAscending, Header:=xlYes

  21.         End With
  22.     Next
  23.     GoTo 100
  24. ERR: MsgBox "ERROR"
  25. 100:     Application.EnableEvents = True
  26. End Sub
複製代碼

作者: 4016    時間: 2016-5-22 23:24

回復 2# ML089


ML089大 您好

請問一下關於你所指導的部分
    Debug.Print "Sort ..." & Target.Address
這行在你最下面有說明是要
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

我去google是關於陣列公式的使用..
可是我真的不太明白要在哪個地方按  CTRL+SHIFT+ENTER 輸入
才能正常使用,能否在指點一下,謝謝...
作者: ML089    時間: 2016-5-23 05:56

本帖最後由 ML089 於 2016-5-23 05:57 編輯

回復 3# 4016

{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

這是指我寫公式時若是陣列公式時會以此分為一般公式或陣列公式的說明
列如
{=SUM(IF(a4:a43<10,a4:a43*2))}
表示此公式為陣列公式
1. 將公式輸入(或複製貼上)編輯列,=SUM(IF(a4:a43<10,a4:a43*2))
2. 不用enter輸入,要改用CTRL+SHIFT+ENTER 三鍵輸入公式,輸入成功後公式外就會增加 {...}
3. CTRL+SHIFT+ENTER 三鍵輸入公式技巧是先按住CTRL+SHIFT不放在按 ENTER就能三鍵輸入公式
作者: 4016    時間: 2016-5-23 21:59

回復  4016

{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

這是指我寫公式時若是陣列公式時會以此 ...
ML089 發表於 2016-5-23 05:56


所以跟我這個問題沒關係的意思嗎??
因為我將ML089 大所修改後的文法
' 放在 ThisWorkbook,
' 其他工作表的 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 請關閉或刪除
貼上後,其原本排序的效果 並無法執行..??
這問題是出在哪裡呢?
麻煩能再指點一下嗎
謝謝
作者: ML089    時間: 2016-5-23 22:29

回復 5# 4016

只能點選 A3:D3這4儲存格才能有作用
你可以修改下列中的 [A3:D3]作為點選執行的位置

If Application.Intersect([A3:D3], Target) Is Nothing Then Exit Sub
作者: 4016    時間: 2016-5-23 22:52

回復  4016

只能點選 A33這4儲存格才能有作用
你可以修改下列中的 [A33]作為點選執行的位置

If ...
ML089 發表於 2016-5-23 22:29



有,我試出來了!!!
非常謝謝ML089大的指導!!!




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