Anzeige
Archiv - Navigation
1476to1480
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

Werte aus Zellen in fortlaufende Variablen schreib

Werte aus Zellen in fortlaufende Variablen schreib
23.02.2016 14:22:20
Thomas
Hallo Forum,
ich habe gerade ein kleines Problem, sprich stehe auf dem Schlauch, aber ich hoffe das Ihr mir dabei helfen könnt.
Folgender Code:
Sub Gen_Var6()
On Error Resume Next
Dim TmpVar(0 To 3500) As String
' Verkürztes Beispiel...
TmpVar(1) = Sheets("Tabelle 1").Range("c3").Value * 100
TmpVar(2) = Sheets("Tabelle 1").Range("c4").Value * 100
TmpVar(3) = Sheets("Tabelle 1").Range("c5").Value * 100
TmpVar(4) = Sheets("Tabelle 1").Range("c6").Value * 100
End Sub

Ich wollte es jetzt via Schleife abhandeln aber bekomme VBA nicht dazu die Werte wirklich in die Variablen zu schreiben.
Dies ist mein Ansatz dazu:

Sub Gen_Var6()
On Error Resume Next
Dim TmpVar(0 To 3500) As String
For i = 3 To 6
TmpVar(i) = Sheets("Tabelle 1").Range("c" & i & ").Value * 100")
Next iV
End Sub

Leider sind die entstehenden Variablen leer.
Könnt Ihr mir einen Hinweis geben wo der Fehler liegt?
Danke Thomas

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte aus Zellen in fortlaufende Variablen schreib
23.02.2016 14:28:39
Steve
Hallo Thomas,
dir ist bewusst, dass mit dem Befehl "On Error Resume Next" du alle Rückmeldungen ausgestellt hast? Dann würden dir nämlich deine Fehler spätestens beim Ausführen angekreidet werden und du wüsstest wo du suchen musst.
Deine Range-Anweisung ist nicht geschlossen, weil du den hinteren Teil in Anführungszeichen gesetzt hast. So sähe das richtig aus.
Sheets("Tabelle 1").Range("c" & i).Value *100

lg Steve

AW: Werte aus Zellen in fortlaufende Variablen schreib
23.02.2016 14:36:13
Thomas
Hallo Steve,
vor die Stirn klatsch.
Danke für die schnelle Hilfe jetzt fluppt es wieder.
Den On Error habe ich drin da die auszulesenden Zellen manchmal Zahlen manchmal Texte manchmal Fehlerwerte enthalten.
Da ich nicht so firm im Fehler abfangen bin habe ich einfach ein ... mach halt weiter mit dem nächsten Befehl bei einem Fehler ... genommen.
Danke und bye
Thomas

Anzeige
AW: Werte aus Zellen in fortlaufende Variablen schreib
23.02.2016 14:45:41
Steve
Ach übrigens,
das ist eine echt umständliche und zudem langsame Variante alles in eine Variable zu bringen, weil bei jedem Einlesevorgang ein Zugriff erfolgt. Stattdessen könnte man das mit einem Zugriff erledigen:
Dim TmpVar As Variant
TmpVar = Range("C3:C6")
Zellen beginnen immer mit dem Index eins und Bereiche sind zudem stets zweidimensional. Wenn du _ also einen Wert aus dem Datenfeld auslesen willst um mit ihm zu rechnen, kannst du das dann wie folgt tun:

TmpVar(2, 1)
Die erste Angabe entspricht der Zeile, die zweite der Spalte. Das Beispiel TmpVar(2,1) enthält also den Wert aus der Zelle C4 aus deinem Beispiel.
lg Steve

Anzeige
AW: Werte aus Zellen in fortlaufende Variablen schreib
23.02.2016 15:30:11
Thomas
Hallo Steve,
danke für die Erläuterung.
Ich schaue mir mal an wie ich es verwenden kann. Macht richtig Spaß.
Wobei es bei meinen gesamt 3500 Variablen innerhalb weniger Sekunden Ich wollte nur wegen der Prozedur Größe die Schleifen verwenden...
Das Problem mit der Geschwindigkeit taucht dann leider stark auf wenn ich die Variablen in ein Word Dokument einfüge. Da ist es dann wirklich langsam 0.5 Sek. pro Variable.
Sub Tausch()
For i = 1 To 3500
With wdDoc.Content.Find
.Execute findtext:="TmpVar(" & i & ")", replacewith:=TmpVar(i), Replace:=wdReplaceAll
End With
Next i
End Sub

Wenn Du da einen Weg wüßtest es zu beschleunigen... ;-)
LG Thomas

Anzeige
Word ist nicht mein Fachgebiet...
23.02.2016 15:39:06
Steve
... oder besser gesagt bin ich damit überhaupt nicht bewandert, daher muss ich hier passen und stelle wieder auf offen.
lg Steve

AW: Word ist nicht mein Fachgebiet...
23.02.2016 16:06:47
Steve
Einen kleinen Tipp habe ich jedoch noch für dich:
Grundsätzlich sind Zugriffe zwischen Speicher und Dokument langsamer als Zugriffe innerhalb des Speichers. Ergo wäre es eine Option deinen Text in eine Variable zu laden und dann die jeweiligen Replacements vorzunehmen und die Geschwindigkeit zu optimieren.
lg Steve

AW: Word ist nicht mein Fachgebiet...
23.02.2016 18:17:48
Thomas
Hallo Steve,
so in diesem Sinne?
- Word Dokument öffnen
- alles Markieren
- in Variable kopieren
- in dieser Variablen die suche tauschen machen und zurückschreiben?
Hättest Du da ein wenig Info, Beispiel Code zu?
Ich kann mir vorstellen das dabei die gesamten Formatirungen etc. im Word Dokument verloren gehen.
LG Thomas

Anzeige
AW: Word ist nicht mein Fachgebiet...
24.02.2016 08:07:50
Steve
Hallo Thomas,
wie gesagt Word kenn ich mich nicht aus, vorallem was die Formatierungen angeht.
lg Steve

AW: Word ist nicht mein Fachgebiet...
24.02.2016 09:46:34
Thomas
Hallo Steve,
danke.
Unabhängig von Word.
Wie würde es denn VBA technisch funktionieren wenn ich ein (Excel Dokument) in eine Variable packen würde und es dann hinterher wieder zurückschreibe?
Mir ist dies Code mäßig nicht klar. Hättest Du da ein Beispiel?
Einfach Bereich markieren, kopieren und dann?
Danke & LG Thomas

AW: Word ist nicht mein Fachgebiet...
24.02.2016 13:28:28
Steve
Hallo Thomas,
so wie oben beschrieben die Variable als Variant definieren bzw. wenn du sie nicht definierst wird sie automatisch den Typ Variant erhalten. Dann den interessanten Bereich der in die Variable packen und dann kannst du das zweidimensionale Array zeilen- und spaltenweise durcharbeiten. Wie das allerdings für Texte bzw. Word funktioniert bin ich überfragt, so jedenfalls nicht.
Sub Test()
Dim TmpVar, i As Long, j As Long
TmpVar = Sheets("Tabelle1").Range("A1:F20")
For i = 1 To UBound(TmpVar, 1)
For j = 1 To UBound(TmpVar, 2)
TmpVar(i, j) = TmpVar(i, j) & "*"
Next j
Next i
Sheets("Tabelle1").Range("A1:F20") = TmpVar
End Sub
Zumindest kann man so den kompletten Text des Dokumentes in eine Variable packen:
VarText = Range(0, ThisDocument.Characters.Last.Start).Text
lg Steve

Anzeige
AW: Word ist nicht mein Fachgebiet...
24.02.2016 16:04:45
Thomas
Hallo Steve,
danke.
Werde ich mich mal beschäftigen
LG Thomas

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige