2016-06-16 65 views
2

我有一個工作表,其中有一個輸入框(用於公司名稱),它在新表中創建一個新選項卡和一個新條目,並具有指向新工作表的超鏈接。只有在名稱中沒有空格的情況下(即名稱是「公司」),超鏈接才起作用。超鏈接工作正常,但如果名稱是「新公司」,超鏈接不起作用。我可以在事實之後手動編輯鏈接以使其重新工作,但我希望能夠在此找到解決方案。代碼舉例如下。VBA - 超鏈接到新工作表;命名問題

Sub NewCompany() 

Dim strName As String 

Dim strLink As String 

'get the name 

    'InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) 
    strName = InputBox("Enter Company Name.", "NAME COLLECTOR") 
    'Exit sub if Cancel button used or no text entered 
    If strName = vbNullString Then Exit Sub 

    MsgBox "Creating Tab " & strName 

'create new row 

    Rows("4:4").Select 
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

'put Company name in column A 

    Cells(4, 1).Value = strName 

' create new tab, input name in new tab cell, rename new tab 

    Sheets("Blank").Select 
    Application.Run "BLPLinkReset" 
    Sheets("Blank").Select 
    Application.CutCopyMode = False 
    Sheets("Blank").Copy After:=Sheets(5) 
    Application.Run "BLPLinkReset" 
    Sheets("Blank (2)").Select 
    Application.Run "BLPLinkReset" 
    Cells(3, 3).Value = strName 
    Sheets("Blank (2)").Name = strName 
    Sheets("Home").Select 
    Application.Run "BLPLinkReset" 
    Range("B4").Select 
    Application.CutCopyMode = False 

'create hyperlink to new tab 

    strLink = strName & "!A1" 
    Range("B4").Select 
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ 
     strLink, TextToDisplay:=strName 
    Range("A4").Select 

End Sub 

總之,當公司的名稱沒有一個空間在裏面,但我想找到一種方法,更改代碼,使之與公司名稱的工作空間的超級鏈接的作品。任何幫助將非常感激。

回答

1

改變這一行:

strLink = strName & "!A1" 

strLink = "'" & strName & "'!A1" 
+0

謝謝你,那確實起作用。你介意填補我爲什麼和它的工作原理嗎? – Jon0311

+1

@ Jon0311鏈接的名稱需要包含在單引號內才能正確聲明 – RGA

+2

如果Excel中的公式包含對另一個工作表上的單元格的引用,並且該工作表的名稱中包含(例如)空格,Excel會自動在公式引用中的工作表名稱周圍添加單引號:='Sheet 1'!A1。由於您不知道新工作表是否會在其名稱中包含空格,因此始終添加單引號是個不錯的主意。 – jkpieterse