Avatar billede Jolle Praktikant
28. juni 2018 - 13:52 Der er 7 kommentarer

Excel amatør søger hjælp til macro!

Jeg arbejder for et firma som tager på messer et par gange om året, vi har tidligere haft ordre-sedler med, som vi skriver på.

Men jeg vil gerne gøre det lidt nemmere for vores sælgere, og har derfor fået den gode ide at bruge vores prisliste, som allerede er et Excel-ark, hvor alt relevant info er skrevet ind.

Ark'et består af 9 Kolonner, med "Varenr", "EANnr", "Varenavn", "Størrelse", "Kolli", "Netto Pris", "Vejl. Pris"
Den første og den sidste kolonne er tomme
Ark'et er på 450 rækker

Mit problem er at hvis en kunde kun skal have 5 forskellige produkter, så skal jeg markere de rækker hvor produktet er, og kun udskrive de enklte. Men det er noget roderi og ikke en god løsning..

Jeg har derfor kunne læse mig frem til at Macro'er er vejen frem, så jeg har været ude og hente en på nettet som skulle kunne gøre det jeg leder efter

Den er her

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160913
    Dim xRg As Range
    Application.ScreenUpdating = False
        For Each xRg In Range("J7:J450")
            If xRg.Value = "" Then
                xRg.EntireRow.Hidden = True
       
            Else
                xRg.EntireRow.Hidden = False
            End If
        Next xRg
    Application.ScreenUpdating = True
End Sub

Problemet er, at så snart jeg skriver en værdi ind i kolonne J så forsvinder alt andet..
I princippet fungere macro'en fint, vil bare gerne have JEG skal aktivere den, og ikke at den gør det automatisk. Men da jeg er mega amatør aner jeg ikke hvordan jeg ændre det!

Håber der er en venlig sjæl som kan forstå mig, og gider hjælpe :D

Venlig Hilsen Jonas
Avatar billede igoogle Forsker
28. juni 2018 - 14:46 #1
Du kan lave en knap der gør det og så ændre

Sub print
    Dim xRg As Range
    Application.ScreenUpdating = False
        For Each xRg In Range("J7:J450")
            If xRg.Value = "" Then
                xRg.EntireRow.Hidden = True
       
            Else
                xRg.EntireRow.Hidden = False
            End If
        Next xRg
    Application.ScreenUpdating = True
end sub
Avatar billede Jolle Praktikant
28. juni 2018 - 14:47 #2
Jeg prøver ! :D
Avatar billede Jolle Praktikant
28. juni 2018 - 14:50 #3
Umildbart siger den fejl på "Sub print"

Det står i hvert fald med rødt, og den skriver "Compile Error: Expected: identifier"
Avatar billede igoogle Forsker
28. juni 2018 - 15:29 #4
min fejl,

print er en funktion og kan derfor ikke bruges som navn.

sub navn()
Avatar billede Dan Elgaard Ekspert
28. juni 2018 - 17:58 #5
Du må ikke kalde din makro for 'Print', da dette er en metode tilknytte mange objekter!

Omdøb din makro til 'Udskriv', og det vil virke...
Avatar billede store-morten Ekspert
28. juni 2018 - 19:29 #6
Hvis du har:
"Varenr", "EANnr", "Varenavn", "Størrelse", "Kolli", "Netto Pris", "Vejl. Pris"
i række 6

Kan du lave en lille ændring i koden:
Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160913
    Dim xRg As Range
    Application.ScreenUpdating = False
        For Each xRg In Range("J7:J450")
            If xRg.Offset(-1, 0).Value = "" Then
                xRg.EntireRow.Hidden = True
            Else
                xRg.EntireRow.Hidden = False
            End If
        Next xRg
    Application.ScreenUpdating = True
End Sub
Den køres hver gang du laver en indtastning, ikke kun i kolonne J
Ændringen gør at du altid har en "tom" linje.
Avatar billede store-morten Ekspert
28. juni 2018 - 19:40 #7
Du kan evt. tilføje så makroen kun køres hvis der ændres i området B7:J450
Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160913
    Dim xRg As Range
'Hvis der ændres i område:
If Not Intersect(Target, Range("B7:J450")) Is Nothing Then
    Application.ScreenUpdating = False
   
        For Each xRg In Range("J7:J450")
            If xRg.Offset(-1, 0).Value = "" Then
                xRg.EntireRow.Hidden = True
            Else
                xRg.EntireRow.Hidden = False
            End If
        Next xRg
End If
    Application.ScreenUpdating = True
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester