Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Mit VBA prüfen, ob Tabellenblatt existiert

Mitglied: Anna2701

Anna2701 (Level 1) - Jetzt verbinden

15.12.2014, aktualisiert 17.12.2014, 3688 Aufrufe, 9 Kommentare

Hallo zusammen,

ich habe folgendes Problem: Ich prüfe in meinem Code, ob ein Tabellenblatt existiert und wenn es existiert soll es gelöscht werden. Soweit so gut. Allerdings wird ein Teil des Names des Tabellenblatts aus einer Combobox ausgelesen. Der Name wird wie folgt erzeugt: "DiagrammNNZ_" & Tabelle4.ComboBox1.Text
Wenn ich aber folgenden Code schreibe, wird nur versucht, das Tabellenblatt zu löschen, welche Bezeichnung gerade in der Combobox ausgewahlt ist und nicht alle Bezeichungen die es in der Combobox auszuwählen gibt. Ich hoffe, ihr versteht mich

On Error Resume Next
If Worksheets("DiagrammNNZ_" & Tabelle4.ComboBox1.Text ) Is Nothing Then
On Error GoTo 0
Sheets("DiagrammNNZ_" & Tabelle4.ComboBox1.Text ).Delete
End If


Liebe Grüße, Anna
Mitglied: colinardo
15.12.2014, aktualisiert um 13:41 Uhr
Hallo Anna,
wenn ich dich richtig verstanden habe erreichst du das Gewünschte mit folgendem Code
01.
Dim ws As Worksheet, strSuchname As String 
02.
Application.DisplayAlerts = False 
03.
strSuchname = "DiagrammNNZ_" & Tabelle4.ComboBox1.Text 
04.
For Each ws In Worksheets 
05.
    If Left(ws.Name, Len(strSuchname)) = strSuchname Then 
06.
        ws.Delete 
07.
    End If 
08.
Next 
09.
Application.DisplayAlerts = True
Grüße Uwe

p.s. Bitte nutze in Zukunft Code-Tags für deinen Quellcode: <code> Quellcode </code>. Merci.
Bitte warten ..
Mitglied: Anna2701
15.12.2014 um 13:46 Uhr
Es funktioniert noch nicht so ganz. Es gibt dann einen Fehler in Zeile 21.

01.
'Alte Tabellenblätter löschen 
02.
 
03.
Dim ws As Worksheet, strSuchname As String 
04.
Application.DisplayAlerts = False 
05.
strSuchname = "DiagrammNNZ_" & Tabelle4.ComboBox1.Text 
06.
For Each ws In Worksheets 
07.
    If Left(ws.Name, Len(strSuchname)) = strSuchname Then 
08.
        ws.Delete 
09.
    End If 
10.
Next 
11.
Application.DisplayAlerts = True 
12.
 
13.
 
14.
'Neues Tabellenblatt erzeugen (DiagrammNNZ - <Auswahl von Kombobox>) 
15.
 
16.
 
17.
        Dim strDiagrammanme  ' Names des Diagrammblattes 
18.
        strDiagrammname = "DiagrammNNZ_" & Tabelle4.ComboBox1.Text 
19.
        ActiveSheet.Shapes.AddChart.Select 
20.
        ActiveChart.ChartType = xlColumnClustered 
21.
        ActiveChart.Location xlLocationAsNewSheet, "DiagrammNNZ_" & Tabelle4.ComboBox1.Text 
22.
        With ActiveChart 
23.
            .SeriesCollection.NewSeries 
24.
            .SetSourceData Source:=Tabelle4.Range(Tabelle4.Cells(i, j), Tabelle4.Cells(i, 5)) ' Range auf horizontal ändern 
25.
            .SeriesCollection(1).XValues = Tabelle4.Range(Tabelle4.Cells(k, l), Tabelle4.Cells(k, 5)) 
26.
        End With 
27.
        With ActiveChart.Axes(xlValue) 
28.
            .MinimumScale = 0 
29.
            .MaximumScale = ymax 
30.
        End With
Bitte warten ..
Mitglied: colinardo
15.12.2014, aktualisiert um 13:49 Uhr
Zitat von Anna2701:

Es funktioniert noch nicht so ganz. Es gibt dann einen Fehler in Zeile 21.
Mein Code funktioniert, ist wohl eher deinem Code geschuldet, weil du dein Sheet mit dem neuen Namen natürlich erst vorher erstellen musst das hast du vergessen...
Bitte warten ..
Mitglied: Anna2701
15.12.2014 um 13:52 Uhr
Der Fehler entsteht nur, wenn das Tabellenblatt existiert. Lösche ich das Tabellenblatt manuell, funktioniert es.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 15.12.2014, aktualisiert 17.12.2014
Zitat von Anna2701:
Der Fehler entsteht nur, wenn das Tabellenblatt existiert. Lösche ich das Tabellenblatt manuell, funktioniert es.
Das kommt weil Ihr immer nur den Code des Makrorekorders blind kopiert, ohne den Code zu verstehen
01.
'Alte Tabellenblätter löschen 
02.
    Dim ws As Worksheet, strSuchname As String 
03.
    Application.DisplayAlerts = False 
04.
    strSuchname = "DiagrammNNZ_" & Tabelle4.ComboBox1.Text 
05.
    For Each ws In Worksheets 
06.
        If Left(ws.Name, Len(strSuchname)) = strSuchname Then 
07.
            ws.Delete 
08.
        End If 
09.
    Next 
10.
    Application.DisplayAlerts = True 
11.
 
12.
'Neues Tabellenblatt erzeugen (DiagrammNNZ - <Auswahl von Kombobox>) 
13.
 
14.
    Dim strDiagrammanme  ' Names des Diagrammblattes 
15.
    Dim chartNew As Chart 
16.
    strDiagrammname = "DiagrammNNZ_" & Tabelle4.ComboBox1.Text 
17.
     
18.
    Set chartNew = Application.Charts.Add 
19.
    With chartNew 
20.
        .ChartType = xlColumnClustered 
21.
        .Name = "DiagrammNNZ_" & Tabelle4.ComboBox1.Text 
22.
        .SeriesCollection.NewSeries 
23.
        .SetSourceData Source:=Tabelle4.Range(Tabelle4.Cells(i, j), Tabelle4.Cells(i, 5)) ' Range auf horizontal ändern 
24.
        .SeriesCollection(1).XValues = Tabelle4.Range(Tabelle4.Cells(k, l), Tabelle4.Cells(k, 5)) 
25.
    End With 
26.
    With chartNew.Axes(xlValue) 
27.
        .MinimumScale = 0 
28.
        .MaximumScale = ymax 
29.
    End With
Bitte warten ..
Mitglied: Anna2701
15.12.2014 um 14:34 Uhr
Da hast du leider recht!
Es entsteht immer noch ein Fehler. Immer noch Zeile 21. Fehler:
Laufzeitfehler '1004':

Kann einem Blatt nicht den gleichen Namen geben wie einem anderen Blatt, einer Objektbibliothek oder einer Arbeitsmappe, auf der Visual Basic Bezug nimmt.
Bitte warten ..
Mitglied: colinardo
15.12.2014, aktualisiert um 14:38 Uhr
Zitat von Anna2701:

Da hast du leider recht!
Es entsteht immer noch ein Fehler. Immer noch Zeile 21. Fehler:
Laufzeitfehler '1004':
hier läuft es einwandfrei, du musst uns hier also noch irgendetwas verschweigen !
Kann einem Blatt nicht den gleichen Namen geben wie einem anderen Blatt, einer Objektbibliothek oder einer Arbeitsmappe, auf der Visual Basic Bezug nimmt.
Jedes Blatt muss einen eindeutigen Namen haben, zwei Mappen mit gleichem Namen geht nicht.
Bitte warten ..
Mitglied: Anna2701
17.12.2014 um 10:04 Uhr
Es funktioniert mittlerweile. Ich habe aber ein neues Problem.
Ich erstelle mit meinem Code ein neues Tabellenblatt, wo das Diagramm drauf erzeugt wird. Ich möchte aber bis zu 8 Diagramme auf diesem Tabellenblatt anzeigen lassen.

01.
DiagrName = "DiagrammNutzungsNebenzeit" 
02.
 
03.
i = 40 
04.
j = 1 
05.
k = 38 
06.
l = 2 
07.
 
08.
Cells(13, 1).Select 
09.
ActiveSheet.Shapes.AddChart.Select 
10.
ActiveChart.ChartType = xlColumnClustered 
11.
ActiveChart.Location xlLocationAsNewSheet, "DiagrammNutzungsNebenzeit" 
12.
ActiveChart.SetSourceData Source:=Range(Tabelle4.Cells(i, j), Tabelle4.Cells(i, 5)) 
13.
ActiveChart.SeriesCollection(1).XValues = Tabelle4.Range(Tabelle4.Cells(k, l), Tabelle4.Cells(k, 5)) 
14.
 
15.
 
16.
ActiveChart.CopyPicture (xlScreen) 
17.
Sheets("DiagrammNutzungsNebenzeit").Paste
Kann ich mit dem Code arbeiten oder muss ich den komplett neu schreiben?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 17.12.2014, aktualisiert um 10:49 Uhr
Ich habe aber ein neues Problem.
neues Problem > neuer Thread !
Sonst würde das Forum hier zu einem heillosen Durcheinander mutieren, merci.

Grüße Uwe

Und den Beitrag dann bitte noch als gelöst markieren. Danke.
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Email Adresse zu prüfen, ob diese noch existiert? VBA

Frage von thomas1972Microsoft Office1 Kommentar

Hallo, besteht per VBA aus Office heraus die Möglichkeit eine Email Adresse zu prüfen, ob diese noch existiert? Bei ...

Microsoft Office

Prüfen ob string im Tabellenblatt vorhanden

gelöst Frage von thomas1972Microsoft Office3 Kommentare

Hallo, ich lasse mit einem Script Teile eines Tabellenblattes suchen/ersetzen) Nur kommt es vor, dass gewisse Zeichen nicht vorhanden ...

Microsoft Office

VBA Excel Tabellenblätter als PDF speichern

gelöst Frage von Florian86Microsoft Office8 Kommentare

Hallo, gib es die Möglichkeit per VBA ein einzelnes Tabellenblatt als PDF zuspeichern. Derzeit speichere ich immer die komplette ...

VB for Applications

Vba Excel Tabellenblatt nach Zellennamen durchsuchen

gelöst Frage von chef1568VB for Applications5 Kommentare

Hallo, ich habe ein Problem bei meinem VBA-Script. Und zwar möchte ich ein bestimmtes Tabellenblatt durchsuchen ob ein bestimmter ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...