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

cellen horizontaal aftrrekken in excel via vba

Status
Niet open voor verdere reacties.

vbeverp

Gebruiker
Lid geworden
23 feb 2012
Berichten
17
Hallo,

Opgave vba code in excel.

De bedoeling is dat via vba code het totaal wordt gemaakt van kolom B en C
Rekening houdend dat het aantal lijnen kan verschillen.
De ene keer kunnen er 20 lijen zijn , de andere keer 200

Waarvoor dank

Test bestand in bijlage
 

Bijlagen

Welkom op dit forum

Ik zou dit zonder VBA op deze manier hebben opgelost (zie bijlage).

Heb je hier vragen of opmerkingen over, laat het gewoon even weten.
 

Bijlagen

Dit ruikt verdacht veel naar een schoolopdracht. Laat dus eerst maar eens zien wat je zelf al in elkaar gebokst hebt, of in welke richting je denkt de oplossing te moeten zoeken.
 
Hallo,

Onderstaande de code die ik voor het bestand reeds heb geschreven. Alleen wat in de cel F16 "TEST" staat weet ik de code in vba niet als er meerdere lijnen met gegevens zijn.

Bedankt.

Dim fn As Variant
Dim sPoints As String
Dim nEindRij As Integer
Dim mEindeRij As Integer
Dim i As Long
Dim strBestand As String
Dim wbIZ As Workbook
Dim wbPoints As Workbook
Dim laatsteR As Integer


If LCase(ActiveWorkbook.Name) Like "*points*" Then 'controleren of de point wel actief is
Set wbPoints = ActiveWorkbook


MsgBox ("open het bestand IZ_PC.xlsx van het kantoor in de map Basisdocumenten")

fn = Application.GetOpenFilename("Excel-files,*.xls*;*.xlsx", 1, "Select One File To Open", , False)
If TypeName(fn) = "Boolean" Then Exit Sub
Workbooks.Open fn
Sheets("Points IZ_GU").Select
Cells.Select
Selection.Copy

wbPoints.Activate
Sheets("detail IZ_GU").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Workbooks.Open fn
Application.CutCopyMode = False
ActiveWorkbook.Close




' Zoekt de eerste cel met waarde NUL

With Application

.Calculation = xlCalculationManual
.ScreenUpdating = False

End With

With ActiveWorkbook.Sheets("detail IZ_GU")

For i = 100 To 1 Step -1

If .Cells(i, "E") = "0" Then

.Cells(i, "E").EntireRow.ClearContents
End If

Next i

End With

With Application

.Calculation = xlCalculationAutomatic
.ScreenUpdating = True

End With





If Sheets("detail IZ_GU").Range("C65520").End(xlUp).Value = "Totaal" Then
nEindRij = Sheets("detail IZ_GU").Range("C65520").End(xlUp).Row
Else
nEindRij = Sheets("detail IZ_GU").Range("C65520").End(xlUp).Offset(1).Row
End If


Cells(nEindRij, "C") = "Totaal"
Columns("D:D").Select
Selection.Delete Shift:=xlToLeft

Range(Cells(nEindRij, "D"), Cells(nEindRij, Range("C4").End(xlToRight).Column)).FormulaR1C1 = "=SUM(R5C:INDEX(C,ROW()-1)) "


Range("D5").End(xlDown).Offset(0, 3).Value = " Totaal te verdelen onder het aanvraagtype EnvEnr.... in tabblad Points" & " " & " ***** Total � r�partir sous les types de demandes EnvEnr.... dans le fichier Points"
Range("D5").End(xlDown).Offset(0, 3).Font.Bold = True
Range("D5").End(xlDown).Offset(0, 3).Font.Size = 12
Range("D5").End(xlDown).Offset(0, 3).Font.Color = RGB(255, 255, 255)
Range("D5").End(xlDown).Offset(0, 3).Interior.Color = RGB(50, 120, 204)
Range(Cells(nEindRij, "D"), Cells(nEindRij, Range("C4").End(xlToRight).Column)).FormulaR1C1 = "=SUM(R5C:INDEX(C,ROW()-1)) "

Columns("G:G").EntireColumn.AutoFit

Rows("4:4").Select
Selection.AutoFilter


Cells(1, 7).Select
Selection.End(xlDown).Select
laatsteR = Selection.Row
ActiveCell.Offset(0, -1).Select
ActiveCell.Value = "test"
ActiveCell.Offset(1, 1).Select
ActiveCell.Value = "Totaal reeds verdeeld onder het aanvraagtype EnvEnr.... in tabblad Points" & " " & " ***** Total d�j� r�parti sous les types de demandes EnvEnr.... dans le fichier Points"""
ActiveCell.Font.Bold = True
ActiveCell.Font.Size = 12
ActiveCell.Font.Color = RGB(255, 255, 255)
ActiveCell.Interior.Color = RGB(85, 26, 139)




' open template detail_IZ_GU Template.xlsx
strBestand = DataManagers\Patrick\Distributie 2012\detail_IZ_GU Template.xlsx

Set wbIZ = Workbooks.Open(strBestand)
Sheets("detail IZ_GU").Select
Columns("G:G").Select
Selection.Copy

wbPoints.Activate
Sheets("detail IZ_GU").Select
Columns("F:F").Select
Selection.Insert Shift:=xlToRight
Columns("F:F").EntireColumn.AutoFit
Range("G22").Select
Range("F4").Comment.Shape.Select True
Selection.ShapeRange.IncrementLeft 112.5
Selection.ShapeRange.IncrementTop -39#
Application.CutCopyMode = False
wbIZ.Close True


Else
MsgBox "Points niet actief"
End If

End Sub
 
Verwijder de cellen met 0 in kolom D.
Code:
Sub hsv()
 With Sheets("detail IZ_GU").Cells(Rows.Count, 4).End(xlUp)
  .Offset(1).FormulaR1C1 = "=Sum(R5c:r[-1]C)"
  .Offset(1, -1) = "Totaal"
 End With
End Sub
 
Hallo Harry,

Bedankt voor uw antwoord, echter het geeft niet het beoogde resultaat.
Het is in cel F16 dat ik als resultaat wil hebben van cel F14 - F15.
de formule vindt ik niet hiervoor in vba, rekening houdend dat het aantal lijnen ken verschillen.

Vriendelijke groeten.

PamayoBekijk bijlage Test.xls
 
F14 = leeg
F15 = leeg
F16 = F14-F15 ???????????

Schiet mij maar lek, maar ik begrijp je niet.
Doe er eens een goed bestandje bij wat je wil bereiken.
 
Bekijk bijlage Test.xlsoeps, celen niet juist genoemd. in cel F16 dien het resultaat te komen van cel D16-E16, wetende dat het aantal lijnen kan verschillen.( in een ander bestand kan men 100 lijnen hebben met gegevens) Daar zoek ik nu de juist formule voor in vba.

Met dank.

Pamayo
 
Kijk dan toch nog eens naar de oplossing genoemd in #2.

Daarmee voorkom je de problemen van het wisselend aantal rijen.
 
Code:
With Sheets("detail IZ_GU")
Endrow = .Range("D65536").End(xlUp).Row
For i = Endrow To 1 Step -1
    If .Cells(i, "D") = "0" Then .Cells(i, "D").EntireRow.ClearContents
Next
Endrow = .Range("D65536").End(xlUp).Row
If .Range("C" & Endrow) = "Totaal" Then
    .Range("C" & Endrow).EntireRow.Delete
    Endrow = Endrow - 1
End If
 .Range("C" & Endrow + 1) = "Totaal"
 .Range("D" & Endrow + 1) = WorksheetFunction.Sum(.Range("D3:D" & Endrow))
 .Range("E" & Endrow + 1) = WorksheetFunction.Sum(.Range("E3:E" & Endrow))
 .Range("F" & Endrow + 1) = .Range("D" & Endrow + 1) - .Range("E" & Endrow + 1)
End With
 
Ok, bedankt Rudi.

Dat werkt al veel beter.

Ronde Aantal IZ in getal Bij individuele ingeschreven zendingen voegen
PAK-305 0,074468085
RBU-301 0,553191489
RBU-305 8,723404255
REG-301 0,095744681
REG-302 0,021276596
REG-303 0,095744681 0,095744681
Reg-305 0,015957447
REG-307 0,388297872 0,388297872
REG-310 0,021276596
REG-311 0,026595745
ZZZ-999 0,021276596
Totaal 10,03723404 0 10,03723404

Is het ook mogelijk dat de formule in Cel E,F 16 blijft staan, zodat als men in kolom E cijfers zet het totaal automatisch wordt aangepast?

Alvast bedankt.

Vriendelijke groeten.

Pamayo
 
Code:
.Range("E" & Endrow + 1) = "=SUM(R5C:INDEX(C,ROW()-1)) "
 .Range("F" & Endrow + 1) = "=RC[-2]-RC[-1]"
 
Bedankt Rudi.

Dit was het beoogde resultaat dat ik wenste.
Bedankt allszins en tot volgende keer.

Vriendelijke groeten.

Pamayo :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan