返回列表 上一主題 發帖

變更工作表名稱

回復 1# myleoyes
  1. Private Sub Worksheet_SelectionChange(ByVal T As Range)
  2.      Select Case T(1).Address(0, 0)
  3.         Case "A2"
  4.               ActiveWindow.ScrollColumn = 1
  5.     End Select
  6.     With T(1)
  7.         If .Column = 1 And (.Row >= 7 And .Row <= 36) And T(1) <> "" Then 變更名稱 .Row
  8.     End With
  9. End Sub
複製代碼
  1. Sub 變更名稱(k)
  2. Dim Z
  3.     If MsgBox("您確定要變更工作表名稱嗎?", vbYesNo) = vbYes Then
  4. Again:
  5.        Z = Application.InputBox("輸入名稱", "        請輸入工作表名稱", " 必須是文字 ", Type:=2)
  6.           If Z = "" Or Z = False Then GoTo Again
  7.           ' MsgBox("你所輸入名稱已存在請重新輸入!")
  8.           Set a = Columns("A").Find(Z, lookat:=xlWhole)
  9.           If Not a Is Nothing Then MsgBox "你所輸入名稱已存在請重新輸入!": GoTo Again
  10.           ActiveCell = Z
  11.           Sheets((k - 6) * 2).Select
  12.           ActiveSheet.Name = Z
  13.     ElseIf vbNo Then
  14.           Exit Sub
  15.     End If
  16.          清除工作表
  17. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復  Hsieh
偶像前輩!謝謝!
       程式無法辨別相同名
       執行階段錯誤為1004
       還有判定 ...
myleoyes 發表於 2013-3-31 17:41

無法判定同名工作表,可能輸入的Z值不在A欄的清單內,而A欄清單並不是所有工作表名稱
  1. Sub 變更名稱(k)
  2. Dim Z, Sht As Object
  3. Set Sht = CreateObject("Scripting.Dictionary")
  4. For Each sh In Sheets
  5.   Sht(sh.Name) = sh.Name
  6. Next
  7.     If MsgBox("您確定要變更工作表名稱嗎?", vbYesNo) = vbYes Then
  8. Again:
  9.        Z = Application.InputBox("輸入名稱", "        請輸入工作表名稱", " 必須是文字 ", Type:=2)
  10.           If Z = "" Or Z = False Then GoTo Again
  11.           ' MsgBox("你所輸入名稱已存在請重新輸入!")
  12.          
  13.           If Sht.exists(Z) Then MsgBox "你所輸入名稱已存在請重新輸入!": GoTo Again
  14.           ActiveCell = Z
  15.           Sheets((k - 6) * 2).Select
  16.           ActiveSheet.Name = Z
  17.     ElseIf vbNo Then
  18.           Exit Sub
  19.     End If
  20.          清除工作表
  21. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題