Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
536to540
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
536to540
536to540
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

For Schleife keine Integer Werte?

For Schleife keine Integer Werte?
26.12.2004 12:41:34
Thorsten
Hi Leute,
ich hab da ein Problem mit folgender For schleife:
For i = 8 To 500
For j = 8 To 500
s = readout(i, j, 4, "c")
s = readout(i, j, 5, "d")
s = readout(i, j, 6, "e")
s = readout(i, j, 7, "f")
s = readout(i, j, 8, "h")
s = readout(i, j, 9, "i")
s = readout(i, j, 10, "j")
s = readout(i, j, 11, "k")
s = readout(i, j, 12, "l")
s = readout(i, j, 13, "m")
s = readout(i, j, 14, "n")
next j
next i

Private Function readout(i As Integer, j1 As Integer, j2 As Integer, buch As String) As String
End Function

Er meckert bei dem i im Funktionaufruf, wegen Typunverträglichkeit!
"Argumenttyp ByRef unverträglich"
Was kann ich tun?
Außerdem Brauche ich eigentlich in der Function selbst keinen Rückgabewert! Jedoch wenn ich "As String" weglasse und ober beim Aufruf das "s=" dann meckert er ebenfalls! Wie kann ich eine Methode mit Parameterübergabe ohne Rückgabewert aufrufen?
Danke für eure Hilfe
Gruß
Thorsten

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For Schleife keine Integer Werte?
26.12.2004 12:49:04
Josef
Hallo Thorsten!
Entweder in der Aufrufenden Sub die Variablen sauber deklarieren,

Sub test()
Dim i As Integer, j As Integer, s As Variant
For i = 8 To 500
For j = 8 To 500
s = readout(i, j, 4, "c")
s = readout(i, j, 5, "d")
s = readout(i, j, 6, "e")
s = readout(i, j, 7, "f")
s = readout(i, j, 8, "h")
s = readout(i, j, 9, "i")
s = readout(i, j, 10, "j")
s = readout(i, j, 11, "k")
s = readout(i, j, 12, "l")
s = readout(i, j, 13, "m")
s = readout(i, j, 14, "n")
Next j
Next i
End Sub

oder in der Funktion die Parameterübergabe als Wert festlegen.

Private Function readout(ByVal i As Integer, ByVal j1 As Integer, ByVal j2 As Integer, buch As String)
End Function

Am Besten aber beides;-)
Gruß Sepp
Anzeige
AW: For Schleife keine Integer Werte?
Thorsten
Hey danke!
Mir hat dieses ByVal gefehlt! Nur mit der Integer Deklaration am Anfang macht der das bei mir nicht! Aber jetzt funktionierts!
Nur kann mir noch jemand sagen warum ich dieses
S = Variant definieren muss und dan nimmer einen Bezug angeben muss, wenn ich die Funktion aufrufe? Ich habe doch keinen rückgabewert?
Greetz
Thorsten
AW: For Schleife keine Integer Werte?
26.12.2004 13:59:59
Josef
Hallo Thorsten!
Wenn man sehen würde, was deine Funktion macht, wäre es leichter;-)
Gruß Sepp
AW: For Schleife keine Integer Werte?
Thorsten
Die kopiert aus einer anderen Datei die Zelle
buch,i in die Zelle j1,j2 im Aktuellen sheet.......
AW: For Schleife keine Integer Werte?
26.12.2004 14:46:28
Josef
Hallo Thorsten!
Da deine Funktion keinen Rückgabewert erzeugt, genügt doch

readout i, j, 4, "c"

Gruß Sepp
Anzeige
AW: For Schleife keine Integer Werte?
Thorsten
Ja sag ich ja, aber wenn ich das "s =" weglasse meckert er wegen wertzuweisung!!
Daher muss ich dieses "S=" als dummy hinschreiben dann gehts, aber das muss doch auch anders gehen..........
AW: For Schleife keine Integer Werte?
26.12.2004 14:58:20
Josef
Hallo Thorsten!
Ist die Funktion so geheim, das du den Code hier nicht zeigen willst?
Gruß Sepp
AW: For Schleife keine Integer Werte?
Thorsten
Hm schuldigung *gg*

Private Function readout(ByVal i As Integer, ByVal j1 As Integer, ByVal j2 As Integer, buch As String)
Dim sFile, sPath As String
sFile = "Daten.xls"
sPath = ThisWorkbook.Path & "/"
Cells(j1, j2).Formula = "='" & sPath & "[" & sFile & "]Daten'!" & buch & i
Cells(j1, j2).Copy
Cells(j1, j2).PasteSpecial Paste:=xlPasteValues
End Function

Wobei ich da dann ml ne Frage hätte ob das nicht vielleicht auch einfacher ginge, denn es sind nicht grad wenige Daten, und da ich das ja alles einzeln mache dauert es ziemlich lange......
Anzeige
AW: For Schleife keine Integer Werte?
26.12.2004 15:40:44
Josef
Hallo Thorsten!
Wenn ich das Richtig verstehe, dann sollte es auch so klappen!

Sub test2()
Dim sFile, sPath As String
sFile = "Daten.xls"
sPath = ThisWorkbook.Path & "/"
Range(Cells(8, 4), Cells(500, 14)).FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC"
End Sub

Gruß Sepp
AW: For Schleife keine Integer Werte?
Thorsten
Nein leider nicht ganz, denn ich will nicht die ganze Datei kopieren sondern nur einzelne Spalten!!
Das heißt so ungefähr wie A,b,C kopieren d,e,f nicht, g,h wieder usw.
Das würde bei dieser methode ja nicht funktionieren.....
Anzeige
AW: For Schleife keine Integer Werte?
26.12.2004 16:13:52
Josef
Hallo Thorsten!
Welche Spalten sollen den wohin kommen?
Gruß Sepp
AW: For Schleife keine Integer Werte?
Thorsten
Das ist alles recht wirr......
z.b.
c nach d
d nach e
e nach f
f nach g
h nach h
...
n nach n
ag nach o
ah nach p
ai nach q
ao nach r
usw..... ist nicht immer alles zusammenhängend!
AW: For Schleife keine Integer Werte?
26.12.2004 16:38:30
Josef
Hallo Thorsten!
Dann würde ich es so lösen:

Sub test2()
' RC = gleiche Zeile gleiche Spalte
' RC[-1] gleiche Zeile eine Spalte "links"
' RC[18] gleiche Zeile 18 Spalten "rechts"
Dim sFile, sPath As String
sFile = "Daten.xls"
sPath = ThisWorkbook.Path & "/"
Range("D8:D500").FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC[-1]"
Range("E8:E500").FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC[-1]"
Range("F8:F500").FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC[-1]"
Range("G8:G500").FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC[-1]"
Range("H8:H500").FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC"
Range("N8:N500").FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC"
Range("O8:O500").FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC[18]"
Range("P8:P500").FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC[18]"
Range("Q8:Q500").FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC[18]"
Range("R8:R500").FormulaR1C1 = "='" & sPath & "[" & sFile & "]Daten'!" & "RC[23]"
End Sub

Ist sicher zig-mal schneller als die Scleifen!
Gruß Sepp
Anzeige
AW: For Schleife keine Integer Werte?
Thorsten
Ja das ist sicher zig mal schneller jedoch gibt es da noc hein Problem:
Und zwar werden z.b. in Spalt cc noch daten bezugnehmend auf Spalte a eingetragen
Daten.xls verändert sich ständig.
Daher kann es bei dieser methode vorkommen, dass die Daten in Spalte cc sich nun auf die Falsche daten in Spalte a beziehen.
Sprich ich meine eine aktualisierung von Daten.xls mit datenerhlt in meiner Datei ist nicht mehr möglich!
Ich hoffe sie verstehen worauf ich hinaus will.
AW: For Schleife keine Integer Werte?
26.12.2004 16:51:59
Josef
Hallo Thorsten!
Hier im Forum sind wir per "Du" !
Auch das soll kein Problem sein:

Sub test2()
' RC = gleiche Zeile gleiche Spalte
' RC[-1] gleiche Zeile eine Spalte "links"
' RC[18] gleiche Zeile 18 Spalten "rechts"
Dim sFile, sPath As String, str As String
sFile = "Daten.xls"
sPath = ThisWorkbook.Path & "/"
str = "='" & sPath & "[" & sFile & "]Daten'!"
'Bildschirmaktualisierung, Berechnung, usw. ausschalten
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
End With
Range("D8:D500").FormulaR1C1 = str & "RC[-1]"
Range("E8:E500").FormulaR1C1 = str & "RC[-1]"
Range("F8:F500").FormulaR1C1 = str & "RC[-1]"
Range("G8:G500").FormulaR1C1 = str & "RC[-1]"
Range("H8:H500").FormulaR1C1 = str & "RC"
Range("N8:N500").FormulaR1C1 = str & "RC"
Range("O8:O500").FormulaR1C1 = str & "RC[18]"
Range("P8:P500").FormulaR1C1 = str & "RC[18]"
Range("Q8:Q500").FormulaR1C1 = str & "RC[18]"
Range("R8:R500").FormulaR1C1 = str & "RC[23]"
'Formeln in Werte umwandeln
Range("D8:H500") = Range("D8:H500").Value
Range("N8:R500") = Range("N8:R500").Value
'Bildschirmaktualisierung, Berechnung, usw. wieder einschalten
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Gruß Sepp
Anzeige
AW: For Schleife keine Integer Werte?
Thorsten
Nein nein so meine ich das nicht.
Es kann vorkommen das in meiner Datei:
a 1 5
b 2 6
c 3 7
steht
nun daktualisiere ich mit daten.xls das heißt mit:
a
d
b
c
dann steht bei mir immer noch
a 1 5
d 2 6
b 3 7
c
aber es sollte:
a 1 5
d
b 2 6
c 3 7
das heißt 2,6 müssen b zugeordnet bleiben!
AW: For Schleife keine Integer Werte?
26.12.2004 17:04:26
Josef
Hallo Thorsten!
Wenn du das

Formeln in Werte umwandeln
Range("D8:H500") = Range("D8:H500").Value
Range("N8:R500") = Range("N8:R500").Value

rausnimmst, dann sind die Zellen mit der Datei "Daten.xls" verknüpft!
Gruß Sepp
Anzeige
AW: For Schleife keine Integer Werte?
Thorsten
Aber genau das möchte ich nicht!
Jedoch ist es auch so, das sich die Daten in Daten.xls ständig verändern und sich meine Datei automatisch anpassen muss.
Soll heißen wenn Zeile x rausfällt muss zeile x auch bei mir rausfallen und wenn Zeile y zwischen i und j eingefügt wurde muss diese sich auch bei mir zwischen i,j einfügen ohne dahinterstehende Daten zu verändern.
Aber ich denke ich lasse es dann einfach so wie ich es zuerst hatte, weil das andere bringt nicht das Resultat was ich gerne haben möchte, da das ganze ansich schon etwas komplexer ist.
Außerdem sind wir von meiner eigentlich frage
(warum ich bei funktionen, sobald ich Parameter mit übergebe, immer ein s= davor schreiben muss) vollkommen abgewichen!
Trotzdem vielen Dank für deine Hilfe.
Anzeige

104 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige