Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1008to1012
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

Ein kleines Problem

Ein kleines Problem
20.09.2008 15:14:00
Ernst
Hallo liebe Exel Freunde!
Ich bitte um eure Hilfe.
Habe mir ein kleines Macro gebasstelt zur Nummerirung nur habe ich ein kleines Problem wenn ich nach einem Wert suche denn es nicht gibt. Der Fehler ".............Objektvariabel nicht festgelegt"
Nun will ich sagen das er zum nächsten spriengen soll wenn er nichts findet.
Am besten ihr schaut es euch mal an, vielleicht habt ihr ja eine ganz andere bessere Lösung.
https://www.herber.de/bbs/user/55542.xls

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ein kleines Problem
20.09.2008 15:36:00
Daniel
Hi
und wo ist das Makro dazu?
im Prinzip kann man das so lösen:
1. das FIND-Ergebnis immer einer Range-Variable zuweisen, dann kommt erstmal kein Fehler, wenn nichts gefunden wurde.
2. mit der Abfrage IF ... Is Nothing Then
kann man dann prüfen, wob ein Wert gefunden wurde oder nicht
Beispiel:

Dim Zelle as Range
Set Zelle = activesheet.Cells.Find(what:="B3", lookat:=xlpart)
if Zelle Is Nothing then
Msgbox "B3 wurde nicht gefunden
else
Msgbox "B3 wurde gefunden in Zelle: " & Zelle.address
end if


Gruß, Daniel

Anzeige
AW: Ein kleines Problem
20.09.2008 16:02:00
Gerd
Hallo Daniel,
3.) Die Argumente: what, lookat u. lookin sollten stetst angegeben werden, damit diese nicht im Dialog "Suchen" falsch "verstellt" werden.
Gruß Gerd
AW: Ein kleines Problem
20.09.2008 17:39:22
Daniel
Hi
also bei deinem Kenntniststand wird ne Makro-Lösung da schwierig, da fehlen dann doch ein paar grundlagen.
daher hier ne Formellösung für dein Problem:
1. Trage diese Formel in die Zelle A4 ein und kopiere sie bis zum Ende deiner Tabelle nach unten.

=WENN(UND(LINKS(E4;1)="B";NICHT(ISTFEHLER(FINDEN("-";E4))));LINKS(E4;FINDEN("-";E4)-2)&".0"; WENN(B4="";A3;LINKS(A3;FINDEN(".";A3))&RECHTS(A3;1)+1)) 


2. Markiere Spalte A, klicke KOPIEREN und INHALTE EINFÜGEN - WERTE
3. zum löschen der überflüssigen Zeilen markierst du Spalte B (ganze Spalte) und setzt den Autofilter.
dann filterst du in Spalte B nach leeren Zellen und löschst in Spalte A die sichtbaren Zellen.
als Makro würde diese dann so aussehen:


Sub test()
With Range(Cells(2, 1), Cells(Rows.Count, 2).End(xlUp).Offset(0, -1))
.NumberFormat = "General"
.FormulaR1C1 = "=IF(AND(LEFT(RC[4],1)=""B"",NOT(ISERROR(FIND(""-"",RC[4])))),LEFT(RC[4], _
FIND(""-"",RC[4])-2)&"".0"",IF(RC[1]="""",R[-1]C,LEFT(R[-1]C,FIND(""."",R[-1]C))&RIGHT(R[-1]C,1)+1))"
.Formula = .Value
.Offset(0, 1).SpecialCells(xlCellTypeBlanks).Offset(0, -1).ClearContents
End With
End Sub


wobei hier das Löschen der überflüssigen Werte etwas anders gelöst ist (im Prinzip über BEARBEITEN - GEHE ZU - INHALTE - LEERZELLEN, aber das mit dem Offest funktioniert nur in VBA)
allerdings solltest du maximal 9 unterpunkte haben, sollte es mehr werden, wird die Formel komplizierter, da der Unterpunkt dann mehrstellig sein kann, das ist momentan noch nicht berücksichtigt.
Gruß, Daniel

Anzeige
AW: Ein kleines Problem
20.09.2008 17:56:00
Ernst
Ne mit Formel wird das nicht funktioniert das nicht. Datei ist nur ein kleiner auszug das geht bis B200.
Nur wird die Datei ständig verändert und es fallen manche Kästen ( Jeder Schaltkasten hat eine B Nummer) raus und die bestehenden werden verändert so das die nummerieung neu zu machen ist.
Mein Macro ist zwar sehr umständlich aber es würde funktionieren ,wenn nicht nach einem Wert suchen müsste den es nicht gibt.
Wenn du die ganzen sachen mit B3 beim Macro löscht würde es funktionieren.
Wenn das Problem mit dem nichtzufindenden Wert geöst ist wird es ausgebaut bis zu B200 und bis zu 150 Kabelnummern pro Kasten.
Hoffe es ist jetzt ein bischen verständlicher was ich haben will.
Anzeige
AW: Ein kleines Problem
20.09.2008 18:27:00
Daniel
Hi
woher willst du wissen, daß das mit Formeln nicht funktioniert?
nur die Grösse ist kein Argument, grade bei grossen Datenmengen sind Formeln meist besser als VBA-Lösungen. (die müssen dann schon sehr gut programmiert sein)
allerdings ist dein makroansatz so daneben, da fange ich erst gar nicht an, das zu korrigieren.
hier nochmal ne überarbeitete Lösung, ist im Prinzip ne Formellösung, halt nur mit Makros umgesetzt.
das sollte jetzt auch bei grösseren Datenmengen funktionnieren, egal wieviele Unterpunkte und Hauptpunkte es gibt.

Sub Nummer()
With Range("C:C").SpecialCells(xlCellTypeConstants, 2).Offset(0, -2)
.Select
.NumberFormat = "General"
.FormulaR1C1 = "=RC[2]&"".""&COUNTIF(R1C[2]:RC[2],RC[2])"
.EntireColumn.Formula = .EntireColumn.Value
End With
End Sub


Gruß, Daniel

Anzeige
AW: Ein kleines Problem
20.09.2008 19:00:00
Ernst
O ja funktioniert primma!
Danke Danke Danke, Tja das das mit so einer kurzen Formel oder Macro geht hätte ich nicht gedacht.
Tja habe leider fast keine VBA Kenntnise aber ich probier es lieber immer mal selber nur da kommt meist so etwas umstänliches raus. Habe mir schon mehr Macros zusammengestohlen nur alle eben sehr sehr umständlich geschrieben. Aber ich bleib dabei es hätte auch das funktioniert :-)
Danke nochmals für die mühe und schönes Wochenende!
AW: Ein kleines Problem
20.09.2008 19:16:00
Daniel
Hi
naja so wie du das geschrieben hast, hat man ja die Werte schneller von Hand eingetragen als das Makro erstellt.
aber wie man die Suche programmieren muss für den Fall, daß suchwerte nicht vorkommen, habe ich dir ja schon gezeigt, daß kannst du dir ja spasseshalber mal in dein Makro einbauen.
Gruß, Daniel
Anzeige
AW: PS das ".Select"
20.09.2008 19:01:22
Daniel
kannst du aus dem Code entfernen, das hatte ich nur zu kontrollzwecken drin.
Gruß, Daniel
AW: PS das ".Select"
20.09.2008 19:15:42
Ernst
Habe auch .EntireColumn.Formula = .EntireColumn.Value entfernt ansonsten läuft das im Kreis oder?
Keine Ahnung wie das Macro funktioniert verstehe da nur Bahnhof
AW: PS das ".Select"
20.09.2008 19:20:00
Daniel
Hi
naja, je nach dem.
erst schreibe ich ja die Bezeichnung per Formel in die Spalte A.
Wenn du damit leben kannst, daß die Bezeichungen als Formel drinstehen, kannst du diese Zeile weglassen, da sie die Formeln durch die Fix-Werte ersetzt (entspricht in Excel - Kopieren + Inhalte Einfügen - Werte)
da die verwendete Zählenwenn-Formel nicht unbedingt die schnellste ist, ist es durchaus empfehlenswert, die Zeile drin zu lassen.
Gruß, Daniel
Anzeige
AW: PS das ".Select"
20.09.2008 19:44:36
Ernst
Kein problem
Das mit dem werte übernehmen ist mir klar werde es aufzeichnen spalte A makieren kopieren inhalte einfügen werte. und dann hinten einfügen beim Macro.
Denn wenn ich dein Macro laufen lasse ist wieder alles leer in Spalte A.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige