foutje in VBA

Status
Niet open voor verdere reacties.

DeCor

Gebruiker
Lid geworden
11 nov 2005
Berichten
90
ik heb een knop die rij(en) vanaf "sheet UIT" naar "sheet IN" verplaatst, dit werkt goed, doch om te voorkomen dat gegevens overschreven worden moet ik eerst alle selecties die in de "IN" sheet zouden staan uit zette, en hier loopt het fout.

Ik heb de deselectie in een aparte knop geplaatst om nadien samen te voegen naar 1 knop. Voor alle duidelijkheid, ik druk op de knop in "sheet UIT"

(bij "Range("A22:C22").Select" loopt het al fout)


Private Sub CommandButton2_Click()
Sheets("IN").Select
'automatische filter op alle producten zetten / resetten
Range("A22:C22").Select
Selection.AutoFilter
Range("A22:C22").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=3
' kleurselectie ongedaan maken
Rows("23:500").Select
Selection.EntireRow.Hidden = False
Range("B23").CurrentRegion.Select
ActiveCell.Offset(Selection.Rows.Count, 0).Activate
'nu formule om rest kleur te updaten
Application.CalculateFull
Sheets("UIT").Select
End Sub


Kan iemand me uit de nood helpen?
Alvast bedankt
 
Laatst bewerkt:
Maak de filterknop zó:

Code:
Private Sub CommandButton1_Click()
  With Sheets("IN")
     .Showalldata
     with .range("A22:C500")
      .autofilter 1, "criterium"
      .offset(1).specialcells(xlcelltypevisible).copy sheets("UIT").range("A1")
      .autofilter
    end with
  end with
End Sub

Dan is de tweede knop overbodig.
Vermijd Select en Activate in VBA-code: overbodig, vertragend en verwarrend.
 
Laatst bewerkt:
Hoi, bedankt voor de snelle reactie.

Bij

With Sheets("IN").Showalldata

"krijg ik fout 1004"

De knop "deselecteren" staat ook in de sheet ("IN"), kan ik deze activeren vanuit sheet ("UIT")? Misschien is dat makkelijker.

mvg
 

Bijlagen

Laatst bewerkt:
Vergeet die showalldata, met de onderstaande macro gaat het goed en is een 2e knop overbodig.

Code:
Private Sub CommandButton1_Click()
  With Sheets("IN")
     with .range("A22:C500")
      .autofilter 1, "criterium"
      .offset(1).specialcells(xlcelltypevisible).copy sheets("UIT").range("A1")
      .autofilter
    end with
  end with
End Sub
 
bedankt voor de hulp snb,
ik heb mijn code naar het voorbeeld van U vereenvoudigd (is neller nu), maar kreeg nog steeds foutmelding. Daarom opgelost door de macro "resetselectie" te laten activeren vanuit de "UIT" sheet, dan geen foutmelding meer.

Private Sub CommandButton2_Click()
'macro laten starten vanuit "UIT" in "IN"
With ActiveWorkbook
Sheets("IN").Select
With Worksheets("IN")
Call resetselectie
End With
End With

mvg :thumb:
 
call is overbodig.

welke code heb je staan in resetselectie ?
 
deze staat onder macro's:

Sub resetselectie()
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
' kleurselectie ongedaan maken
Rows("23:500").Select
Selection.EntireRow.Hidden = False
Range("B23").CurrentRegion.Select
ActiveCell.Offset(Selection.Rows.Count, 0).Activate

End Sub


Ik moet eerst resetten anders overschrijft hij bestaande gegevens.
Doch wanneer ik deze code integreer onder de commendbutton om de gegevns van UIT naar IN te schrijven loopt het steeds vast vanaf "Rows("23:500").Select"

Ik heb jouw laatste code ook geprobeerd, maar dan loopt het vast vanaf "with .range("A22:C500")"


mvg,
 
1. bestudeer grondig autofilter in de hulpfunktie van de VBEditor
2. verwijs in VBAcode altijd naar de sheet.
3. vermijd sleect en activate in VBA-code: overbodig, vertragend en verwarrend (zoals in jouw geval).
4. ik geloof niet dat je mijn eerdere suggestei exact hebt overgenomen, of dat je werkboek 2 werkbladen heeft die resp. "IN" en "UIT" heten.
5. op basis van het door jou geplaatste bestand is de volgende code voldoende
Code:
Private Sub CommandButton1_Click()
    Blad1.Range("B22").CurrentRegion.AutoFilter
End Sub
de titel van deze knop dekt dan in 50% niet meer de lading
6. Ik heb de indruk dat je weinig begrijpt van de code die je gebruikt: wees dan niet verbaasd over de effekten
 
Hoi snb,

Ik ken zeker niet voldoende om alles te begrijpen van de verschillende code's. Daarom ben ik ook zo blij dat ik jullie kan raadplegen en leer steeds een beetje bij (zoals nu).

Het bestandje is maar een vb, want het echte is te groot.
- de autofilter moet enkel gereset worden en niet verwijderd.
- er kan ook nog geselecteerd worden op kleur en deze moet ook gedeselecteerd worden.

bij het laatste loopt het fout wanneer ik het doe via de commandbutton op een andere sheet. Wanneer ik de bestaande knop vanaf de sheet waar hij opstaat gebruik, gaat dit wel?

Dit is heel de code van die knop (welliswaar nog met verwijs naar macro "resetselection"), dit werkt, maar kan misschien eenvoudiger.

'macro laten starten vanuit "D800" in "IN lijst"
With ActiveWorkbook
Sheets("IN lijst").Select
With Worksheets("IN lijst")
Call resetselectie
End With
'nu formule om rest kleur te updaten voor het geval antwoord NEE is
Application.CalculateFull
End With

With Sheets("D800").Select

If MsgBox("Van D800 terug naar IN lijst?", 4) = vbNo Then Exit Sub

If Application.WorksheetFunction.CountA(Rows(ActiveCell.Row)) = 0 Then

MsgBox "Cel " & ActiveCell.Address & " is leeg!" & _
vbCrLf & "Macro werkt niet!", _
vbExclamation, "Fout!"

Else
With Sheets("IN lijst").Range("A65536").End(xlUp)
Selection.Cut .Offset(1, 0)
'nu formule om rest kleur te updaten
Application.CalculateFull
End With

Selection.Delete Shift:=xlUp
End If
End With


Om goed te zijn, zou de macro hierin geïntegreerd moeten worden.

Kan ik eigenlijk een commandbutton starten vanuit een andere sheet bvb "Private Sub CommandButton17_Click()" ?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan