03. august 2012 - 22:39Der er
39 kommentarer og 1 løsning
Forskelige makro hjælp søges.
Hej eksperter!
Jeg har brug hjælp til forskellige makro i excel 2007.
1. Den makro jeg har insat nulstiller alt, men vil gerne have af den ikke nulstiller formlerne i cellerne: "B1:B31,D1:D31,F1:F31,H1:H31,J1:J31" fks. af mine formler stadig er i de celler. når jeg bruger makro.
Public Sub Nulstil() Application.ScreenUpdating = False For Each cc In Range("B1:B31,C1:D31,D1:D31,E1:E31,F1:F31") cc.Value = "" Next
Application.ScreenUpdating = True MsgBox "Nulstilling udført" End Sub
2. Makro der godkender dage. fks. er alle i cellerne: "B1:B31,C1:D31,D1:D31,E1:E31,F1:F31" sorte, men så længe de ikke er godkendt er teksten rød.
3. Makro der godkender mdr og gemmer/logger cellerne i ark2. skal kunne huskes op til 36 mdr. (om så der skal bruges 36 ark)
4. kan man lave en makro til af udskrive excel filen hvor med af "figurerne" ikke røger med? så fks. ved excel af det er market (og kun udskriver kun det der er markeret hver gang.?)og af den laver en PDF fil og gemmer det et sted på en bestemt placerning inden den udskriver.
5. Makro der kan hente de celler som i 3. har gemt. hvor med man kan hente det til senere brug. hvor med man udfylder hviken mån man vil have fat i og så køre man makro, og så klare excel resten.
Har søgt lidt efter det. men har ikke fundet noget andet brugbar andet end den øvereste makro. jeg vil stadig gerne søge efter det, men vil være taknemlig over hjælp fra en/flere!
Digitale certifikater er fundamentet for tillid. Nu ændres vilkårene, og der stilles helt nye krav til, hvordan I arbejder med overblik og styring.
Slettet bruger
04. august 2012 - 00:25#1
har fundet denne løsning til 1. men er der ikke en nemmere måde af gøre det på? så jeg ikke skal lave en for hver celle.?
Public Sub Nulstil() Application.ScreenUpdating = False For Each cc In Range("A1:A3,B1:B3") cc.Value = "" Next
Application.ScreenUpdating = False For Each cc In Range("C1:C1") cc.Value = "=B1*A1" Next
Application.ScreenUpdating = False For Each cc In Range("C2:C2") cc.Value = "=B2*A2" Next
Application.ScreenUpdating = False For Each cc In Range("C3:C3") cc.Value = "=B3*A3" Next
Application.ScreenUpdating = False For Each cc In Range("D1:D1") cc.Value = "=C1*B1" Next
Application.ScreenUpdating = False For Each cc In Range("D2:D2") cc.Value = "=C2*B2" Next
Application.ScreenUpdating = False For Each cc In Range("D3:D3") cc.Value = "=C3*B3" Next
Application.ScreenUpdating = False For Each cc In Range("E1:E31") cc.Value = "=D1/C1+B1+A1" Next
Application.ScreenUpdating = False For Each cc In Range("E2:E2") cc.Value = "=D2/C2+B2+A2" Next
Application.ScreenUpdating = False For Each cc In Range("E3:E3") cc.Value = "=D3/C3+B3+A3" Next
Application.ScreenUpdating = True MsgBox "Nulstilling udført" End Sub Application.ScreenUpdating = False For Each cc In Range("E1:E1") cc.Value = "=D1/C1+B1+A1" Next
Application.ScreenUpdating = True MsgBox "Nulstilling udført" End Sub
Synes godt om
Slettet bruger
04. august 2012 - 00:27#2
VDR: #1 sætter den lige ordenligt ind:
Public Sub Nulstil() Application.ScreenUpdating = False For Each cc In Range("A1:A3,B1:B3") cc.Value = "" Next
Application.ScreenUpdating = False For Each cc In Range("C1:C1") cc.Value = "=B1*A1" Next
Application.ScreenUpdating = False For Each cc In Range("C2:C2") cc.Value = "=B2*A2" Next
Application.ScreenUpdating = False For Each cc In Range("C3:C3") cc.Value = "=B3*A3" Next
Application.ScreenUpdating = False For Each cc In Range("D1:D1") cc.Value = "=C1*B1" Next
Application.ScreenUpdating = False For Each cc In Range("D2:D2") cc.Value = "=C2*B2" Next
Application.ScreenUpdating = False For Each cc In Range("D3:D3") cc.Value = "=C3*B3" Next
Application.ScreenUpdating = False For Each cc In Range("E1:E31") cc.Value = "=D1/C1+B1+A1" Next
Application.ScreenUpdating = False For Each cc In Range("E2:E2") cc.Value = "=D2/C2+B2+A2" Next
Application.ScreenUpdating = False For Each cc In Range("E3:E3") cc.Value = "=D3/C3+B3+A3" Next
Application.ScreenUpdating = True MsgBox "Nulstilling udført" End Sub
Sub GodkenderSort() For Each c In Range("B1:F31") 'Hvis cellen er "tom" springes til næste celle If c.Value = "" Then GoTo Tom
If c.Font.ColorIndex <> 1 Then 'Hvis cellen ikke har farve 1 (Sort) MsgBox c.Address & " Har forkert farve" & vbCrLf & _ "Farve nr: " & c.Font.ColorIndex & vbCrLf & _ "Cellens indeholder: " & c.Value
'Hvis cellen har farve 1 (Sort) Else MsgBox c.Address & " Har rigtig farve ( OK )" & vbCrLf & _ "Farve nr: " & c.Font.ColorIndex & vbCrLf & _ "Cellens indeholder: " & c.Value End If Tom: Next c End Sub
Synes godt om
Slettet bruger
05. august 2012 - 00:39#7
#Store-morten når jeg tænker over det så nej, behøver den ikke skrive det igen, men hjælper mig med af forstå lidt af det bedre jo mere jeg leger med det :).
GodkenderSort koden, gør ikke helt hvad jeg vil have, har fundet en ligne jeg skal bruge i den som er:
Sub TEST123() If (Range("D1") + Range("E1")) <> 0 Then Range("I8").Value = Range("I8").Value + 1
men der ved skal den fks. teksten skal være rød fra starten af, når man så køre koden, skal teksten blive sort, (der skal ikke være msgbox på) og så må man meget gerne kun kunne godkende de dage som har været der/samme dag, men aldrig nogle dage vi ikke er nået til.
#Supertekst en super kode som jeg faktisk kan bruge til noget af det jeg skal opbygge i excel. da den virker nemmere end den anden kode.
Laver jeg en figur og trykker på den så den køre koden, skal teksten blive sort. der ved af denne del skal gøre:
Sub TEST123() If (Range("D1") + Range("E1")) <> 0 Then Range("I8").Value = Range("I8").Value + 1
er at den skal tælle hvor mange gange der bliver trykket på figuren, som så røger over under figuren. jeg har set det i et excel ark et sted på nettet, men ja, gemte ikke koden da jeg ikke kunne tyde det den gang, :).
Koden gennem løber område B1:F31. Skal den det det?
Synes godt om
Slettet bruger
05. august 2012 - 02:32#12
i dette tilfælde A1:B3 (da det er et test afk, jeg laver koden om når jeg bruger det i det rigtige ark) - sidder med et test ark da der er privat info i det rigtige ark jeg er i gang med. (så nemmere af sende et test ark hvis det var det der skulles ske på et tidspunkt ;))
'Hvis cellen ikke har farve 3 (Rød) If Not c.Font.ColorIndex <> 3 Then 'Hvis D1+E1 ikke er 0 If (Range("D1") + Range("E1")) <> 0 Then 'Ændres Font farve til "Automatisk" c.Font.ColorIndex = -4105 End If End If Next 'Celle I8 tæller 1 op Range("I8").Value = Range("I8").Value + 1 End Sub
Sub GodkenderTest() For Each c In Range("B1:F31") 'Række der behandles rk = c.Row 'Hvis cellen ikke har farve 3 (Rød) If Not c.Font.ColorIndex <> 3 Then 'Hvis D1+E1 ikke er 0 If Range("D" & rk) + Range("E" & rk) <> 0 Then 'Ændres Font farve til "Automatisk" c.Font.ColorIndex = -4105 End If End If Next 'Celle I8 tæller 1 op Range("I8").Value = Range("I8").Value + 1 End Sub
Synes godt om
Slettet bruger
05. august 2012 - 18:41#15
#Store-Morten det var sådan jeg havde tænkt mig, det kunne være godt hvis man kunne tilføje i F1:31 datoere, og af de dage der ikke har været der kunne godkendes. men ved ikke lige om det er muligt :)?
Synes godt om
Slettet bruger
05. august 2012 - 18:49#16
Update med:
3. pt. jeg er nået til. men ville gerne have den til af logger tal/bogstaver så den ikke logger selve formler.
4. Pt. jeg er nået med denne formel, men kunne godt tænke mig af den gemmer selv på min nas server, samt med af den kun gemmer fra A1:G40 i PDF fil så jeg ikke får alle de der figure med, (ved ikke om det er muligt. og evt. den altid printer A1:G40. så den ikke spørger ikke om hvilket ark.
Public Sub XLS_Til_Pdf_Print() Dim stiNavn As String, filNavn As String, fil As String, sti As String Dim temp As Variant, xlsObj As Object
stiNavn = Application.GetOpenFilename 'ønskede fil udpeges temp = Split(stiNavn, "\") filNavn = temp(UBound(temp)) temp = Split(filNavn, ".") fil = temp(0) temp = Split(stiNavn, filNavn) sti = temp(0) 'kan erstattes af anden sti
Set xlsObj = CreateObject("Excel.application") xlsObj.Workbooks.Open stiNavn
Sub GodkenderTest() For Each c In Range("B1:F31") c.Activate 'Række der behandles rk = c.Row 'Hvis cellen ikke har farve 3 (Rød) If Not c.Font.ColorIndex <> 3 Then 'Hvis D+E ikke er 0 og "Dato" ikke forekommet If Range("D" & rk) + Range("E" & rk) <> 0 And Range("F" & rk) < Now Then 'Ændres Font farve til "Automatisk" c.Font.ColorIndex = -4105 Else MsgBox "Active celle kan ikke godkendes" End If End If Next 'Celle I8 tæller 1 op Range("I8").Value = Range("I8").Value + 1 End Sub
Synes godt om
Slettet bruger
05. august 2012 - 20:30#20
Den er perfekt hvis den springer tomme celler over :).
Sub GodkenderTest() For Each c In Range("B1:F31") c.Activate 'Hvis cellen er "tom" springes til næste celle If c.Value = "" Then GoTo Tom 'Række der behandles rk = c.Row 'Hvis cellen ikke har farve 3 (Rød) If Not c.Font.ColorIndex <> 3 Then 'Hvis D+E ikke er 0 og "Dato" ikke forekommet If Range("D" & rk) + Range("E" & rk) <> 0 And Range("F" & rk) < Now Then 'Ændres Font farve til "Automatisk" c.Font.ColorIndex = -4105 Else If Range("F" & rk) = "" Then GoTo Tom MsgBox "Active celle kan ikke godkendes" End If End If Tom: Next c 'Celle I8 tæller 1 op Range("I8").Value = Range("I8").Value + 1 End Sub
Synes godt om
Slettet bruger
05. august 2012 - 20:48#23
yup, hvis der kommer en tom celle i en hel række, skal den bare springes over.
Sub Logge_Data_2() Set x = Sheets("Ark1").Range("G6") Sheets("Ark2").Range("A10000").End(xlUp).Offset(1, 0) = x.Value End Sub
Synes godt om
Slettet bruger
06. august 2012 - 00:28#29
kan jeg se :p. - jeg har brug for en der logger data, og så når den logger igen, skal den "gemme" i samme celle. så hvis den gemmer 505 og næste gang den gemmer er 1596 skal den være i samme celle som "505" så den faktisk bare sletter 505 og overføre 1596 :), er det muligt,
og har du en ide til af overføre fks. K1:O31 (det er 31 celler ned af og 5 rækker data) - kan ikke få =HVIS.FEJL(LOPSLAG( eller =SLÅ.OP til det :p
Så på Ark1 celle? skal der hentes data fra Ark2 celle? Med markro eller formel? (Lopslag eller andet) En celle af gangen eller alle på en gang?
Synes godt om
Slettet bruger
06. august 2012 - 01:00#34
Gerne med makro hvis det er nemmere. eller nu starter vi lige forfra, for det fylder lidt mere end K1:031.
Ark1:
der er data i alle celler/rækker så det ser sådan ud: A1:O70 de er så blevet logget til ark2 i cellerne: A1:O70 nu skal vi/jeg prøve se af flytte dem fra ark2 til ark1. fks. ved af skrive "januar" sted så den henter fra den mdr.
så næste mdr jeg logger ark1 til ark2 så det ser sådan ud: A145:O70 og der ved hvis jeg vil hente kan man skrive "februar" og så logges det bare videre der ud af,
Private Sub CommandButton1_Click() Dim md As String md = InputBox("Tast måned som nr. 1 til 12", "Vælg måned der skal flyttes")
'Hvis der står noget i cellen If Len(md) > 0 Then 'Er det en talværdi (numerisk)? If IsNumeric(md) Then 'Er talværdien mellem 1 og 12 If md > 0 And md < 13 Then Start = md * 70 - 69 slut = md * 70 'Henter her Set x = Sheets("Ark3").Range("A" & Start, "O" & slut) 'Indsætter her Sheets("Ark3").Range("Q1:AE70") = x.Value 'Sheets("Ark3").Range("Q" & Start, "AE" & slut) = x.Value Else MsgBox "Talværdien skal være mellem 1 og 12", , "Fejl indtastning!" CommandButton1_Click End If Else MsgBox "Du skal skrive en talværdi", , "Fejl indtastning!" CommandButton1_Click End If End If MsgBox "Det er vist skidt, at du slet ikke tør prøve!", , "Chancel eller 'Tom'!" End Sub
Synes godt om
Ny brugerNybegynder
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.