Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Funstion/Befehl für Zeichenwiederholung | Herbers Excel-Forum


Betrifft: Funstion/Befehl für Zeichenwiederholung von: Reinhard
Geschrieben am: 24.01.2010 16:16:28

Hallo Wissende,

ich hab es leider vergessen, wie heißt der Befehl um ein Zeichen zu wiederholen.

Meinstring=xyz("A",100)
oder
Meinstring=xyz(100,"A")

Gesucht ist "xyz".

Danke ^ Gruß
Reinhard

  

Betrifft: AW: Funstion/Befehl für Zeichenwiederholung von: Hajo_Zi
Geschrieben am: 24.01.2010 16:29:59

Hallo Reinhard,

=WIEDERHOLEN(45;3)

GrußformelHomepage


  

Betrifft: String(100, "A") oT. von: Tino
Geschrieben am: 24.01.2010 16:31:00




  

Betrifft: Jepp, das ist es, merci :-) o.w.T. von: Reinhard
Geschrieben am: 24.01.2010 16:37:33




  

Betrifft: Limitation bei Funktion String() von: Reinhard
Geschrieben am: 24.01.2010 17:03:02

hallo Interessierte,

zumindest bei Excel2000 liegt die Limitation bei 261.292.013

Sub Gross()
Dim Satz As String, N
Satz = String(261292013, "A")
Satz = ""
Satz = String(261292014, "A")
End Sub
Gruß
Reinhard


  

Betrifft: AW: wobei mich jetzt doch von: Daniel
Geschrieben am: 24.01.2010 17:09:57

der Anwendungsfall interssieren würde, wo diese Limitation ein Problem darstelt.

Gruß, Daniel


  

Betrifft: AW: wobei mich jetzt doch von: Reinhard
Geschrieben am: 24.01.2010 17:45:45

Hallo Daniel,

ich hatte die String-Funktion schon paarmal benutzt, mir fiel halt der Name nicht ein :-)

Der Hintergrund ist die Anfrage in einem anderen Forum, zwar ein Wordforum aber das ist für die dortige Frage wurscht.

Der Anfrager möchte per Word-Vba eine bis zu 2 GB große Txt-datei erstellen. An sich wollte er die mit wirren beliebigen Zeichenfolgen, ich sagte ihm das kann dann aber lange dauern bei 2 GB, daraufhin war er zögerlich auch mit nur einem Zeichen zufrieden.

Mein Plan war dann, mit dieser String-Funktion eine Variable zu füllen und diese über
Open "datei" for binary as #1
und der Put-Anweisung dann die Datei zu befüllen.

Leider klappt das nicht weil die Limitationen von String() und evtl. auch von Put zu klein sind.

Dieser Code:

Sub Gross()
Dim Satz As String
Satz = String(261292013, "A")
'MsgBox Len(Satz)
Close
Open "c:\test\gross.txt" For Binary As #1
Put #1, , Satz
Close
End Sub
bringt bei der Put-Zeile den Fehler 7. nicht genügend Speicher.

Ergo muß ich da anders vorgehen um eine 2 GB-datei zu erzeugen.
Okay, wird schon gehen die datei mit Open for Input öffnen und dann viele Säteze nacheinander reinschreiben mit Print, das müßte gehen, kann aber dauern.

Hast du bessere Ideen? Als her mit :-)

Gruß
Reinhard





  

Betrifft: AW: wobei mich jetzt doch von: Daniel
Geschrieben am: 24.01.2010 18:06:22

Hi

naja, die Limitation liegt in der String-Variable, die nur 262 Mio Zeichen fassen kann

wenn man riesen TXT-Dateien braucht, könnte man versuchen diese in der maximal möglichen Grösse zu erstellen und dann im Dateisystem zu kopieren und diese dann über das betriebssystem zusammenzufügen.
unter DOS gabs da doch die MERGE-Funktion.

Ansonsten müsste man sich halt mit einem geeigneten Editor behelfen, der diese Datenmengen verarbeiten kann.

gruß, Daniel


  

Betrifft: AW: wobei mich jetzt doch von: Reinhard
Geschrieben am: 24.01.2010 18:24:33

Hallo daniel,

gute Idee, zu Dos-Zeiten habe ich zwar nie merge benutzt, aber mit einfach Copy kann man auch Dateien zu einer vereinen.

Gruß
Reinhard


  

Betrifft: AW: wobei mich jetzt doch von: Tino
Geschrieben am: 24.01.2010 18:25:39

Hallo,
man kann auch ein Textfile Zeile für Zeile schreiben.

Dim A As Long, Satz$
Dim F%, lngTeiler&

lngTeiler = 261292013 / 10
F = FreeFile

Open "c:\test\gross.txt" For Append As #F
    For A = 1 To 10
        If A = 1 Then
            Satz = String(lngTeiler, "A")
        ElseIf A = 10 Then
            Satz = ""
            Satz = String(261292013 - 9 * lngTeiler, "A")
        End If
        
        Print #F, Satz
    Next A
Close #F
Gruß Tino


  

Betrifft: Limitation liegt weniger an der Funktion von: Tino
Geschrieben am: 24.01.2010 18:06:40

Hallo,
ich denke die Limitation liegt weniger in der Funktion sondern am Speicher eines Strings.
Sonst müsste dies ja funktionieren.

Satz = String(130646007, "A") & String(130646007, "A")
Gruß Tino


  

Betrifft: AW: Limitation liegt weniger an der Funktion von: Reinhard
Geschrieben am: 24.01.2010 18:16:02

Hallo Tino,

ja, das kann/wird so sein.

Sub Gross2()
Dim Satz As String, N
Satz = String(261292013, "A")
'Satz = ""
Satz = String(261292013, "A")
End Sub
bringt Fehler 14, zuwenig Zeichenfolgenspeicher.

Gruß
Reinhard