Willkommen im PC-Welt-Forum
Liebe Leser,
Wenn dies Ihr erster Besuch hier ist, lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Sie müssen sich vermutlich registrieren, bevor Sie Beiträge verfassen können. Klicken Sie rechts auf 'Jetzt registrieren.', um den Registrierungsprozess zu starten.
Wenn dies Ihr erster Besuch hier ist, lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Sie müssen sich vermutlich registrieren, bevor Sie Beiträge verfassen können. Klicken Sie rechts auf 'Jetzt registrieren.', um den Registrierungsprozess zu starten.
Ergebnis 1 bis 9 von 16
Thema: Makro zur Dateneintragung
-
20.03.2007, 10:19 #1
Byte
- Registriert seit
- 03.2007
- Beiträge
- 8
Makro zur Dateneintragung
Hallo zusammen,
Ich habe eine Problem mit einer Tabelle und einem Makro, dass ich einfach nicht gebacken bekomme.
Ich habe eine Tabelle "Tabelle1 (2)" dort sind 4 Felder, die auszufüllen sind. B3,B5,D3,D5. Jene Werte sollen weiter unten in eine Tabelle eingefügt werden.
B3 soll in die Zeile A ab A16
D3 soll in die Zeile B ab B16
B5 soll in die Zeile C ab C16
D5 soll in die Zeile D ab D16
Nun hier liegt mein Problem. Die Werte kann ich zwar per Makro in die jeweilige Spalte kopieren lassen, doch dann weis ich nicht wie ich es bewältige, dass der nächste Eintrag dann in Zeile 17 (usw.) stattfindet. Zudem möchte ich auch, dass das Makro testet ob der Eintrag schon vorhanden ist, falls ja soll das Makro die Eingabe stoppen und eine Message anzeigen, welche mir sagt, dass eben jener Eintrag schon vorhanden ist.
Und falls es etwas daran ändert: Ich verwende Office97
Ich hoffe ihr könnt mir bei meinem Problem helfen. Danke im Voraus.
Grüße aus Niederbayern,
Manuel
P.S.: Sorry aber bin eben noch ein newbie im Umgang mit Makros
Geändert von denji3004 (20.03.2007 um 11:04 Uhr)
-
20.03.2007, 14:12 #2
Kbyte
- Registriert seit
- 03.2004
- Ort
- Schweiz
- Beiträge
- 319
Hallo Manuel
Du hast also im oberen Bereich ein "Eingabeformular" und unten eine Liste...
Du kannst (wenn es keine leeren Listeneinträge gibt) die Zeilennummer des letzten Eintrags mit "Range("A2").End(xlDown).Row" herausfinden (wobei "A2" das oberste Feld meiner Liste ist).
Ich hoffe, ich habe Dich richtig versanden und Du kannst nun dein Makro vervollständigen.
Gruss
Bruno
-
20.03.2007, 18:21 #3
Hallo Manuel,
Willkommen im Forum.
Ich benutze Excel 2000. Es ist schon eine Weile her und ich weiß gar nicht mehr, ob meine Vorgängerversion Excel 97 oder 95 war. Ich weiß aber noch, dass es damals noch gar kein VBA gab, sondern Excel-Basic (hat deutsche Befehle). Das würde bedeuten, dass dir Brunos Vorschlag nicht hilft.
Außerdem waren die Möglichkeiten der Datenbehandlung noch nicht so gut wie jetzt, das könnte sich auch noch nachteilig auf die Problemlösung auswirken. Damals musste immer erst ein Bereich als Datenbereich definiert werden, bevor man sortieren und filtern konnte, und das immer in einen anderen Bereich hinein. Jetzt genügt es, die aktive Zelle in einen Bereich zu setzen, der dann automatisch als Datenbereich angesehen wird, im Menü Daten kann man sortieren und filtern, ohne dass dafür die Daten in einen anderen Bereich kopiert werden. Klappt das bei dir?
Nebenbei: Ändere doch mal den Tabellennamen. "Tabelle1 (2)" sieht nicht gut aus.
Es muss heißen: B3 soll in die Spalte A ab A16B3 soll in die Zeile A ab A16
Zum Problem komme ich erst, wenn ich von dir näheres über die Basic-Version und die Möglichkeiten in der Datentabelle gelesen habe.
Nur eine Idee:
Die Prüfung, ob der Datensatz schon vorhanden ist, würde ich schon vor dem Makro durchführen.
Kann man die Daten in B3,B5,D3,D5 zum Filtern der Datentabelle nutzen oder ist filtern ungünstig?
Oder man lässt durch bedingte Formatierung (Gibt es die in Excel 97) das Vorhandensein des Datensatzes anzeigen.
Schreib mal, was dir mehr zusagt und möglich ist.Die besten Kapitäne stehen am Ufer.
-
21.03.2007, 07:26 #4
Byte
- Registriert seit
- 03.2007
- Beiträge
- 8
Hallo Bruno und Hallo Hascheff
Danke erst einmal für die Ratschläge und ja es muss heißen in Spalte A ab A16
Ja Excel97 verfügt bereits über einen VBA-Editor. Die Frage zum selektieren des Bereichs um ihn zu filtern oder zu sortieren kann ich dir leider nicht beantworten, da ich in Makros eigentlich so 0 Druchblick habe
Ich danke Bruno für die Hilfe, ich habe es ausprobiert doch leider funktioniert es bei mir nicht, obwohl ich anstatt "A2" Bei mir "A16" eingetragen habe, ich denke aber, dass dies das Problem eines vorhergehenden Makros (,dass ich versucht habe) ist. Es hat nämlich die Eingabe in die Zeile 9543 kopiert anstatt sie unter die Liste zu setzen. Auch hast du mich richtig verstanden oben ist ein "Eingabeformular" und darunter ist die Liste zu finden.
Mit freundlichen Grüßen aus dem wieder verschneiten Bayern,
Manuel
Edit: Falls es euch hilft ich habe mal einen Screenshot von meiner Tabelle gemacht. Ich hoffe das kann euch weiterhelfen
http://img139.imageshack.us/my.php?image=tabelleyl6.jpgGeändert von denji3004 (21.03.2007 um 07:41 Uhr)
-
21.03.2007, 08:45 #5
Hallo,
dein Schnappschuss ist hilfreich, mir fallen gleich eine Handvoll Ideen ein. Leider hab ich jetzt nicht so viel Zeit, alle auszuführen.
hat nichts mit Makros zu tun. Es geht um das Menü Daten. Schau dich schon mal selbst im Menü um (Der Menüpunkt "Maske..." ist sicher auch hilfreich). Bestenfalls musst du vorher nur eine der Zellen zwischen A16 und D17 anklicken, schlimmstenfalls musst du den Bereich markieren und als Datenbereich definieren (In diesem Fall evtl. die Hilfe konsultieren).Die Frage zum selektieren des Bereichs um ihn zu filtern oder zu sortieren
Meine Frage zur bedingten Formatierung hast du nicht beantwortet. Gibt es im Menü Format einen Eintrag "Bedingte Formatierung..."?Dann hast du über 9000 Leerzeilen in deiner Tabelle. Das behindert z.B. auch weil der vertikale Rollbalken anders reagiert. Du musst die Leerzeilen löschen. Nach dem Löschen sieht man beim Dateispeichern, wie der Rollbalken sich normalisiert.Es hat nämlich die Eingabe in die Zeile 9543 kopiert anstatt sie unter die Liste zu setzen.
Wie löscht man 9000 Zeilen?
Fensterfixierung aufheben, die erste Leerzeile muss im oberen Fensterteil sichtbar sein, im unteren Teil Zeile 9543. dann markierst du eine der beiden Zeilen und mit gedrückter Shift-Taste die andere. Bearbeiten - Zellen löschen, den unteren Fensterteil schließen, speichern, Fensterteilung wiederherstellen.
Die besten Kapitäne stehen am Ufer.
-
22.03.2007, 13:27 #6
Byte
- Registriert seit
- 03.2007
- Beiträge
- 8
Hallo Hascheff,
Ich habe nun deine Vorschläge versucht und nein es gibt bei mir keinen Menüpunkt "Bedingte Formatierung...". Als ich die Zellen gelöscht, gespeichert und es wieder geladen habe, hat sich das Verhalten des Makros nicht verändert. Ich habe mich nun etwas mit meinem Makro beschäftigt und ich müsste meiner Ansicht nach nur die Zeile
Zeile = Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row + 1
so umändern, dass es nicht nach der letzten aktiven Zelle sucht sondern nach der nächsten leeren Zeile nach Zeile 16. Könntet ihr mir dabei helfen?
Und mir fehlt auch noch, dass das Makro überpüft, ob der Eintrag bereits vorhanden ist...
Hier einmal das ganze Makro was ich habe:
Sub Daten_eintragen()
Dim Zeile
'nur wenn in B3 und D3 etwas drinsteht dann eintragen
If [b3] <> "" And [d3] <> "" And [d5] <> "" And [b5] <> "" Then
'Blattschutz aufheben
ActiveSheet.Unprotect
'letzte benutzte Zeile ermitteln + 1
Zeile = Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row + 1
'Daten eintragen
Cells(Zeile, 1) = [b3]
Cells(Zeile, 2) = [d3]
Cells(Zeile, 3) = [b5]
Cells(Zeile, 4) = [d5]
'Eingaben löschen
[b3:b5] = ""
[d3:d5] = ""
'letzte Zeile in sichtbaren Bereich holen
Cells(Zeile, 1).Select
MsgBox "Eingabe erfolgreich"
Else
MsgBox "Bitte vollständig ausfüllen"
End If
'Blattschutz aktivieren
ActiveSheet.Protect
End Sub
MfG,
Manuel
-
22.03.2007, 19:58 #7
Hi Manuel,
ich habe deinen Code jetzt von jemandem mit Excel97 testeten lassen und er läuft fehlerlos. Ich würde dir deshalb den Rat geben, die Tabelle zu löschen und neu zu erstellen.
Übrigens: die Codezeile
ermittelt nicht letzte belegte sondern die erste freie Zelle in Spalte A.Code:Zeile = Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row + 1
"Bedingte Formatierung" gibt es bereits in Excel97 unter Format -> Bedingte Formatierung
Zu deiner Frage bezüglich des Vorhandenseins von Einträgen: welche Einträge sollen geprüft werden? Alle oder nur bestimmte? Man könnte das entweder mit Find machen (wenn es diese Funktion in Excel97 gibt) oder mit einer Schleife über alle gefüllten Zeilen.Bis später,
Karin
-
26.03.2007, 07:25 #8
Byte
- Registriert seit
- 03.2007
- Beiträge
- 8
Hallo Karin,
Ich werde das mit der Bedingten Formatierung nun versuchen und zur Frage mit den doppelten Einträgen: Es sollten vollständige doppelte Eingaben vermieden werden.
z.B.:
Manuel Mirwald 1234 12.03.07
Manuel Mirwald 1235 12.03.07
Soll gestattet werden, doch
Manuel Mirwald 1236 12.03.07
Manuel Mirwald 1236 12.03.07
Ist ein vollständig doppelter Eintrag und sollte somite geblockt werden. Ich danke schonmal im Voraus für die Hilfe.
Mit freundlichen Grüßen,
Manuel
Edit: Ich habe es nun geschafft, dass mein Makro wieder alles da hin setzt wo es hin soll,doch ich möchte dass es das Makro in die nächste leere Zeile einfügt und nicht in die erste freie Zeile. Jetzt fehlt nur noch, dass es überprüft ob eben jener vollständige Wert schon vorhanden ist. Dann wäre es geschafft
Geändert von denji3004 (26.03.2007 um 07:47 Uhr)
-
26.03.2007, 10:21 #9
Hallo Manuel,
die Sache mit der Schlüsselnummer ist noch nicht ganz klar. Falls es sich um eine Schlüsselnummer im datenbanktechnischen Sinn handelt, darf jede Nummer in der ganzen Tabelle nur einmal vorkommen. Dann würde es genügen, wenn man die Zelle B5 mit einer bedingten Formatierung ausstattet, dass die Zelle einen roten Hintergrund bekommt, wenn die eingetragene Nummer in der Spalte C schon vorhanden ist. Dann könnte man aber auch per Makro mit einem Mausklick erreichen, dass in B5 das Maximum der Spalte C + 1 eingetragen wird.
Falls es sich nicht um eine Schlüsselnummer im datenbanktechnischen Sinn handelt, würde ich in Zelle E16 eine Formel eintragen, die eine 1 zeigt, wenn die Zeilenwerte identisch mit den Eingabewerten sind, sonst 0. Die Formel dann nach unten in die ganze Spalte eintragen und dann die Eingabefelder mit einer bedingten Formatierung rot leuchten lassen, wenn irgendwo in Spalte E eine 1 steht. Je nach Geschmack kann man Spalte E ausblenden oder die Zellen mit 1 rot leuchten lassen.
Für diese Variante findet aber Beverly sicher eine elegantere Lösung.
Schreib du erst mal, welche Variante zutrifft.Die besten Kapitäne stehen am Ufer.
Ähnliche Themen
-
nur zur Information und zur Erheiterung ;-)
Von BMBerlin im Forum SmalltalkAntworten: 1Letzter Beitrag: 19.06.2006, 13:15 -
Frage zur IDE-Schnittstelle und zur Festplatte
Von tk69 im Forum Hardware allgemeinAntworten: 8Letzter Beitrag: 23.07.2004, 12:08 -
Word 97 Makro zur Druckersteuerung
Von bernhardStock im Forum Office-ProgrammeAntworten: 3Letzter Beitrag: 11.10.2002, 21:01 -
EXCEL97 Makro-Meldung ohne Makro
Von gfrahn im Forum Office-ProgrammeAntworten: 0Letzter Beitrag: 18.07.2001, 17:19 -
Makro zur Schriftendarstellung in Office
Von H.Janzen im Forum Office-ProgrammeAntworten: 0Letzter Beitrag: 11.02.2001, 21:26
12

Zitieren
Lesezeichen