Anzeige
Archiv - Navigation
1264to1268
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Programmierung

VBA Programmierung
Newbie1987
Moin, Moin!
Ich mache zurzeit ein Praktikum und wurde mit der "neugestaltung" einer Excel- Tabelle beauftragt... Nun habe ich aber leider keinerlei Ahnung, wie man damit Makros über VBA programmiert.
Habe schon Ewigkeiten im Netz die Foren abgegrast und auch schon die ein oder andere Lösung gefunden ... sogar VBA-Codes konnte ich schon entsprechend anpassen.
Für ein bzw. eher zwei Probleme habe ich jedoch nciht wirklich einen passenden Code gefunden bzw. war nicht fähig ihn an meine Problematik anzupassen.
Die da lauetet:
Ich habe eine Tabelle die folgendermaßen aussieht:
Spalte: Tag(F) Monat (G) Wochentag(H) Dozent(I) Inhalt(J) Themen(K) Zeit(L) Kurs(M) Ort(N)
Es handelt sich bei allen Zellinhalten um 'Text'....
Nun sollen aus dieser Tabelle in Arbeitsblatt 'Tabelle1' weitere Arbeitsblätter AUTOMATISCH generiert werden, die den Namen der Inhalte von Spalte 'Kurs' (M) tragen...
H
ierbei handelt es sich um den Namen der Berufschulklassen (zB Azubi 08-12) .... Problem bzw für mich zu schwierig ist, dass dabei die komplette Spalte M nach 'neuen Klassen' durchsucht und dann entsprechend ein neues Arbeitsblatt erstellt werden soll (sofern es noch keins gibt).
Jetzt kommt jedoch erst der eigentlich Hammer...
Mein Chef wünscht sich, dass die neuen Arbeitsblätter die Stundenpläne der einzelnen Klassen enthalten.... die sich bei Veränderungen in 'Tabelle1' automatisch anpassen und im besten Fall auch einen Verweis/Verknüpfung o.Ä. aufweisen... sodass man mit einem Klick im Stundenplan an die richtige Stelle in 'Tabelle1' gelangt....
UiUiUi.... kompliziert.
Wichtig wäre vielleicht noch, dass, meines Erachtens, eine Bedingung von 'Kurs(M)' und 'Inhalt(J)' notewendig ist... da der Inhalt mehrfach auftaucht: zB Modul1 als Inhalt... sowohl bei 'Azubi 08-12' als auch bei 'Azubi 04-12'.
Ich hoffe, ihr versteht einigermaßen, was ich meine... wäre für eine Hilfestellung unendlich dankbar!!!!!!
Beste Grüße!

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Programmierung
19.06.2012 16:39:52
Mark
Hallo Newbie1987,
mit den Arbeitsblatt sehe ich keine Probleme.
Müsstest alle im Workbook durchlaufen und dann gegebenenfalls anlegen:
Sub test()
Dim wrk As Workbook  'Workbook object - Always good to work with object variables
Dim sht As Worksheet 'Object for handling worksheets in loop
Set wrk = ActiveWorkbook 'Working in active workbook
For Each sht In wrk.Worksheets
Debug.Print sht.Name
Next sht
End Sub
Wieviel code hast Du schon und wo sind die Probleme?
Gruß
Mark
AW: VBA Programmierung
20.06.2012 13:01:19
Newbie1987
Entschuldigt bitte vielmals diese 1000fachen posts.... hatte hier technische Probleme, finde aber keinen "Löschen"-Button... peinlich! *rotwerd*
Anzeige
Excel für Weggelaufene....
19.06.2012 18:42:15
NoNet
Hallo Newbie,
weshalb sagst Du Deinem Chef denn nicht offen und ehrlich, dass diese Aufgabenstellung mind. 2 Nummern zu schwierig für Dich ist?
Das ist keine Schande, denn schliesslich fällt so ein Expertenwissen nicht über Nacht vom Himmel und kein Mensch wird damit geboren.
Würde mein Chef von mir heute verlangen, dass ich einen russischen Text ins Chinesische übersetzen soll, so würde ich ihm doch auch ehrlicherweise mitteilen, dass ich weder russisch noch chinesisch sprechen, verstehen noch lesen oder schreiben kann!
Die Aufgabe erscheint mir eher für die Gruppe "Excel für Weggelaufene Fortgeschrittene" geeignet zu sein denn für einen Newbie!
Ein Praktikum sollte auch immer angemessen an den Kenntnisstand sein - kein Trainee im Wirtschaftssektor bekommt z.B. die Aufgabe während seines Praktikums die Weltwirtschaft wieder gerade zu rücken - oder <ironie> kein Holländer die Aufgabe, irgend ein Team der Fussball-EM zu besiegen </ironie> ;-)
Du kannst Dir z.B. mal folgenden Text meiner Webseite zu diesem Thema durchlesen (oder auch gerne Deinem Chef zeigen) :
http://www.excelei.de/seiten/vba_erlernen.php
Salut, NoNet

http://www.exceltreffen.de/index.php?page=224
Anzeige
AW: Excel für Weggelaufene....
20.06.2012 09:50:31
Newbie1987
Hallo NoNet,
vielen Dank für deinen Rat und den link.
Alllerdings habe ich ausreichend Zeit bekommen um mich mit der Thematik auseinanderzusetzen. Und ich hätte auch keinerlei Hemmungen meinem Chef mitzuteilen, sollte mich diese Aufgabe überfordern. Doch möchte ich mich zunächst erst einmal damit auseinandersetzen und gern eure Hilfe in Anspruch nehmen bevor ich kapituliere. Den ein oder anderen Erfolg konnt eich bereits verzeichnen.....
Mir würde es schon helfen diesen Code so zu erweitern, dass nicht lediglich EINE ZELLE, sondern eine GANZE SPALTE (M) abgeglichen wird...
Sub NeuesBlatt()
Dim ws As Worksheet, wb As Workbook, sName As String
sName = ActiveWorkbook.Sheets(1).Range("M")
Set wb = ActiveWorkbook
On Error Resume Next
Set ws = wb.Sheets(sName)
If Err.Number = 9 Then
On Error GoTo 0
Set ws = wb.Sheets.Add(, wb.Sheets(wb.Sheets.Count))
ws.Name = sName
End If
Set ws = Nothing
End Sub


Im besten Fall würde dieser Code natürlich soweit ergänzt, dass bei der Erfüllung der Bedingung M=‘Arbeitsblattname‘ und J=(zB)‘Modul 1‘ die Inhalte der gleichen Zeile aus Spalte ‚F‘; ‚G‘; ‚H‘; ‚I‘; ‚K‘; ‚L‘ und ‚N‘ in das neue Arbeitsblltt kopiert werden….
Eine Änderung des oben stehenden Codes hinsichtlich des Abgleichs der gesamten Spalte, statt ausschließlich einer einzigen Zelle, wäre allerdings schon ein großer Schritt in die richtige Richtung!!!
Wenn ich bei ‚Range(„M“)‘ lediglich die Änderung in ‚Range(„M360:M“)‘ oder ‚Range(„M360:M10000)‘ vornehme erhalte ich lediglich Fehlermeldungen…. (eine Berechnung ab M360 würde ausreichen…. es könnte sich aber auch ruhig auf die gesamte Zeile M beziehen, wobei M1:M4 festgestellt sind…
Schon an dieser Stelle ein fettes DANKE !!! :D
Anzeige
AW: VBA Programmierung
20.06.2012 09:56:50
Mark
Hallo Newbie1987,
hier eine Anfang:
https://www.herber.de/bbs/user/80651.xls
Du solltest jetzt das Beispiel überarbeiten und dann noch mal mit gezielten Fagen kommen.
Die meisten Forummitglieder haben nämlich keine Lust die ganze Arbeit für Dich zu machen.
Gruß
Mark
AW: VBA Programmierung
20.06.2012 10:10:56
Newbie1987
Hey Mark,
das ist super!!!! DAAAANKE!!!
Wenn es jetzt noch eine Ergänzung um folgenden Befehl folgen würde: GENIAL!!! :D :
Im besten Fall würde dieser Code natürlich soweit ergänzt, dass bei der Erfüllung der Bedingung M=‘Arbeitsblattname‘ und J=(zB)‘Modul 1‘ die Inhalte der gleichen Zeile aus Spalte ‚F‘; ‚G‘; ‚H‘; ‚I‘; ‚K‘; ‚L‘ und ‚N‘ in das neue Arbeitsblltt kopiert werden….
Ich wünschte, ich wäre einer von Euch!!!
Da ergibt sich gleich noch eine private Frage:
Ich kann nicht leugnen, dass ich das Prgrammieren tendenziell eine spannende Sache finde, allerdings gibt es soviele Prgrammiersprache und Möglichkeiten, dass ich nicht einschätzen kann welche es am sinnvollsten wäre zu 'lernen'.
Sprich, mit welcher könnte ich als Laie und Autodidakt am meisten anfagen und vor allem, welche wäre es am realistischsten auf diese Weise zumindest in ihren Basics zu erlernen?
Hatte in der Oberstufe mal eine Einführung in die html-Programmierung und im Studium Kurse zur Syntax für das Statsik- Programm SPSS... das war´s auch schon an Programmier-'Kenntnissen'.... also any suggestions?!?!? :)
Anzeige
AW: VBA Programmierung
20.06.2012 10:34:31
Mark
Hallo Newbie1987,
wenn Du ein Beispiel Hochladen würdest könnte ich Dir bei der Umsetzung helfen.
Soll nur immer eine Zeilen in das Neue Arbeitsblatt kopiert werden?
Gruß
Mark
AW: VBA Programmierung
20.06.2012 12:37:22
Newbie1987
Hey Mark,
vielen Dank noch einmal für die Mühe, die du dir machst!!!
Also hier lade hier mal einen (abgewandelten) Ausschnitt aus dem Dokument hoch.
https://www.herber.de/bbs/user/80655.xlsx
Sinn der Sache soll sein, dass sobald ein neuer Kurs (zB "Azubi 08-12") eingetragen wird, automatisch ein neues Arbeitsblatt mit dem Kurs als Namen angelegt wird UND die Inhalte der Spalten F, G, H, I, K, L, N importiert werden, sofern der "Inhalt" (Spalte J) zB "M1" oder "M7.2" lautet.
Ziel ist es automatisch Stundenpläne zu generieren, sodass zukünftig weniger "Übertragungsfehler" passieren.
Problem bzw. Heruasforderung ist die zusätzliche Kombination von der Bedingung "Kurs" (Spalte M) und "Inhalt" (Spalte J)....
thx so much!!!
BTW:
Ich bin echr fasziniert von solchen "Programmierkünsten" und ich würde mich gerne mal autodidaktisch(!) tiefer in ein Programm einarbeiten. In der Schule hatte ich mal eine Einführung in die html-Programmierung und während des Studiums einige Einblicke in das Verfassen der Syntax des Statistikprogramms SPSS...das war´s dann aber auch schon.
Vielleicht könntet Ihr mir eine Programmiersprache empfehlen, mit der man "recht viel" anstellen kann, die aber auch nicht zu schwierig ist um sich die Basics eigenständig anzueigenen....?!?!?
beste Grüße
Anzeige
AW: VBA Programmierung
20.06.2012 10:48:39
Newbie1987
@ Mark
Wenn ich diesen wunderschönen Code auf mein Dokument anwenden will, wird mir leider mitgeteilt:
"Laufzeitfehler '1004': Die Methode 'Name' für das Objekt '_Worksheet' ist fehlgeschlagen"
.. und zeigt mir foolgende Zeile als Fehlerquelle an:
... For i = 0 To UBound(Kurse)
bKursSheetgefunden = False
For Each Wks In wkb.Sheets
If Wks.Name = Kurse(i) Then
bKursSheetgefunden = True
Exit For
End If
Next Wks
If Not bKursSheetgefunden Then
'Objekt neues Sheet
Set Wks = wkb.Sheets.Add(, wkb.Sheets("Tabelle1"))
Wks.Name = Kurse(i)
End If
....
Es wird dann zwar ein neues Arbeitsblatt hinzugefügt, jedoch heisst dieses dann 'Tabelle3', 'Tabelle4' etc... o.O
glG
Anzeige
AW: VBA Programmierung
20.06.2012 11:09:33
Mark
Hallo,
generell muss ein Sheet (Blatt) einen eindeutigen Namen haben!
In der Spalte kann man aber schon dopplete Name eintragen!
Das bedingt, dass man das überprüfen muss.
Des weiteren ist der Name des Blattes "fest" im Code, wenn jetzt jemand das umbenennt funktioniert der Code nicht mehr.
Lösch mal alle Sheets ausser Tabelle1 und teste den code nochmal!
Gruß
Mark
AW: VBA Programmierung
20.06.2012 12:09:46
Newbie1987
Danke, danke noch mal für die Mühe, die du dir machst...
Ich habe hier mal einen Ausschnitt aus der Tabelle (etwas abgewandelt).
https://www.herber.de/bbs/user/80653.xlsx
Kopiert werden soll immer nur aus einer Zeile, wenn dort beispielsweise die Bedingung "Modul 1" oder "Modul 7.3" erfüllt ist...
Sinn der Sache ist, dass ein neues Arbeitsblatt mit dem Namen des Kurses erstellt wird und dort alle Termine inkl. Themen, Dozenten; Datum, Zeit und Ort für eben einen "Inhalt" (M1; M7.3) in Spalte "J" impoertiert werden.
Dafür is aber quasi eine Übersetzung eines "Wenn"- Befehls notwendig... da ja sowohl der "Kurs" als auch der "Inhalt" passen müssen.
Beispiel:
Neues Arbeitsblatt: "Azubi 08-12" beinhaltet dann alle Termine mit Dozenten, Datum, Zeitraum und Ort für das Modul (Inhalt) "M1".
Sinn der Sache ist, dass es hier häufig "Übertragungsfehler" bei der Erstellung der Liste (Tabelle1) und der Stundenpläne gibt. Deshalb soll dieser Ablauf automatisiert werden....
thx so much!
Anzeige
AW: VBA Programmierung
20.06.2012 12:20:52
Newbie1987
Danke, danke noch mal für die Mühe, die du dir machst...
Ich habe hier mal einen Ausschnitt aus der Tabelle (etwas abgewandelt).
https://www.herber.de/bbs/user/80653.xlsx
Kopiert werden soll immer nur aus einer Zeile, wenn dort beispielsweise die Bedingung "Modul 1" oder "Modul 7.3" erfüllt ist...
Sinn der Sache ist, dass ein neues Arbeitsblatt mit dem Namen des Kurses erstellt wird und dort alle Termine inkl. Themen, Dozenten; Datum, Zeit und Ort für eben einen "Inhalt" (M1; M7.3) in Spalte "J" impoertiert werden.
Dafür is aber quasi eine Übersetzung eines "Wenn"- Befehls notwendig... da ja sowohl der "Kurs" als auch der "Inhalt" passen müssen.
Beispiel:
Neues Arbeitsblatt: "Azubi 08-12" beinhaltet dann alle Termine mit Dozenten, Datum, Zeitraum und Ort für das Modul (Inhalt) "M1".
Sinn der Sache ist, dass es hier häufig "Übertragungsfehler" bei der Erstellung der Liste (Tabelle1) und der Stundenpläne gibt. Deshalb soll dieser Ablauf automatisiert werden....
thx so much!
Anzeige
AW: VBA Programmierung
20.06.2012 12:34:13
Newbie1987
Hey Mark,
vielen Dank noch einmal für die Mühe, die du dir machst!!!
Also hier lade hier mal einen (abgewandelten) Ausschnitt aus dem Dokument hoch.
https://www.herber.de/bbs/user/80655.xlsx
Sinn der Sache soll sein, dass sobald ein neuer Kurs (zB "Azubi 08-12") eingetragen wird, automatisch ein neues Arbeitsblatt mit dem Kurs als Namen angelegt wird UND die Inhalte der Spalten F, G, H, I, K, L, N importiert werden, sofern der "Inhalt" (Spalte J) zB "M1" oder "M7.2" lautet.
Ziel ist es automatisch Stundenpläne zu generieren, sodass zukünftig weniger "Übertragungsfehler" passieren.
Problem bzw. Heruasforderung ist die zusätzliche Kombination von der Bedingung "Kurs" (Spalte M) und "Inhalt" (Spalte J)....
thx so much!!!
BTW:
Ich bin echr fasziniert von solchen "Programmierkünsten" und ich würde mich gerne mal autodidaktisch(!) tiefer in ein Programm einarbeiten. In der Schule hatte ich mal eine Einführung in die html-Programmierung und während des Studiums einige Einblicke in das Verfassen der Syntax des Statistikprogramms SPSS...das war´s dann aber auch schon.
Vielleicht könntet Ihr mir eine Programmiersprache empfehlen, mit der man "recht viel" anstellen kann, die aber auch nicht zu schwierig ist um sich die Basics eigenständig anzueigenen....?!?!?
beste Grüße
Anzeige
AW: VBA Programmierung
20.06.2012 12:35:32
Newbie1987
Hey Mark,
vielen Dank noch einmal für die Mühe, die du dir machst!!!
Also hier lade hier mal einen (abgewandelten) Ausschnitt aus dem Dokument hoch.
https://www.herber.de/bbs/user/80655.xlsx
Sinn der Sache soll sein, dass sobald ein neuer Kurs (zB "Azubi 08-12") eingetragen wird, automatisch ein neues Arbeitsblatt mit dem Kurs als Namen angelegt wird UND die Inhalte der Spalten F, G, H, I, K, L, N importiert werden, sofern der "Inhalt" (Spalte J) zB "M1" oder "M7.2" lautet.
Ziel ist es automatisch Stundenpläne zu generieren, sodass zukünftig weniger "Übertragungsfehler" passieren.
Problem bzw. Heruasforderung ist die zusätzliche Kombination von der Bedingung "Kurs" (Spalte M) und "Inhalt" (Spalte J)....
thx so much!!!
BTW:
Ich bin echr fasziniert von solchen "Programmierkünsten" und ich würde mich gerne mal autodidaktisch(!) tiefer in ein Programm einarbeiten. In der Schule hatte ich mal eine Einführung in die html-Programmierung und während des Studiums einige Einblicke in das Verfassen der Syntax des Statistikprogramms SPSS...das war´s dann aber auch schon.
Vielleicht könntet Ihr mir eine Programmiersprache empfehlen, mit der man "recht viel" anstellen kann, die aber auch nicht zu schwierig ist um sich die Basics eigenständig anzueigenen....?!?!?
beste Grüße
AW: VBA Programmierung
20.06.2012 12:39:56
Newbie1987
test
AW: VBA Programmierung
20.06.2012 13:19:07
mark
Hallo Newbie1987,
generell ist es beim programmieren erforderlich sich Gedanken zu machen wie das Programm funktionieren soll! Da Du scheinbar noch nicht so ein erfahrener Programmieren bist und Du den code nicht selber programmierst ich eine genaue Beschreibung erforderlich!!!!
Nachstehend ein paar Fragen die mir sofort einfall:
1. Was Passiert mit den angelegten Sheets. WErden diese gedruckt kopiert oder bleiden diese in dem Workbook. (Werden diese einzeln gespeichert funktioiert zB. eine Verweis zur Hauptliste nicht)
2. Was passiert wenn etwas in der Liste geändert wird.
3. Kannst das generierte Blatt geschützt werden oder sind darin Änderungen erlaubt. Werden diese Änderungen in die Hauptliste zurückgespielt?
4. Wann werden die Sheets angelegt? (über Button, bei Änderung , per Menü...)
Das sind die Fragen die mir auf Anhieb einfallen, OHNE das ich angefangen habe zu programmieren!!!
Für den Einstieg ist das schon eine sehr große Herausforderung!
Oder Du investierest eine menge Zeit!
Ich kann dich gern unterstüzen.
Du kannst mich gern anmailen um die Kommunikation für mich einfacher zu gestalten!
mark.sobotta@roche.com
Gruß
Mark

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige