Anzeige
Archiv - Navigation
708to712
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
708to712
708to712
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Codeerklärung

Codeerklärung
20.12.2005 09:04:18
Leitz
Guten Morgen!
Kenne mich überhaupt nicht aus und hätte gerne gewusst was dieser Code macht
Sub tOriginal()
Dim lzeileS As Long, lZeileE As Long
Dim rng As Range, ranrngSuch As Range, rngErg As Range
Dim myarr
Dim intZ As Integer
With Sheets("Datenbank")
lzeileS = .Cells(.Rows.Count, 1).End(xlUp)
Set rngSuch = Range("A2:A" & lzeileS)
End With
Für was steht der Einser in .Cells(.Row.Count, 1).End(xlUp) ?
Set rngSuch as Range = wie gross kann der Wert sein denn es lesen kann?
Es funktionierte bei dreistelligen Zahlen nun hab ich zwölfstellige und es funktioniert nicht mehr.
Bitte wer kann mir weiterhelfen?
Danke im Voraus
Leitz

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Codeerklärung
20.12.2005 09:37:35
Peter
Servus,
der Befehl .cells(.rows.count,1)... sucht die letzte beschriebene Zeile in Spalte A (1) B währe 2, C 3, usw.
Bei set rngSuch wird ein Bereich festgelegt, der zu durchsuchen ist, das hat mit den Werten erstmal noch gar nichts zu tun.
Was hast du eigentlich vor ?
der Rest des Codes ist hier gepostet.: https://www.herber.de/forum/messages/710146.html
MfG Peter
AW: Codeerklärung
20.12.2005 10:15:33
Leitz
Hallo Peter!
Danke für deine Hilfe!
Ich habe einen Code der funktionierte bis ich die Nummerngrösse änderte und andere Spalten verwendete.
Ich hänge eine Testdatei an.
Macro1 = Versuch funktioniert nich
Macro3 = Abgeändert von Macro 4 funktioniert nicht
Macro4 = Original so hab ichs bekommen.
Ich möchte eigentlich nur dass die Abrechnung die Werte der Spalte A in der Datenbank sucht und wenn sie es gefunden hat die Stückzahl Spalte P zum zur Verwendung Spalte R der Datenbank dazurechnet. Hoffe du verstehst meine Ausführungen.
https://www.herber.de/bbs/user/29439.xls
Gruss
Leitz G.
Anzeige
AW: Codeerklärung
20.12.2005 10:32:59
Peter
Servus,
ich muss das jetzt aber nicht verstehen, warum du eine Ident.Nr. vergibst und dan nach einer Hilfsnummer suchst.
Zur kurzen Erklärung, für später Änderungen (Range ist eine Suchbereich in diesem Falle von A2 bis A letzte gefundene Zeile). Offset bedeutet (aus der OH Hilfe):
Ausdruck Erforderlich. Ein Ausdruck, der ein Range-Objekt zurückgibt.
RowOffset Optionaler Variant-Wert. Die Anzahl der Zeilen (positiv, negativ oder 0 (Null)), um die der Bereich versetzt werden soll. Bei positiven Werten erfolgt ein Versatz nach unten, bei negativen Werten ein Versatz nach oben. Der Standardwert ist 0.
ColumnOffset Optionaler Variant-Wert. Die Anzahl der Spalten (positiv, negativ oder 0 (Null)), um die der Bereich versetzt werden soll. Bei positiven Werten erfolgt ein Versatz nach rechts, bei negativen Werten ein Versatz nach links. Der Standardwert ist 0.

D.H. ich suche in Spalte A(1) nach übereinstimmung, sollte diese gefunden werden, muss ich in Spalte R(18) was eintragen also Offset(Zeile bleibt gleich =0, Spalte 18-1 = 17).
Hoffe es ist nun klarer
Sub tOriginal()
Dim lzeileS As Long, lZeileE As Long
Dim rng As Range, ranrngSuch As Range, rngErg As Range
Dim myarr
Dim intZ As Integer
With Sheets("Datenbank")
lzeileS = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngSuch = Range("A2:A" & lzeileS)
End With
With Sheets("Abrechnung")
lZeileE = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngErg = Range("A2:A" & lZeileE)
ReDim myarr(1, lZeileE)
For Each rng In .Range(rngErg.Address)
myarr(0, intZ) = rng
myarr(1, intZ) = rng.Offset(0, 15)
intZ = intZ + 1
Next
End With
With Sheets("Datenbank")
For Each rng In .Range(rngSuch.Address)
For intZ = 0 To intZ - 1
If rng = myarr(0, intZ) Then _
rng.Offset(0, 17) = myarr(1, intZ)
'Wenn du willst das die vorhandenen Werte addiert werden sollen, dann änder die obere 'Zeile in:
'                   rng.offset(0,17) = rng.offset(0,17) + myarr(2,intz)
Next
Next
End With
End Sub

MfG Peter
Anzeige
AW: Codeerklärung
20.12.2005 16:09:16
Leitz
Hallo Peter!
Danke für deine Erklärungen!
Hoffe das ich das irgend einmal verstehe!
Die Hilfsnummer ist aus Exeldateien die schon lange bestehen und funktionieren. Div. Tabellen greifen über Verknüpfunegen auf Daten über diese Nummer zu.
Ich versuche nur gerade mir durch versch. Macros das Leben mit diesen Tabellen etwas leichter zu machen. Und da beginnen die Probleme.
Mein Macro steigt schon bei den erste Zeilen aus
With Sheets("Datenbank")
lzeileS = .Cells(.Rows.Count, 1).End(xlUp)
Set rngSuch = Range("A3:A" & lzeileS)
Das macht es seit ich von einer dreistelligen Zahl auf eine zwölfstellige Zahl gegangen bin. Habe mir dann gedacht es lietg daran dass in der Datenbank Formeln drinnen sind. Habe sie umgeändert auf Werte aber es geht auch nicht.
Gruss
Gerhard
Anzeige
AW: Codeerklärung
20.12.2005 16:45:04
Leitz
Hallo Peter!
Noch ein Nachtrag.
Wenn ich die Zahlen ändere auf dreistellig dann funktioniert das Macro perfekt.
Sobald ich meine Nummern reinschreibe (z. B. 556000217028) dann gehts nicht mehr.

Sub tOriginal()
Dim lzeileS As Long, lZeileE As Long
Dim rng As Range, ranrngSuch As Range, rngErg As Range
Dim myarr
Dim intZ As Integer
With Sheets("Datenbank")
lzeileS = .Cells(.Rows.Count, 1).End(xlUp)
Set rngSuch = Range("A3:A" & lzeileS)
End With
With Sheets("Abrechnung")
lZeileE = .Cells(.Rows.Count, 1).End(xlUp)
Set rngErg = Range("A4:A" & lZeileE)
ReDim myarr(1, lZeileE)
For Each rng In .Range(rngErg.Address)
myarr(0, intZ) = rng
myarr(1, intZ) = rng.Offset(0, 15)
intZ = intZ + 1
Next
End With
With Sheets("Datenbank")
For Each rng In .Range(rngSuch.Address)
For intZ = 0 To intZ - 1
If rng = myarr(0, intZ) Then _
rng.Offset(0, 17) = rng.Offset(0, 17) - myarr(1, intZ)
Next
Next
End With
End Sub

Steigt schon ganz oben aus
With Sheets("Datenbank")
lzeileS = .Cells(.Rows.Count, 1).End(xlUp)
Hängts doch mit der Grösse der Zahl zusammen ?
Was kann ich machen kann die Zahlen nicht ändern die sind auf allen Werkstücken und in meine ganzen System.
Die Zahl setzt sich allerdings aus zwei zusammen
1. Ident Nr. 556000217 = Spalte G der Datenbank und
2. Stück Nr. 028 = Spalte H der Datenbank ergibt zusammen eine eindeutige Identifizierung.
Gruss
Gerhard
Anzeige
AW: Codeerklärung
20.12.2005 23:57:56
Peter
Servus,
wenn ich dir deinen Code umschreibe (naja eigentlich eh meinen) und du änderst dann blind was, tja sry :(
Letzter Tip, ich hab gepostet
 lzeileS = .Cells(.Rows.Count, 1).End(xlUp).Row
'du
lzeileS = .Cells(.Rows.Count, 1).End(xlUp)

Fällt dir was auf ? Wenn du das schon änderst (keine Ahnung für was das gut sein soll, dann würde ich auch als double deklarieren)
MfG
Peter
AW: Codeerklärung
21.12.2005 15:33:21
Leitz
Hallo Peter!
Es läuft!!
Tut mir leid ich hatte gedacht Zahl ist Zahl und wäre nicht auf die Idee gekommen das ich das nicht ändern darf. Das mit dem Row weiß ich nicht wie das geht denn ich habe da nie was geändert. Seis wie es sei jetzt gehts!
Möchte mich nochmals herzlich bedanken!
Wünsche Dir schöne Feiertage
Leitz G.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige