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

Range an Array, bearbeiten und zurück

Range an Array, bearbeiten und zurück
08.07.2021 20:32:53
Peter
Guten Abend
Mit nachfolgendem Code stelle ich sicher, dass alle Zellinhalte Strings sind. Abgefüllt werden manchmal Zahlen - beim Verlassen der Tabelle erfolgt die Umwandlung.
Damit nicht Zelle für Zeile des einspaltigen Zellbereichs Range("_AKONTO_NR") abgearbeitet werden muss (es kann sich um viele Einträge handeln), möchte ich gerne die Werte dieses Bereichs einer Array-Variable übergeben, dann die Werte dort bearbeiten und anschliessend wieder in den Range("_AKONTO_NR") zurückschreiben.
Kann mir jemand helfen, den Code zu schreiben. Ich nehme an, dass ich Anfang eine Variable definieren muss, jedoch ohne Angabe des Datentyps, da dieser ja, soweit es nicht schon Strings sind, die Zahlen in Strings umwandeln soll. Aber wie das dann weiter geht?
Dim arr()
arr = Range("_AKONTO_NR").Value
...
Danke für Hinweise.
Gruss, Peter
Aktueller Code:

Private Sub Worksheet_Deactivate()
Dim rCell As Range, wksMe As Worksheet, wksTarget As Worksheet
Set wksMe = Me
Set wksTarget = ActiveSheet
'' Zellinhalt -> jeweils lauter Zahlen, teilweise als Zahl, teilweise als String - alle Zellinhalte müssen in Strings umgewandelt werden.
For Each rCell In wksMe.Range("_AKONTO_NR")
If Not rCell.Value = "" Then
rCell.Value = "'" & rCell.Value
Else
End If
Next
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range an Array, bearbeiten und zurück
08.07.2021 21:03:22
GerdL
Moin Peter!

Private Sub Worksheet_Deactivate()
Dim arr As Variant, L As Long, S As Long
arr = Me.Range("_AKONTO_NR").Value
For L = 1 To UBound(arr, 1)
For S = 1 To UBound(arr, 2)
arr(L, S) = CStr(arr(L, S))
Next S
Next L
Me.Range("_AKONTO_NR") = arr
End Sub
Gruß Gerd
AW: Range an Array, bearbeiten und zurück
08.07.2021 21:26:42
Peter
Hallo Gerd
Vielen Dank. Der Code läuft sauber durch, allerdings blieben die numerischen Einträge numerisch.
Jetzt habe ich gebastelt, und zwar die Zeile
arr(L, S) = CStr(arr(L, S))
durch
arr(L, S) = "'" & arr(L, S)
ersetzt.
Ich hoffe, das ist nicht gegen irgendwelche Regeln :-) - auf jeden Fall bring der Code nun das gewünschte Resultat.
Allerdings verstehe ich nicht, was da hier mit den beiden For … Next passiert. Könntest du mir das kurz erklären?
For L = 1 To UBound(arr, 1)
For S = 1 To UBound(arr, 2)
arr(L, S) = "'" & arr(L, S)
Next S
Next L
Vielen Dank und Gruss, Peter
Anzeige
AW: Range an Array, bearbeiten und zurück
08.07.2021 21:35:55
Daniel
Hi
Nö das mit dem voranstellen des Texterkennungszeichens ist schon korrekt so.
Ansonsten wird beim Rückschreiben des Arrays in die Zellen die automatische Typumwandlung aktiv, die alles was wie eine Zahl aussieht, in eine solche wandelt.
Die beiden For- Next sind nur die Schleifen über die Zeilen des Arrays und die Spalten des Arrays.
Ubound ermittelt den höchsten Index des Arrays in der abgegebenen Dimension, dh den Schleifenendwert.
Gruß Daniel
AW: Vielen Dank, owT
08.07.2021 21:39:26
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige