Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1684to1688
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

Multiplayer-Excel

Multiplayer-Excel
09.04.2019 10:57:18
Jacob
Hallo,
ich bin dabei, ein Tool zu bauen, mit dem das Schreiben von Artikeletiketten schneller von statten gehen soll.
Zu diesem Zweck habe ich eine doppelte Referenzdatenbank erstellt, in der alle Informationen betreffs des jeweiligen Artikels hinterlegt sind. Doppelt deshalb, weil sehr großer Wert darauf gelegt wird, ob die Artikelbezeichnung in Singular oder im Plural auf dem Etikett stehen soll.
Bisher habe ich es, auch mit Hilfe des Forums hier, geschafft, dass man die Etiketten drucken kann (über eine kleine Hilfstabelle, die nur kurz aufploppt und wieder zugeht, um die Daten dem Etikettenprogramm zur Verfügung zu stellen) und auch das Hinzufügen neuer Artikel in die Referenzdatenbanken klappt einwandfrei.
Mein Problem an der ganzen Geschichte ist, dass mein Chef begeistert von dem Tool ist (das ist nicht das Problem) und meine Kollegin ebenfalls damit arbeiten soll.
Bisher habe ich es so gelöst, dass ich das ganze Projekt komplett kopiert habe, damit sie damit arbeiten kann, und ihr den Button gesperrt habe, mit dem man neue Artikel in die Datenbank einfügen kann. Denn jetzt existieren zwei Versionen der gleichen Datenbank und das gibt ein heilloses Durcheinander.
Ich habe inzwischen die Datenbanken von den Tools gelöst, das Schreiben von Etiketten funktioniert auch problemlos. Nur das Eintragen neuer Artikel macht mir Schwierigkeiten. Innerhalb der selben Datei ist es kein Problem, aber in der nun externen Datenbank will es nicht klappen.
Hier mein Code (bisher):

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Workbooks.Open Filename:= _
"'S:\Verwaltung\Etikettenabteilung\BarTender\Vorlagen\DQ Etikettentool.xlsm'"
For Each rngCell In Workbooks("'DQ Etikettentool.xlsm'").Range("Plural!a2:a10000")
If rngCell.Value  "" Then
i = i + 1
End If
Next rngCell
With ActiveWorkbook.Sheets("Plural")
With ActiveWorkbook.Sheets("Singular")
ThisWorkbook.Sheets("Plural").Cells(i + 2, 1) = TextBox23.Value
ThisWorkbook.Sheets("Singular").Cells(i + 2, 1) = TextBox23.Value
If CheckBox2.Value = True Then
ThisWorkbook.Sheets("Plural").Cells(i + 2, 13).Value = "Hersteller"
ThisWorkbook.Sheets("Singular").Cells(i + 2, 13).Value = "Hersteller"
End If
End With
End With
Application.ScreenUpdating = False
Hide
MsgBox ("Datensatz Nr. " & i + 1 & " erfolgreich an Position Nr. " & i + 2 & " eingepflegt.")
End Sub
Die Variable i ist in Modul 1 public deklariert und zählt die Anzahl der nicht leeren Zellen, damit der nächste Eintrag in die darauffolgende Zelle geschrieben werden kann.
Der Code ist für die Übersichtlichkeit auf jeweils ein Beispiel für Textbox und Checkbox gekürzt.
Ich weiß natürlich, dass man den Code eleganter gestalten könnte, aber darum kann ich mich später kümmern, jetzt soll es funktionieren.
Mit diesem Code werden die neuen Artikel immer noch in die internen Datenbanken geschrieben.
Irgendwo mache ich einen Fehler, aber ich weiß einfach nicht, wo.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Multiplayer-Excel
09.04.2019 11:10:40
EtoPHG
Hallo Jacob,
Die With ActiveWorkbook. Konstrukte, machen überhaupt keinen Sinn, da sie innerhalb der Klammer nicht angewendet werden. Dort benutzt Du Thisworkbook.
Der Unterschied:
ActiveWorkbook ist die zuvor mit Open geöffnete Arbeitsmappe.
ThisWorkbook ist die Arbeitsmappe, in der sich der Code befindet!
Gruess Hansueli
AW: Multiplayer-Excel
09.04.2019 11:29:19
Luschi
Hallo Jacob,
ich hasse begeisterte Chefs, da dies nur zeigt, daß sie keine Ahnung haben von den Vba-Möglichkeiten in Exel/Access/Word usw. - aber über mein Gehalt bestimmen!
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Multiplayer-Excel
10.04.2019 08:35:22
Jacob
Hallo Luschi,
je weniger Ahnung der Chef von VBA hat, desto leichter lässt er sich beeindrucken. ;)
Gruß, Jacob
AW: Multiplayer-Excel
10.04.2019 08:32:36
Jacob
Hallo Hansueli,
erstmal vielen Dank für die schnelle Reaktion!
Der Unterschied zwischen ThisWorkbook und ActiveWorkbook war mir nicht ganz klar, nach deiner Erklärung aber ist es vollkommen logisch.
Das Makro soll ja die Werte aus den TextBoxen bzw bei True in den CheckBoxen vordefinierte Werte in die mit Open geöffnete Datei einfügen.
Deshalb habe ich jetzt innerhalb der With ActiveWorkbook Kontrukte alle ThisWorkbook mit ActiveWorkbook ersetzt.
Wenn ich das Makro jetzt ausführe, gibt er mir einen Laufzeitfehler '9' zurück, Index außerhalb des gültigen Bereichs.
Klicke ich auf Debuggen, zeigt er mir für einen Sekundenbruchteil den Code an, bevor ich auf die externe Datenbank starre, in der ich nicht scrollen kann.
Gruß, Jacob
Anzeige
AW: Multiplayer-Excel
10.04.2019 15:26:54
EtoPHG
Hallo Jacob,
Hast Du dir deinen Code schon mal genauer angeschaut? Bist du schon mal im Einzelschritt Modus (F8) durch den Code gegangen? Was glaubst Du hat die Variable i nach dem Durchlauf von For each für einen Wert? Du klapperst jedesmal 9999 Zellen ab! Das ist völliger Unsinn.
Laufzeitfehler 9, heisst z.B. dass eine Tabelle nicht so benannt ist, wie sie im Code angesprochen wird.
Oder das eine Variable ausserhalb eines gültigen Bereichs zeigt.
Du solltest die folgenden Ratschläge beachten:
Option Explicit immer als 1 Codezeile. Der Kompilier zwingt dich damit alle Variablen mit Dim zu deklarieren.
Debuggen lernen. Bei Fehlern mitteilen in welcher Codezeile der Fehler auftritt.
leider kann ich Dir aber mangels Kentnisse des Datenaufbaus Deiner Tabelle auch nicht weiterhelfen.
Eine Beispielmappe hochladen, dann können die Helfer selbst experimentieren.
Gruess Hansueli
Anzeige
AW: Multiplayer-Excel
11.04.2019 07:25:03
Jacob
Hallo Hansueli,
erstmal danke für die Hilfsbereitschaft.
Das hier ist die Datenbank, in der die neuen Datensätze eingefügt werden sollen: https://www.herber.de/bbs/user/129075.xlsm
Und hier ist das Tool: https://www.herber.de/bbs/user/129077.xlsm
Beides natürlich massiv reduziert, da es ja nur Beispielmappen sein sollen.
Der Laufzeitfehler tritt in Zeile 10 auf, wo ich anfange mit For Each rngCell
Ich habe vorher lediglich den Sub des Moduls gepostet, der nicht so funktioniert hat, wie er sollte, Option Explicit habe ich immer als Codezeile 1 stehen.
Bei jedem Betätigen des Einfügen-Knopfes muss i neu bestimmt werden, war ich der Meinung. Momentan wird die Variable i auch noch zum Anzeigen eines Verlaufs verwendet, aber da kann ich auch eine andere Variable verwenden.
Im Regelbetrieb werden eben nicht haufenweise neue Artikel eingefügt, sondern nur mal sporadisch. Es geht, wie gesagt, sicherlich eleganter, aber für meine Bedürfnisse hat die Geschwindigkeit, mit der der neue Datensatz eingefügt wurde, durchaus genügt.
Bin aber offen für Verbesserungsvorschläge.
Anzeige
AW: Multiplayer-Excel
11.04.2019 08:38:00
EtoPHG
Hallo Jacob,
Hier mal ein Ersatzvorschlag für den Code der Userform:
Option Explicit
Private Sub CommandButton1_Click()
Const dbName As String = "Beispiel DQ.xlsm"
Dim bIsOpen As Boolean
Dim lRow As Long
Dim sErrMsg As String
On Error GoTo Error_Handler
sErrMsg = "Es kann kein leerer Datensatz eingefügt werden!"
If TextBox1 = "" Then GoTo Error_Handler
Application.ScreenUpdating = False
On Error GoTo Error_Handler
sErrMsg = "Datei " & dbName & " NICHT gefunden!"
With Workbooks.Open(Filename:=dbName)
bIsOpen = True
sErrMsg = "Tabellenblatt [Plural] FEHLT!"
With .Worksheets("Plural")
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1) = TextBox1
If CheckBox1 Then .Cells(lRow, 2) = CheckBox1.Caption
End With
sErrMsg = "Tabellenblatt [Singular] FEHLT!"
With .Worksheets("Singular")
.Cells(lRow, 1) = TextBox1
If CheckBox1 Then .Cells(lRow, 2) = CheckBox1.Caption
End With
sErrMsg = "Datensatz konnte nicht gespeichert werden!"
.Close SaveChanges:=True
bIsOpen = False
sErrMsg = ""
End With
Me.Hide
Error_Handler:
If sErrMsg  "" Then
MsgBox sErrMsg, vbCritical, "Fehler im Datensatz einfügen"
If bIsOpen Then ActiveWorkbook.Close SaveChanges:=False
bIsOpen = False
End If
Application.ScreenUpdating = True
End Sub
Gruess Hansueli
Anzeige
AW: Multiplayer-Excel
11.04.2019 09:24:57
Jacob
Hallo Hansueli,
ist ja der Wahnsinn, das funktioniert wie geschmiert!
Hab den Code schon auf die tatsächliche Datei erweitert und angepasst und auch da funktioniert es wunderbar!!
Vielen, vielen Dank!
LG
Jacob

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige