it-swarm.com.de

Excel-Zellwert als Zeichenfolge wird nicht als Zeichenfolge gespeichert

Ich kann diesen Code hier nicht abrufen, um Zelleninhalte zu erfassen und als Zeichenfolge zu speichern. Ich bekomme ein Doppel:
54.6666666667 Statt N03:DM: (Beispiel Zelleninhalt).

Wenn ich Cstr(Sheet1.Cells(i, 5).Value) benutze, erhalte ich immer noch das gleiche Ergebnis.

Jede Hilfe wäre dankbar.

Option Explicit
Private Sub GetAddress()

Dim varAdd As String
Dim i As Integer

    For i = 2 To 327
        If varTag = Sheet1.Cells(i, 2).Value Then
           varAdd = Sheet1.Cells(i, 5).Value
           varAdd = Left(varAdd, 7)
           Sheet3.Cells(incR, 2).Value = varAdd
           Exit For
        End If   
    Next i

End Sub

Blatt Screenshot enter image description here

14
BgreenDSI

Benutze Range("A1").Text anstelle von .Value

kommentar schreiben Bearbeiten:
Warum?
Weil der .Text -Eigenschaft des Range-Objekts gibt zurück, was im Arbeitsblatt buchstäblich sichtbar ist. Wenn Sie also eine Zelle anzeigen, zum Beispiel i100l:25he*_92 then <- Text gibt genau das zurück, was es in der Zelle enthält, einschließlich etwaiger Formatierungen.
Das .Value und .Value2 Eigenschaften geben zurück, was in der Zelle unter der Haube ohne Formatierung gespeichert ist. Speziell .Value2 für Datumstypen wird die Dezimalrepräsentation zurückgegeben.

Wenn Sie tiefer in die Bedeutung und Leistung eintauchen möchten, habe ich gerade gefunden this article das scheint ein guter Leitfaden zu sein

eine andere Bearbeitung
Hier gehts zu Santosh
geben Sie ( [~ # ~] manuell ein [~ # ~] ) die Werte aus dem [~ # ~] Standard [~ # ~] (Spalte A) zu anderen Spalten
Formatieren Sie Spalte A überhaupt nicht
Formatieren Sie Spalte B als Text
Formatieren Sie Spalte C als Datum [TT/MM/JJJJ]
Formatieren Sie Spalte D als Prozentsatz
Dont Format column A, Format B as TEXT, C as Date, D as Percentage
jetzt,
füge diesen Code in ein Modul ein

Sub main()

    Dim ws As Worksheet, i&, j&
    Set ws = Sheets(1)
    For i = 3 To 7
        For j = 1 To 4
            Debug.Print _
                    "row " & i & vbTab & vbTab & _
                    Cells(i, j).Text & vbTab & _
                    Cells(i, j).Value & vbTab & _
                    Cells(i, j).Value2
        Next j
    Next i
End Sub

und Analyse die Ausgabe! Es ist wirklich einfach und es gibt nicht viel mehr, was ich tun kann, um zu helfen :)

            .TEXT              .VALUE             .VALUE2
row 3       hello             hello               hello
row 3       hello             hello               hello
row 3       hello             hello               hello
row 3       hello             hello               hello
row 4       1                 1                   1
row 4       1                 1                   1
row 4       01/01/1900        31/12/1899          1
row 4       1.00%             0.01                0.01
row 5       helo1$$           helo1$$             helo1$$
row 5       helo1$$           helo1$$             helo1$$
row 5       helo1$$           helo1$$             helo1$$
row 5       helo1$$           helo1$$             helo1$$
row 6       63                63                  63
row 6       =7*9              =7*9                =7*9
row 6       03/03/1900        03/03/1900          63
row 6       6300.00%          63                  63
row 7       29/05/2013        29/05/2013          41423
row 7       29/05/2013        29/05/2013          29/05/2013
row 7       29/05/2013        29/05/2013          41423
row 7       29/05/2013%       29/05/2013%         29/05/2013%
33
user2140173