Właśnie zacząłem pracować z VBA dla Excela i mnieWystąpił problem, którego nie mogę znaleźć. Chcę utworzyć makro, które tworzy kopię arkusza i zmienia nazwę kopii na to, co jest określone w komórce B8. Teraz komórka B8 zawiera ciąg znaków i wartość (na podstawie na wzorze) zilustrowanym poniżej.
Zawartość komórki B8
Jak uzyskać, aby VBA używało nazwy (ciągu i numeru) jako nazwy nowego arkusza?
Sub NewFunction()
Dim counter As Integer
Sheets(1).Copy After:=Sheets(1)
ActiveSheet.name = Sheets(1).Range("B8").CStr
End Sub
Z góry dziękuję!
Odpowiedzi:
1 dla odpowiedzi № 1Po pierwsze, nie możesz użyć "/" w nazwie arkusza. Może to być błąd, ale Excel zignoruje go.
Po drugie zmieniasz nazwę na niewłaściwym arkuszu. Dodałeś nowy arkusz, a następnie odesłałeś do starego arkusza.
Po trzecie, nie trzeba używać .CStr, ponieważ wartość komórki jest tym, czego potrzebujesz, a ponieważ jest to właściwość domyślna, nie musisz również używać wartości .Value.
0 dla odpowiedzi nr 2
byłeś prawie na miejscu
Sheets(1).Copy After:=Sheets(1)
ActiveSheet.name = Replace(Replace(Replace(Replace(Range("B8"), "", "-"), "/", "-"), "?", "-"), "*", "-")
gdzie
po
Copy()
metodaWorksheet
obiekt, nowy arkusz staje się aktywny jedenVBA
Replace()
metodachain
to upewnić się, że nie używasz niedozwolonych znaków do nowej nazwy arkusza roboczego
pozostaje kwestia możliwych zduplikowanych nazw, które mogą być obsługiwane za pomocą konkretnej funkcji, którą można znaleźć tutaj, jeśli wyszukujesz