• 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.

Uitvoeren macro = 400 error

Status
Niet open voor verdere reacties.

phokki

Gebruiker
Lid geworden
19 mrt 2012
Berichten
51
Hallo mensen,

Ik heb een beetje zitten knooien met wat VBA code. Uiteraard met de beperkte kennis:confused:.
Maar de code wat in mijn ogen er goed uit ziet vervolgd in een error: 400.

Als ik de macro uitvoer komt er een vierkante box met daarin 400 en een OK knop.
Na wat googlen heb ik geen oplossing kunnen vinden.

Hieronder is de code + uitleg:
Sub phokki()
With Sheets("opdaten")
'werkblad1
With Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)) 'haalt data op van werkblad1
Sheets("Tabelle1").Cells(1, 1).Resize(.Rows.Count) = .Value 'en zet het volgens in werkblad2
End With

With Range(.Cells(1, 5), .Cells(Rows.Count, 5).End(xlUp)) 'zelfde als hierboven
Sheets("Tabelle1").Cells(1, 2).Resize(.Rows.Count) = .Value
End With

With Range(.Cells(1, 16), .Cells(Rows.Count, 16).End(xlUp)) 'zelfde als hierboven
Sheets("Tabelle1").Cells(1, 3).Resize(.Rows.Count) = .Value
End With

With Range(.Cells(1, 17), .Cells(Rows.Count, 17).End(xlUp)) 'zelfde als hierboven
Sheets("Tabelle1").Cells(1, 4).Resize(.Rows.Count) = .Value
End With

With Sheets("Tabelle1") 'hier probeer ik werkblad2 te gebruiken(gewoonweg omdat ik niet weet hoe het anders moet)
With Range(.Cells(1, 4), .Cells(Rows.Count, 1).End(xlUp)) 'hier wil ik code van Kolom 4 naar kolom 17 kopieren (voor berekening)
Sheets("Tabelle1").Cells(1, 17).Resize(.Rows.Count) = .Value
End With
End With 'hier wil ik hem weer sluiten
End With
Zoals ik al aangaf, ben geen ster in VBA code. Heb al paar dingen geprobeerd.
En heb geen ideeën meer....:(

Ik hoop dat iemand mij hier kan helpen, waarschijnlijk een makkelijk iets.
 
Laatst bewerkt:
Volgens mij wil je de eerste with eerder afsluiten. verplaats eens de laatste "end with" naar voor de "with sheets("tabelle1")"

overigens hoef je with niet altijd te gebruiken het is gewoon een afkorting die zorgt dat je niet elke keer de volledige kwalificatie hoeft aan te roepen. Als je niet oppast maak je je het je jezelf alleen wel moeilijker
 
Als ik die verplaats krijg ik alsnog de error! Misschien begrijp ik het ook wel niet goed, With en END WITH is toch om de
juiste worksheet te starten en af te sluiten als het ware.
 
Het is niet makkelijk.
Je moet gewoon systematisch denken.
Kolom D in werkblad 2 is een kopie van kolom Q in werkblad 1.
Je wil dus in in werkblad 2 in kolom Q dezelfde gegevens als in kolom Q van het eerste blad.
De code daarvoor heb je al.

PS.
Ik vind het niet erg als je wat meer op je Nederlands let. Leest voor mij in ieder geval een stuk prettiger.
Maar de code die er in mijn ogen goed uit ziet vervolgt in een error: 400.
:(
 
snb, in mijn ogen doe ik juist precies hetzelfde als in de code daarboven. Alleen krijg ik een error.
Dat is juist het probleem wat ik niet snap haha!

Sorry voor mijn nederlands, ik typ graag snel waardoor ik misschien spelling over het hoofd zie ;)

Heb ook wat zitten knooien met range en dergelijke maar kom er niet uit :/
 
Langzamer en zorgvuldiger werken bespaart je veel tijd....
 
Code:
Sub phokki()
 Set WS = Sheets("Tabelle1")
 With Sheets("opdaten")
     nRows = .Cells(Rows.Count, 1).End(xlUp).Row
     WS.Cells(1, 1).Resize(nRows) = .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
     WS.Cells(1, 2).Resize(nRows) = .Range("E1:E" & .Cells(Rows.Count, 5).End(xlUp).Row).Value
     WS.Cells(1, 3).Resize(nRows, 2) = .Range("P1:P" & .Cells(Rows.Count, 16).End(xlUp).Row).Resize(, 2).Value
 End With
End Sub
 
Code:
sub snb
  for j=1 to 3
     sheets("Tabelle1").columns(j)=sheets("opdaten").columns(choose(j,1,5,16)).value
  next
End sub
 
Laatst bewerkt:
In een loopje, maar minder schrijfwerk.
Code:
Sub phokki()
 Set WS = Sheets("Tabelle1")
 With Sheets("opdaten")
   sq = Array(1, 5, 16)
    For i = 1 To 3
  Nrows = .Cells(Rows.Count, sq(i - 1)).End(xlUp).Row
      WS.Cells(1, i).Resize(Nrows) = .Cells(1, sq(i - 1)).Resize(Nrows).Value
    Next i
 End With
End Sub

Edit: code van @snb gemist (nog minder schrijfwerk).
Edit 2:Moet dat geen "columns" zijn @snb?
 
Laatst bewerkt:
't Zijn 4 kolommen ;)
Code:
sub snb
  for j=1 to 4
     sheets("Tabelle1").columns(j)=sheets("opdaten").columns(choose(j,1,5,16,17)).value
  next
End sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan