Anzeige
Archiv - Navigation
1696to1700
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

Cells.value gibt in Schleife falschen Wert zurück

Cells.value gibt in Schleife falschen Wert zurück
18.06.2019 09:11:45
TobiasG
Hallo ihr Excel-VBA-Cracks.
Ich habe eine .csv mit den Daten der Gebäudestruktur eines KNX-Projektes exportiert.
Leider hat diese einen nicht gerade übersichtlichen Aufbau.
Die Daten aus der .csv liegen im Tabellenblatt "Gebaeudestruktur".
Um die Stuktur übersichtlich zu gestalten habe ich auf VBA zurückgegriffen, mit dem Ziel, vorerst nur die Gebäude, Etagen, Verteilerbereiche, Räume, Verteiler und Geräte in einer Art baumstruktur-ähnlichem Aussehen in ein neues Tabellenblatt zu kopieren. Dabei sollen die Dummys natürlich ausgelassen werden. Da diese Informationen alle in Spalte D stehen soweit kein Problem.
Ich habe um Quelltext zu sparen die Überprüfung, um welche "Ebene" der Baumstruktur es sich handelt, in eine Function ausgelagert und alles in einer For-Schleife laufen lassen.
Diese funktioniert einwandfrei von Zeile 17 (erster relevanter Eintrag) bis Zeile 33, ab diesem Zeitpunkt kommt nur noch Nonsens heraus. Mit Überwachung der Daten, die die Function nutzt, habe ich festgestellt, dass scheinbar Cells innerhalb der Function auf falsche Zellen verweist und deshalb der Inhalt der einzuordnenden Zellen falsch interpretiert wird.
Ich habe alles mir mögliche versucht, dem Übeltäter auf die Spur zu kommen, bin jetzt allerdings am Ende meiner Kreativität angekommen.
Die Originaldatei (mit zusätzlichem Tabellenblatt bei dem die zu kopierenden Daten zu besseren Übersicht farblich markiert sind) und die Datei nach Ausführen des Makros sind angehängt.
Der Quellcode liegt im Modul Gebaeudestruktur. Ich habe möglichst verständlich den Code kommentiert, sollten Fragen aufkommen helfe ich gern weiter.
Originaldatei:
https://www.herber.de/bbs/user/130448.xlsm
Datei nach ausgeführtem Makro:
https://www.herber.de/bbs/user/130449.xlsm
Sollten mögliche Verbesserungen bei meinem Programmierstil auffallen bitte ich um konstruktive Kritik. Nehme ich gerne an. Priorität hat allerdings das oben beschriebene Problem.
Kommentar zur verwendeten Excel-Version: ich nutze Excel 2016.

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Cells.value gibt in Schleife falschen Wert zurück
18.06.2019 11:10:07
Daniel
Hallo Tobias,
hui, das sieht ja wirklich ziemlich konfus aus.
Generell solltest du unbedingt mit Option Explicit vor dem Code arbeiten, damit Fehler bei den Variablennamen und nicht deklarierte Variablen sofort auffallen. Außerdem hilft es der Übersicht sehr, wenn du alle Variablen am Anfang des Codes deklarierst und nicht erst wenn du sie im Code brauchst. Auch solltest du auf Select verzichten und lieber mit klaren Arbeitsblattverweisen arbeiten. Warum du einen Button erstellen lässt, ist mir völlig schleierhaft.
So richtig ist mir nicht klar, wie du auf deinen Lösungsweg kommst. Soweit ich das bis jetzt nachvollziehen konnte, scheint zumindest in der Funktion "Typinhalt" etwas schief zu laufen. Was möchtest du mit diesen Zeilen erreichen:
 If TypRange.Cells(TypRange.Row + 1, TypRange.Column).Value = "Dummy" Then
TypRange ist bereits die Zelle, die du gerade untersuchst und wo dann zum Beispiel in Zelle D34 "2.2.11" drin steht. Was du jetzt machst, ist das du von der Zelle aus nochmal 36 Zeilen und 4 Spalten verschoben den Wert untersuchst. Das wäre in diesem Falle Zelle G70. Da steht "Dummy" drin, weswegen Zelle D34 dann nicht in deiner geordneten Tabelle erscheint. Wenn ich es richtig verstehe, solltest du also nur TypRange.Value = "Dummy" untersuchen.
Viel Freude beim Probieren weiterhin ;-)
Grüße
Daniel
Anzeige

264 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige