Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 4 van 4

Onderwerp: Code loopt vast op #WAARDE

  1. #1
    Vraag is niet opgelost

    Code loopt vast op #WAARDE

    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.
    Als ik het wist, dan had ik het niet gevraagd...

  2. #2
    Mega Senior E v R's avatar
    Geregistreerd
    22 oktober 2008
    Eventueel een find and replace ?
    Find: =-
    Replace '-
    Gr. Eric

  3. #3
    Mega Honourable Senior Member
    Geregistreerd
    2 maart 2013
    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.
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  4. #4
    Giga Honourable Senior Member
    Verenigingslid

    Geregistreerd
    12 juni 2008
    Code:
    [OBJECT!A1:P1].value=[transpose(data!F1:F16)]
    VBA voor smarties
    VBA is een taal die je moet leren met een grammatica- en een woordenboek.

    http://www.helpmij.nl/forum/announcement.php?f=5
    Plaats svp geen bestanden op andere sites; nadat het bestand daar verwijderd is wordt een forumdraad onbegrijpelijk voor anderen.

  5. Dit topic is automatisch gesloten omdat er sinds vier maanden niet meer op gereageerd is.

    Indien gewenst kan de topicstarter een verzoek tot heropening indienen.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren