2016-11-18 573 views
1

我剛開始使用VBA for Excel,遇到了一個問題,我找不到解決方案。我想製作一個宏,它可以製作一份工作表副本並將副本重命名爲單元格B8中指定的副本。現在,單元格B8包含一個字符串和一個值(基於公式),如下所示。小區B8的包含文本和公式值的Excel單元格的VBA Handeling

內容

enter image description here

我怎麼VBA使用的名稱(字符串和數字)作爲新的工作表的名稱?

Sub NewFunction() 

Dim counter As Integer 

Sheets(1).Copy After:=Sheets(1) 

ActiveSheet.name = Sheets(1).Range("B8").CStr 

End Sub 

在此先感謝!

+0

變化'.CStr'到'.Value' –

+0

我試過了。這是行不通的。 – bgaard

+0

當你嘗試它時,你會收到什麼錯誤信息? – CRUTER

回答

1

例如,您不能在表格名稱中使用「/」。它可能會出錯,但Excel會忽略它。

其次,您正在更改錯誤表單上的名稱。您添加了新工作表,然後參考舊工作表。

第三,不需要使用.CStr作爲單元格的值是你想要的,並且因爲這是默認屬性,所以也不需要使用.Value。

+0

上帝,我覺得很愚蠢。非常感謝。 – bgaard

+0

1)我不'認爲第二個建議是正確的:在Copy()'方法後,新工作表成爲_active_一個,而後者和_old_工作表在單元格「B8」中具有相同的信息,所以'ActiveSheet.name =表格(1).Range(「B8」)'會起作用(提供了一個有效的工作表名稱正在使用)2)關於第三個建議,我只想強調的不是沒有_「不需要使用.CStr」_ ,但它不能被使用,因爲'Cstr'不是'Range'對象的屬性或方法 – user3598756

+0

沒錯,B8在兩者上都應該是相同的。 – Rdster

0

你幾乎沒有

Sheets(1).Copy After:=Sheets(1) 
ActiveSheet.name = Replace(Replace(Replace(Replace(Range("B8"), "\", "-"), "/", "-"), "?", "-"), "*", "-") 

其中

  • Worksheet對象Copy()方法,新的工作表成爲活躍一個

  • 的VBA Replace()方法chain是以確保你不是使用禁用的字符爲你的新工作表名稱牛逼

仍有可能重名的問題,可通過特定的功能來處理,你可以找到在這裏,如果你搜索

+0

感謝您的回覆,這是一個聰明的方法! – bgaard

相關問題