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

Toevoeging aan VBA code, kopiëren zonder 0 (wel negatief en positief)

Status
Niet open voor verdere reacties.

ThatsMeTo

Gebruiker
Lid geworden
18 mei 2017
Berichten
31
Beste meester Excellers,

De onderstaande code (gevonden op internet en aangepast met een slimme Excel gebruiker) doet al wat hij moet doen. nu is er alleen nog één puntje wat dient te worden toegevoegd.
De onderstaande code moet alleen de waardes negatief of positief kopiëren, maar de 0 waarden dienen lege cellen te worden.

Bijgaand twee documenten, Kopieer test 1 is het document waarin de data moet komen, hierin staat de code (alleen de pathnaam moet worden aangepast zodat het tweede document kan worden geopend).
Het tweede document bevat de gegevens die gekopieerd dienen te worden. in het officiële document is het bereik iets groter, dit zijn uitsluitend testdocumenten.

Ik hoop dat iemand mij helpen kan, ik kan namelijk niets vinden wat ik zou kunnen toevoegen aan deze code om geen 0 waarden mee te kopiëren.
Uiteraard kan ik niet het vinkje gebruiken "een nul weergeven in cellen met een nulwaarde" anders was het makkelijk geweest;).
Bekijk bijlage Kopieer test 1 Public.xlsmBekijk bijlage Kopieer test 2.xlsm

[XML]Sub IMPORT_gegevens()
'
' Import_gegevens Macro

'

Dim Moederlijst As String
Dim sBronbestand As String

Moederlijst = "C:\kopieer test 2"
sBronbestand = ActiveWorkbook.Name



'Open gekozen bestand.
Workbooks.Open Filename:=(Moederlijst)
'Selecteer Koptekst.
Sheets("test1").Range("A1:A10").Copy
'Plak de gegevens.
Workbooks(sBronbestand).Sheets("blad1").Range("A1:A10").PasteSpecial Paste:=xlPasteValues
'Zet de copy mode uit.
Application.CutCopyMode = False
'Sluit geselecteerd bestand.
Workbooks(Right(Moederlijst, Len(Moederlijst) - InStrRev(Moederlijst, "\"))).Close SaveChanges:=False
'Opruimen dialoog object

End Sub[/XML]
 
Zo'n vinkje is niks anders dan het bepalen van de waarde voor een bepaalde parameter.
Neem die actie dus eens op waarbij je dat vinkje wel hebt gezet, dan kan je zien wat er voor nodig is.
 
Neem een macro op waarbij je 0 vervangt door niets, zoekende op gehele celinhoud in het gehele bereik...
 
Alvast bedankt,

ik ben as we speak bezig om de tips te bekijken, en of het lukt om dan de gevonden opname toe te voegen aan de code (daar zit de grootste uitdaging nog in voor mij)
 
Je kan de 0-en er toch uitfilteren met het autofilter?

Code:
Sub VenA()
  With GetObject("C:\Temp\Kopieer test 2.xlsm").Sheets("test1").Cells(1).CurrentRegion
    .AutoFilter 1, "<>0"
    .Copy ThisWorkbook.Sheets("Blad1").Cells(1)
    .Parent.Parent.Close 0
  End With
End Sub
 
Beste Heren/Damen, helaas kom ik er nog niet geheel uit.

De hieronder weergegeven code is het vinkje (False is uit True is aan)
[XML]ActiveWindow.DisplayZeros = False[/XML]

Hieronder heb ik opgezocht wat in de celeigenschappen neergezet kan worden (met dank aan Tweakers) om alleen in de cel de nul niet weer te geven.
[XML]Selection.NumberFormat = "0;-0;;@"[/XML]

De code hieronder is gemaakt met het vinkje aan
[XML]Sub Kopieertest()
'
' Kopieertest Macro
'

'
Windows("Kopieer test 2.xlsm").Activate
Range("A1:A10").Select
Selection.Copy
Windows("Kopieer test 1 Public.xlsm").Activate
Range("A1").Select
ActiveSheet.Paste
End Sub[/XML]

De laatste code met het vinkje uit
[XML]Sub Test_2()
'
' Test_2 Macro
'

'
Windows("Kopieer test 2.xlsm").Activate
Range("A1:A10").Select
Selection.Copy
Windows("Kopieer test 1 Public.xlsm").Activate
ActiveSheet.Paste
End Sub
[/XML]

De twee laatste codes waarin ik kopieer met en zonder nul weergave zijn exact gelijk, daar kan ik niets mee.
De andere twee geven vooral aan wanneer en nul wordt weergegeven en wanneer niet.

Dit geeft ook aan dat de nulwaardes simpelweg niet mee gekopieerd moeten worden, alleen... hoe doe ik dat??
ik heb nergens kunnen vinden hoe ik een reeks getallen kopieer zonder dat nulwaarden mee gekopieerd kunnen worden, vandaar de hulp van meer ervaren VBA code schrijvers als ik zelf ben (ik zie mezelf als onervaren beginnend VBA knoeier).

VenA: Dat werkt inderdaad, echter is het de bedoeling dat de cellen wel blijven staan op dezelfde regel, in het uiteindelijke document horen de getallen bij een tekst, het doel is om de waarden zonder nulwaarden weer te geven maar niets te laten veranderen aan de positie van de waarden. (echter ga ik mijn best doen om jou code te begrijpen aangezien hij hetzelfde doet maar dan een ander probleem veroorzaakt:)).
 
Laatst bewerkt:
Zo dan?

Code:
Sub VenA()
  With GetObject("C:\Temp\Kopieer test 2.xlsm").Sheets("test1").Cells(1).CurrentRegion
    .Replace "0", "", xlWhole
    .Copy ThisWorkbook.Sheets("Blad1").Cells(1)
    .Parent.Parent.Close 0
  End With
End Sub
 
VenA bedankt!

Je code werkt na mijn eigen invulling perfect, ik ga alleen nog even alleen waarden plakken toevoegen (moet lukken).
Dit is wat ik ervan heb gemaakt waardoor hij perfect werkt:
(Toch ga ik jou laatste toevoeging nog even bekijken, geeft mogelijk weer een ander perspectief)


[XML]Sub VenA()
With GetObject("K:\").Sheets("verkoop").Range("AA2:AA2000")
.AutoFilter 1, "<>0"
.Copy ThisWorkbook.Sheets("Blad1").Range("AA2:AA2000")
.Parent.Parent.Close 0
End With
End Sub[/XML]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan