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

Variable löschen

Variable löschen
24.04.2022 16:41:07
Thomas
Guten Abend,
Wie kann man eine Variable, z.B. Dim Zeile As String, nach einem Durchgang in der For Schleife löschen, damit das neu laden im zweiten Durchgang der For Schleife erzwungen wird.
Besten Dank für ein passenden Tip
Gruss
Thomas

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable löschen
24.04.2022 16:46:59
onur
"damit das neu laden im zweiten Durchgang der For Schleife" ? WAS meinst du damit?
AW: Variable löschen
24.04.2022 16:54:52
GerdL
Hallo Thomas!
Zeile = ""
wenn es eine String-Variable ist.
Wahrscheinlich wäre es effizienter, wenn du dein Makro zeigst.
Gruß Gerd
AW: Variable löschen
24.04.2022 17:08:57
Thomas
Hallo zusammen,
hmmmm, ich merke gerade es wird nicht an der variable liegen. weil ich teste und sehe ja dass die Variable immer den neuen Text einliest.
Habe weiter unten mit der Überschrift lesen und einfügen die Frage und eine Beispielsdatei zu nachsehen.
Vielleicht kann das helfen.
Mein Problem ist das, dass die IF Verzweigung die Bedingung nicht abarbeitete. Das macht es nur mit dem erst geladenen Text in der Variable, aber obschon ich sehe dass die Variable immer wieder einen anderen Text liefert will die IF es nicht verarbeiten. Weiss zum Kuckuck wieso.
Gruss
Thomas
Anzeige
AW: Variable löschen
24.04.2022 18:46:25
Thomas
Hallo onur,
hier ist das Makro, verstehe es echt nicht. Kann die Variable in der If sogar weg lassen und direkt zum Beispiel ein "b" reinschreiben als Bedingung. Nur nicht einmal direkt wird dieses b von der If gelesen, es geht gleich über in die Else. Verstehe ich jetzt echt nicht!

Sub Personal()
Dim KW As String, KT As String, Name As String, Ort As String
Dim i                        'Zähler alle Daten einlesen
Dim KWZeile                  'Zähler für Zeile der KW suchen
Dim letztezeile As String    'Letzte folle Zeile suchen
For i = 6 To 30                    'Zähler alle Daten einlesen
With Worksheets("Kalender")
If .Cells(i, 2) = "" Then End        ' Wenn Zeilen leer dann abbrechen
KW = .Cells(i, 2) 'KalenderWoche
KT = .Cells(i, 3) 'KalenderTag
Name = .Cells(i, 4) 'Name
Ort = .Cells(i, 5) 'Ort
End With
MsgBox KW
For KWZeile = 11 To 25             'Zähler für Zeile der KW suchen
With Worksheets("PersonalPlan")
If .Cells(KWZeile, 2) = KW Then   'KW suchen
MsgBox Name
If .Cells(KWZeile, 4).Value = Name Or .Cells(KWZeile, 4).Value = "" Then 'Name oder leere Zeile suchen
MsgBox Name
If .Cells(1, 6) = KT Then
.Cells(KWZeile, 4) = Name
.Cells(KWZeile, 6) = Ort
Exit For
MsgBox KW & "     2"
ElseIf .Cells(1, 7) = KT Then
.Cells(KWZeile, 4) = Name
.Cells(KWZeile, 7) = Ort
Exit For
MsgBox KW & "     2"
End If
Else
letztezeile = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row + 1 'Letzte folle Zeile suchen
MsgBox letztezeile
If .Cells(1, 6) = KT Then
.Cells(letztezeile, 4) = Name
.Cells(letztezeile, 6) = Ort
Exit For
MsgBox KW & "     2"
ElseIf .Cells(1, 7) = KT Then
.Cells(letztezeile, 4) = Name
.Cells(letztezeile, 7) = Ort
Exit For
MsgBox KW & "     2"
End If
End If       'End If von cells kw
End If      'End If von  "" Or Name
End With
Next KWZeile
Next i
End Sub

Anzeige
AW: Variable löschen
24.04.2022 18:57:12
onur
Erzähl mir doch einfach, was das Makro genau machen soll, und zwar Schritt für Schritt.
Aber ohne Bezug zum Makro, sondern nur anhand der Tabelle. Auf Deutsch: Was genau willst du erreichen?
AW: Variable löschen
24.04.2022 21:31:46
Matthias
Hallo Thomas,
Du solltest dringend an Deiner Darstellung arbeiten.
So wie Du den Code hier postest ist das die reinste Katastrophe.
Falsche "Einrückungen" und viel zu viele leere Zeilen im Code.
Mich persönlich hat das abgeschreckt den Code überhaupt richtig zu analysieren.
Hier mal (m)ein Vorschlag wie Du es für Andere besser darstellen kannst, damit potentielle Helfer Deinen Beitrag besser lesen können.

Option Explicit
Sub Personal()
Dim KW As String, KT As String, Name As String, Ort As String
Dim i '...............................Zähler alle Daten einlesen
Dim KWZeile '.........................Zähler für Zeile der KW suchen
Dim letztezeile As String '...........Letzte volle Zeile suchen
For i = 6 To 30 '.....................Zähler alle Daten einlesen
With Worksheets("Kalender")
If .Cells(i, 2) = "" Then End '.Wenn Zeilen leer dann abbrechen
KW = .Cells(i, 2) '...............KalenderWoche
KT = .Cells(i, 3) '...............KalenderTag
Name = .Cells(i, 4) '...............Name
Ort = .Cells(i, 5) '...............Ort
End With
MsgBox KW
'weiterer Code
ob Deine Variablen richtig deklariert sind sollest Du überprüfen.
letztezeile As String ist für mich fraglich. Sollte wohl eher Long sein.
Du suchst ja eine Zeilen-Nummer und keinen Text, oder?
Aber ich bin da ganz bei onur,
erkläre ihm einfach mal was Du möchtest
Gruß Matthias
Anzeige
AW: Variable löschen
24.04.2022 22:58:19
Thomas
Hallo Matthias, besten dank dir und auch onur für die Aufmerksamkeit.
Betreffend der Darstellung bitte ich um Entschuldigung, denn das ist eigentlich noch gar keine Darstellung. Dieses Skript ist in Entwicklung und habe es schon einige male auseinandergerissen, daher das Wirrwarr. Wenn ein Skript dann läuft strukturiere ich es dann immer übersichtlich. Und sowieso müssen dann auch all diese MsgBoxen wieder weg. Aber etwas von deiner Bemerkung kann ich abgewinnen. Diese Pünktchen die Du gesetzt hast, die finde ich Tip Top, das werde ich mir auch angewöhnen.
Nun :-) noch eine Bemerkung die nicht persönlich genommen werden soll: Ich habe schon oft etwas nachgefragt, habe viel Zeit jeweils in das einigermaßen aus deutschen des Problems und Ablaufes investiert. Und darauf hieß es oftmals das ich besser eine Datei hinzufügen soll weil das viel verständlicher wäre. Nun ja, legt man dann einmal weniger Fleiß auf den Text und hängt stattdessen dann eine Datei an und nachfolgend auch noch das separate Skript, kommt dann wieder die Bemerkung dass man genau den Ablauf dokumentieren soll was es tun muss.
Also das soll einer noch verstehen :-)
Ich habe den Fehler gefunden, ist ein kapitaler Überlegungsfehler drin, denn es kann ja so gar nicht funktionieren. Die Lösung habe ich zwar noch nicht, da mir aber der Fehler aufgefallen ist, werde ich den Rest auch noch hinkriegen, da bin ich sehr optimistisch. Sicher liegt es hierbei nicht an der Deklaration der Variable weil es in diesem Zusammenhang nichts miteinander zu tun hat, aber stimmt schon, Es geht um Zahlen, daher könnte man nebst dem Long, vielleicht besser noch den Integer nehmen?
Ich danke für Eure Aufmerksamkeit und vielleicht ein andermal mit viel Dokumentation und dazugehörender Datei.
Beste Grüsse
Thomas
Anzeige
AW: Variable löschen
25.04.2022 09:11:28
Pierre
Hallo Thomas,
nur zu deiner letzten Frage bzgl. Integer - Long:

Integer 	-32.768 ... +32.767
Long 	-2.147.483.648 ... +2.147.483.647 
Was ist besser?
Ich habe auch am Anfang immer Integer genutzt, weil es in vielen vorhandenen Beispielen genommen wurde, aber Long ist halt deutlich breiter aufgestellt, wie du oben sehen kannst.
Bei 1 Millionen Zeilen kommst du mit Integer nicht weit. Okay, sehr oft reichen 32.000 Zeilen locker aus, aber es gibt (hier) immer wieder Beispiele, die das Gegenteil beweisen.
Gruß Pierre
AW: Variable löschen
25.04.2022 12:26:04
Thomas
Hallo Pierre,
ja stimmt schon. Bei mir als möchte gerne VBA Programmierer ist es halt so, das meine Tabellen nie über 1000 Zeilen aus gehen. Und sollte es auch mal das doppelte werden so reicht Integer immer noch.
Das sind natürlich Grundsatzentscheide die wenn möglich immer schon eingeplant werden sollen bevor man anfangt zu programmieren. Da wie ich sage, nie über 1000 Zeile komme, spreche ich für mich eben von Integer.
Und mein Gefühl sagt mir, dass Programmierer die hier Hilfe suchen, nicht die Programmierer sind die mit Millionen von Zeilen jonglieren. Das sind dann Kaliber die keine Hilfe mehr benötigen und sich hier nicht herum taumeln.
Gruss
Thomas
Anzeige
AW: Variable löschen
25.04.2022 15:44:19
Pierre
Hallo Thomas,
du würdest dich wundern über manche Zeilenmengen, die hier manche Frager so anbringen ;-)
Solange man unter den ca. 32.000 Zeilen bleibt (und das auch definitiv), reicht ja Integer auch völlig.
Aber gegen Long spricht doch eigentlich nichts, oder? Es ist sogar kürzer (für Schreibfaule genau das richtige) :-)
Manchmal, wenn ich hier versuche zu helfen, schreibe ich aus alter Gewohnheit auch immer noch Integer, also ist meine Umgewöhnung auch noch nicht 100% abgeschlossen.
Trotzdem würde ich persönlich Long verwenden, ich glaube das Integer kommt noch aus grauer Urzeit, wo es Arbeitsspeicher-technisch noch eine Rolle spielte (ich meine, da mal was aufgeschnappt zu haben)...
Nun gut, jeder wie er mag, ist ja kein Weltuntergang, wenn du lieber Integer nutzt und das auch wirklich ausreicht ;-)
Aber wehe dir, du kommst nächste Woche an "Ich hab jetzt 33.000 Zeilen in Benutzung, was soll ich tun" (kleiner Spaß am Rande)
Gruß Pierre
Anzeige
AW: Variable löschen
25.04.2022 17:13:49
Thomas
Hallo Pierre,
ich bin kein IT Fachmann. Ob es doch eine Rolle spielen könnte oder zumindest Sinn machen könnte die Speicherkapazität richtig auszuwählen?
Stelle dir vor du hast ein Haus mit 7 Zimmer und davon brauchst du nur 2 Zimmer. Die anderen 5 Zimmer musst du musst du trotzdem pflegen sonst vergammeln si, also das braucht Ressource. genau so stelle ich mir es vor wenn man bei einem Objekt mehr Speicher zur Verfügung stellt als wirklich benötigt wird. Um diesen Speicherraum aufrecht zu erhalten muss Ressource eingesetzt werden. Das könnte ja bedeuten dass dadurch das System langsamer wird weil der Prozessor dadurch mehr arbeiten muss.
Nur so eine Vorstellung von mir. Kann aber auch absolut daneben sein damit.
Gruss
Thomas
Anzeige
AW: Variable löschen
25.04.2022 18:10:10
Daniel
HI
LONG und INTEGER werden von VBA gleich schnell verarbeitet.
der Computer hat mittlerweile mindestens 32 bit Bus-Breite und kann LONG (=32 bit) in einem Arbeitstakt verarbeiten. dh es wird nicht schneller, wenn man weniger Bits verwendet (INTEGER = 16 bit).
Erst wenn die Bit-Anzahl des Datentyps größer ist als die BUS-Breite des Rechners, dauert es länger, weil dann die Daten in 2 oder mehr Takten hin- und hergeschickt werden müssen.
Beim Speicherplatzbedarf macht sich das eine gesparte Byte bei Einzelvariablen auch nicht bemerkbar (da wird schon viel mehr Platz für den Variablennamen verballert)
Lediglich wenn man sehr große Arrays (mehrere Millionen Indizes) erstellt, macht sich der Unterschied bemerkbar.
Gruß Daniel
Anzeige
AW: Variable löschen
25.04.2022 18:15:21
Thomas
Hallo Daniel, danke für die Info.
Also dann kann man zukünftig in der Tat auf Integer verzichten so wie ich es jetzt aus deiner Erklärung schließe ?
AW: Variable löschen
26.04.2022 08:59:03
Daniel
Die Verwendung von Integer bringt dir nichts außer dem Problem, dass die Zahlen nicht größer als c.a. 32.000 sein dürfen.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige