Code loopt vast op #WAARDE

Status
Niet open voor verdere reacties.

Joete

Gebruiker
Lid geworden
19 sep 2008
Berichten
87
Ik heb een code die een bestand van 50k regels anders indeelt en alleen de kolommen er uithaalt die door de gebruiker opgegeven zijn.
Nu staat in dat bestand een cel met een formule, wat eigenlijk geen formule hoort te zijn. In de cel staat "=-I12" wat hoort te zijn "-I12". De tekst die in de cel staat is een huisnummertoevoeging en heeft dus niets te maken met cel I12. Het streepje moet er dus voor staan.

Uit de hele lap code die ik heb gaat het om dit stuk:
Code:
        Dim oData As String
        For oHead = 1 To 16
            ThisWorkbook.Sheets("OBJECT").Cells(1, oHead).Value = ThisWorkbook.Sheets("data").Cells(oHead, 6).Value
        Next oHead
        For oDataR = 1 To ThisWorkbook.Sheets("data").Range("H1").Value
            For oDataC = 1 To 16
                If InStr(1, ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value, "|", 0) > 0 Then
                    Dim oDataArray() As String
                    oDataArray = Split(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value, "|")
                    'ThisWorkbook.Sheets("COMPLEX").Cells(cDataR + 1, cDataC).Value = objWS.Cells(cDataR + 1, 1).Value
                    For od = LBound(oDataArray) To UBound(oDataArray)
                        If InStr(1, oDataArray(od), Chr(34), 0) > 0 Then
                            oData = oData & Mid(oDataArray(od), 2, Len(oDataArray(od)) - 2)
                        ElseIf IsNumeric(oDataArray(od)) = True Then
                            oData = oData & objWS.Cells(oDataR + 1, CInt(oDataArray(od))).Value
                        End If
                    Next od
                ElseIf InStr(1, ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value, Chr(34), 0) > 0 Then
                    oData = Mid(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value, 2, Len(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value) - 2)
                ElseIf InStr(1, ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value, "=", 0) > 0 Then
                    oData = Right(objWS.Cells(oDataR + 1, CInt(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value)).Value, Len(objWS.Cells(oDataR + 1, CInt(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value)).Value) - 1)
                ElseIf IsNumeric(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value) = True Then
                    On Error GoTo melding
                    If IsError(objWS.Cells(oDataR + 1, CInt(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value))) = True Then
                        oData = Right(objWS.Cells(oDataR + 1, CInt(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value)).Value, Len(objWS.Cells(oDataR + 1, CInt(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value)).Value) - 1)
                    Else
                        oData = objWS.Cells(oDataR + 1, CInt(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value)).Value
                    End If
                Else
                    oData = ""
                End If
                ThisWorkbook.Sheets("OBJECT").Cells(oDataR + 1, oDataC).Value = oData
            Next oDataC
        Next oDataR
melding:
MsgBox "R: " & oDataR + 1 & " - C: " & Chr(oDataC + 64)
In deze code plak ik eerst de koppen in de eerste rij, daarna volgt de data. De data kan bestaan uit enkele cellen, maar ook meerdere cellen die samengevoegd moeten worden, dan wel cellen die met losse strings samengevoegd worden, vandaar de vele ifs. Ben nog aan het proberen, dus heb de code nog niet netjes gemaakt, dat komt later.

Het loopt steeds spaak NA:
Code:
ElseIf IsNumeric(ThisWorkbook.Sheets("data").Cells(oDataC, 7).Value) = True Then
Hij komt hier steeds doorheen, maar daarna loopt hij vast met het overnemen van de waarde. Ik heb hier een controle met iserror geprobeerd, gekeken of er een =-teken in staat en gecontroleerd of het een formule (.hasformula) is.

Ik zie het even niet...jullie?

Wat ik uit de cel nodig heb is de inhoud zonder het =-teken, wat mij betreft mag de - ook weg...

Alvast bedankt.
 
Eventueel een find and replace ?
Find: =-
Replace '-
 
Volgens mij kan de hele code wel wat eenvoudiger. Maar zonder bestandje en zonder de volledige code is het een beetje koffiedik kijken.

Code:
Sheets("OBJECT").Cells(1).Resize(, 16) = Application.Transpose(Sheets("data").Cells(1, 6).Resize(16).Value)
lijkt mij hetzelfde te doen als het eerste lusje.
 
Code:
[OBJECT!A1:P1].value=[transpose(data!F1:F16)]
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan