• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Loop werk niet

Status
Niet open voor verdere reacties.

SvenK

Gebruiker
Lid geworden
10 sep 2015
Berichten
26
Hallo,

ik probeer via een loop maximaal 5 omschrijvingen over te brengen maar dit lukt mij niet.
In bijlage is er een voorbeeldje te vinden. Wanneer je op de pijl drukt wordt de code geactiveerd en krijg ik een foutmelding.

Wat doe ik fout in de code?

Mvg,
Sven.
 

Bijlagen

  • vbnc.xlsm
    28,8 KB · Weergaven: 18
Hij gaat mis op deze regel:
With ActiveWorkbook.Sheets("SELECTIE").Range("TBL_FOUTCODES[Actief]")

Mag je zelf even onderzoeken waarom ;)
 
Probeer het eens met deze code. Wel in een gewone module zetten en niet in de bladmodule.

Code:
Sub VenA()
With Sheets(1)
    .Range("Resultaat").ClearContents
    If .[E4] > 0 And .[E4] <= 5 Then
        For Each cl In .Columns(3).SpecialCells(2, 1)
            c00 = c00 & "|" & cl.Offset(, -1).Value
        Next cl
        .[H2].Resize(UBound(Split(Mid(c00, 2), "|")) + 1) = Application.Transpose(Split(Mid(c00, 2), "|"))
    End If
End With
End Sub
 
Ik volg dit bericht met uiterste interesse vanwege de array van VenA, en ik wil beslist niet inbreken op dit onderwerp. En dit blijft dus mijn enige schrijven in dit topic.

@VenA: uitkomst wordt in H2, H3 en H4 neergezet.
Als ik nu de uitkomst horizontaal wil hebben in bijv. K2, L2 en M2, wat moet ik dan wijzigen in:

Code:
        .[H2].Resize(UBound(Split(Mid(c00, 2), "|")) + 1) = Application.Transpose(Split(Mid(c00, 2), "|"))

Greetz/Excelbat
 
@Excelbat.

De andere kant op resizen en niet transponeren.
Code:
.[K2].Resize(, UBound(Split(Mid(c00, 2), "|")) + 1) = Split(Mid(c00, 2), "|")
 
wellicht met een verduidelijkende tussenstap:

Code:
Sub M_VenA()
  With Sheets(1)
    .Range("Resultaat").ClearContents
    If .[E4] > 0 And .[E4] <= 5 Then
        For Each cl In .Columns(3).SpecialCells(2, 1)
            c00 = c00 & "|" & cl.Offset(, -1).Value
        Next

        sn=split(mid(c00,2),"|")
        .[H2].Resize(UBound(sn) + 1) = Application.Transpose(sn)   ' vertikaal
        .[H2].resize(,ubound(sn)+1)=sn                                      ' horizontaal

        .[H2].Resize(UBound(Split(c00, "|"))) = Application.Transpose(Split(Mid(c00, 2), "|"))    '  zonder tussenstap
    end if
  End With
End Sub
 
@VenA: erg bedankt voor de duidelijke VBA. Heb ik errugg veel van geleerd. Heb hier en daar wat Msgboxen ertussen geplaatst om te kijken wat de codes uitwerken
@SNB: ook bedankt voor uw inbreng. Deze ga ik morgen op mijn gemak bestuderen, en daarna laat ik u daarna mijn bevindingen weten.

Greetz/Excelbat
 
En dit blijft dus mijn enige schrijven in dit topic.
niet helemaal waar dus.:d Volgens mij is het vragen over hoe een bepaalde code werkt ook niet echt een 'inbraak'. En waarschijnlijk voor de TS ook wel handig. Een msgbox is handig om te 'debuggen' of zoals snb gedaan heeft even de gegevens in een variabele stoppen zodat je met <F8> door de code kan lopen. Onder foutopsporing staan nog wat meer opties om te 'debuggen'
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan