Andrzej Rapp

Andrzej Rapp specjalista ds.
informatyki, Techem

Temat: procedura dodająca nowy arkusz z kopiowaniem

Chciałem zrobić procedurę żeby dodawać nowy arkusz i następnie skopiować dane z innego arkusza
Mam problem z procedurą dodającą nowy arkusz w VBA.
Niestety jak sprawdzam czy jest arkusz czy nie to i tak jest tworzony kolejny arkusz i czynność kopiowania się nie wykonuje.
Proszę o pomoc

Sub Nowy()

Dim nazwa As String
Dim ark As Worksheet

Sheets.Add

For Each ark In Sheets
If ark.Name = InputBox("Podaj nazwe arkusza" & nazwa) Then
ActiveSheet.Name = nazwa

Workbooks.Open Filename:="C:\Users\andy\Documents\VBA\rozliczenie.xls"

ActiveCell.Offset(0, -4).Columns("A:C").EntireColumn.Select
Selection.Copy
Windows("Raport1.xls").Activate
Sheets(nazwa).Select

ActiveSheet.Paste

Else
MsgBox "Arkusz juz istnieje podaj nowa nazwe", vbOKOnly
Call Nowy
End If
Next ark
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: procedura dodająca nowy arkusz z kopiowaniem

No pewnie że tak. Polecenie:
Sheets.Add

masz zapisane przez pętlą
For Each ark In Sheets

Ale i w pętli było by źle.

Takie utworzenie nowego arkusza powinno być po pętli, ponieważ pętla nie służy do niczego innego jak przekazać nam stan zmiennej przełącznika Boolean = mówiąca o tym że jest lub nie ma takiego arkusza. Jeśli nie ma to tworzysz, jeśli jest to dopisujesz.. (lub co tam chcesz).

Zadeklaruj taką zmienną, a jeżeli pętla zwróci zgodność nazwy arkusza z podana nazwą InputBoxa, ten zaś wywołaj przed pętlą przypisując wynik do zmiennej string.

Następna dyskusja:

Arkusz kalkulacyjny w Open ...




Wyślij zaproszenie do