返回列表 上一主題 發帖

[發問] 從儲存格中資料,新建或找到一個工作表

[發問] 從儲存格中資料,新建或找到一個工作表

我想要建立一個名單的工作表,裏面是名單的表列

請問如何可以按名單(像超連結)就可以新建一個空白的工作表(有舊的格式空白工作表了),如果工作表名稱已存在,就開啟那個工作表。

例如:工作表(名單)--內有:張三,李四,王五
        工作表(空白工作表)
點擊「張三」儲存格,就可以複製「空白工作表」名稱是「張三」,如果「張三」工作表已存在則開啟「張三」工作表


以上,麻煩各位大大們了~~
----------------
以前有用過「按鈕」方式新建工作表

Private Sub CommandButton1_Click()
Dim I As String
  
    I = InputBox("請輸入客戶姓名.", "Copy Sheet")
    If I <> "" Then
        Sheets(1).Copy After:=Sheets(Sheets.Count) '複製第一個工作表並放到最後一個
        Sheets(Sheets.Count).Name = I              '最後一個工作表的名稱=I
    Else
        MsgBox "複製失敗(資料表未輸入名稱)"
    End If
End Sub

希望要更方便些~~~ 感恩~~~~~
仁兄

回復 1# pitera88

這個是選上任何一個格子時會發生,有需要可以加上指定範圍
  1. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  2.     On Error GoTo skip
  3.     Dim I As String
  4.     I = Target.Cells(1, 1).Value
  5.     If I <> "" Then
  6.         Sheets.Add
  7.         ActiveSheet.Name = I
  8.     End If

  9. skip:
  10. End Sub
複製代碼
緊記代碼要放在工作表裡
  
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

回復  pitera88

這個是選上任何一個格子時會發生,有需要可以加上指定範圍緊記代碼要放在工作表裡
kimbal 發表於 2013-6-11 13:41



    謝謝大大的提供方法,
不過請問可以:1新生成的工作表是放在最後。
       2已經有的工作表就開啟工作表,不然會新增的是一個「SHEET4」

煩請大大了,感恩!!
仁兄

TOP

本帖最後由 stillfish00 於 2013-6-13 10:23 編輯

回復 3# pitera88
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     If Target.Cells(1, 1).Value = "" Then Exit Sub
  3.    
  4.     On Error GoTo ADD_SH
  5.     Sheets(Target.Cells(1, 1).Value).Select
  6.     On Error GoTo 0
  7.    
  8.     Exit Sub
  9.    
  10. 'Error handle
  11. ADD_SH:
  12.     With Sheets.Add(After:=Sheets(Sheets.Count))
  13.         .Name = Target.Cells(1, 1).Value
  14.     End With
  15.     Resume Next
  16. End Sub
複製代碼

TOP

回復  pitera88
stillfish00 發表於 2013-6-13 10:20



    stillfish00 大大,我把程式碼貼上去,可是都沒有動作耶~~

有大大可以試看看嗎?? 感恩!!!!!!
仁兄

TOP

回復 5# pitera88


    還是有大大可以告訴我,
1.判斷這個名字的工作表,是否已存在?  這個命今要怎麼寫??

2.開啟指定工作表的命令是不是 「Worksheets("名字").Activate」??


感恩!!!!!
仁兄

TOP

回復 6# pitera88

  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. If Target.Count > 1 Or Target.Column <> 1 Then Exit Sub
  3. Application.EnableEvents = False
  4. If Target <> "" Then
  5.    On Error GoTo addsheet
  6.    Sheets(CStr(Target)).Select: GoTo 10
  7.    
  8. addsheet:
  9. MsgBox Target & "工作表不存在"
  10.    With Sheets.Add(after:=Sheets(Sheets.Count))
  11.    .Name = CStr(Target)
  12.    End With
  13. End If
  14. 10
  15. Application.EnableEvents = True
  16. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 5# pitera88
Sorry,Resume Next 前面漏掉Err.Clear
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Application.EnableEvents = False

  3.     If Target.Cells(1, 1).Value = "" Then Exit Sub   
  4.     On Error GoTo ADD_SH
  5.     Sheets(Target.Cells(1, 1).Value).Select
  6.     On Error GoTo 0

  7.     Application.EnableEvents = True   
  8.     Exit Sub
  9.    
  10. 'Error handle
  11. ADD_SH:
  12.     With Sheets.Add(After:=Sheets(Sheets.Count))
  13.         .Name = Target.Cells(1, 1).Value
  14.     End With
  15.     Err.Clear
  16.     Resume Next
  17. End Sub
複製代碼

TOP

        靜思自在 : 唯其尊重自己的人,才更勇於縮小自己。
返回列表 上一主題