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

Frage Entwicklung VB for Applications

Mitglied: Anna2701

Anna2701 (Level 1) - Jetzt verbinden

15.12.2014, aktualisiert 17.12.2014, 3338 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
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 11 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 15 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...