2017-07-18 3 views
0

Was ich mache, ist sehr einfach - Auswahl einer Vereinigung von Spalten, die Zahlen enthalten als Text gespeichert und konvertiert sie. Jedes Mal, wenn dies ausgeführt wird, werden alle gleichmäßigen nummerierten Datenspalten gelöscht.Excel VBA Union löscht Daten aus Spalte

Union(Columns(19), Columns(22), Columns(25), Columns(28), Columns(31), Columns(34), Columns(37), Columns(40), Columns(43), Columns(46)).Select 
With Selection 
.Value = .Value 
End With 

Ich habe mir zwar meinen ganzen Code mehrfach angesehen, kann aber nicht sagen, warum sich das so komisch verhält. jede Hilfe wird sehr geschätzt.

Antwort

1

die Value Eigenschaft eines discontiguous Bereichs gibt nur den ersten Bereich dieses Bereichs. Wenn Sie dann versuchen, diesen Wert (Array in diesem Fall) wieder einem nicht zusammenhängenden Bereich zuzuweisen, treten merkwürdige Ergebnisse auf. In diesem speziellen Fall erhält jede zweite Spalte den Wert der ersten Zelle im ersten Bereich.

Sie sollten die Bereiche in Ihrer Reichweite durchlaufen.

For each rArea in Selection.Areas 
    rarea.value2 = rarea.value2 
Next rarea 
+0

Vielen Dank !!! – marv

0

Versuchen Sie, Select zu vermeiden, und qualifizieren Sie Ihre Bereiche vollständig. Das macht die Sache leichter zu diagnostizieren und robuste ...

Dim myRange As Range 
With ThisWorkbook.Sheets("Sheet1") 
    Set myRange = Union(.Columns(19), .Columns(22), .Columns(25)) ' etc. 
End With 

Nun, wenn Sie versuchen, Text in Zahlen zu konvertieren, können Sie besser dran, die NumberFormat Eigenschaft verwendet, wie hier diskutiert: What are .NumberFormat Options In Excel VBA?

Looping durch Ausläufe und zahlen~~POS=TRUNC:

Dim area As Range 
For Each area In myRange.Areas 
    area.NumberFormat = 0 ' for numbers, could still use area.Value = area.Value 
Next area 
+0

danke für die schnelle antwort. Ich müde Ihren Code, aber nichts passiert :( – marv

+0

Bitte siehe bearbeiten – Wolfie

+0

Vielen Dank !! – marv

Verwandte Themen