Gå till innehåll

MH_

Medlem
  • Innehållsantal

    178
  • Gick med

  • Dagar vunna

    20

Ytterligare profilinformation

  • Från
    stötande

Senaste besökare till profilen

Blocket med senaste besökare är inaktiverat och visas inte för andra besökare.

MH_'s Achievements

  1. Typ samma sak hur man än gör. Villkordsstyrd formatering kräver något slags uppdatering. Och för att Slippa "överfärgningen" måste du se till att "ingen färg" INTE är vald i villkoret.
  2. Hej. "Private Sub Worksheet_SelectionChange(...." ligger i boken. Inte i din excel (om du högerklickar på fliken och begär "visa kod" så ser du att den hör till fliken). Jag antar att du hämtar akuell rad via något i stil med: =RAD()=RAD(INDIREKT(CELL("adress"))) Och den triggas ju bara av att du verkligen går in och redigerar något i en cell eller uppdaterar. Det är väl därför de gjorde "Application.Calculate". Så jag tror faktiskt att det är lite kört om du vill behålla Undo (om du inte vill skriva egna hanterare med hjälp av Application.OnUndo/Application.Undo). En variant för att lösa ditt problem är att radera dina villkor och skapa dom med ett makro så att du har kontroll. Typ (inspelat): Sub Makro1() Cells.Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=RAD()=RAD(INDIREKT(CELL(""adress"")))" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Borders(xlTop) .LineStyle = xlContinuous .Color = -16776961 .TintAndShade = 0 .Weight = xlThin End With With Selection.FormatConditions(1).Borders(xlBottom) .LineStyle = xlContinuous .Color = -16776961 .TintAndShade = 0 .Weight = xlThin End With End Sub Som du ser berörs inte "Interior" överhuvudtaget. Men om du hade kört manuellt och gått in i fliken fyllnadsfärg så är risken uppenbar att "Mönster= inget" skulle ingå i villkoret. På VBA'ska något i stil med: With Selection.FormatConditions(1).Interior .Pattern = xlNone .TintAndShade = 0 End With (test att spela in så ser du hur känslig excel är) Om du skall köra en händelsehanterare så kan du även fundera på om du inte skall dumpa aktuellt radvärde någonstans på bladet. typ "A1" och skippa CELL() formeln helt Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.CutCopyMode = False Then Range("A1").Value = Target.Row End If End Sub och låta villkoret du skapar hänvisa dit istället: Sub Makro1() Cells.Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=RAD()=$A$1" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Borders(xlTop) .LineStyle = xlContinuous .Color = -16776961 .TintAndShade = 0 .Weight = xlThin End With With Selection.FormatConditions(1).Borders(xlBottom) .LineStyle = xlContinuous .Color = -16776961 .TintAndShade = 0 .Weight = xlThin End With End Sub Fast någon annan cell än A1 naturligtvis. Det borde gå att skapa en "public funktion" och hänvisa dit. Men vem orkar.
  3. jag testade ditt dokument och det funkar att markera alla dokument om du gör det via Ctrl+G Ctrl+G+[special...] objekt->[Ok] Då blir alla dina dolda rutor markerade och du kan trycka [Del] eller [Backspace] eller högerklicka och välj "klipp ut" Har ingen aning om hur de skapades. Är det en mall du fått av någon? Autoshapes känns gammalmodigt. Kan det vara något som har skapats när du försökt spara ett dokument i kompabilitetsläge?
  4. Blir det överhuvudtaget något markerat när du går till: Ctrl+G+[special...]->objekt->[Ok] Eller får du meddelandet "Hittar inga objekt"? ******************************************************** Om det skapas objekt ur "tomma intet" så måste det nästan ligga händelseaktiverad kod. Vad ser du om du: Högerklickar på fliknamnet (längs ner på fliken) och begär "visa kod" Är det ett helt tomt kodfönster eller ligger det kod däri? ********************************************************
  5. Fritt ur minnet. Snabbkommandot för "gå till" Ctrl+g eller [F5] Någon "merknapp" - > objekt. Då markeras alla objekt>delete
  6. Kolla Youtuben från 8:08 ungefär https://youtu.be/OS7BPjTy3H0?t=487 I VBA-editorn Verktyg->referenser Bläddra ner till, och välj, MicrosoftVBscriptRegularexp... Sen kan du använda regexp för att se om cellen passar mönstret. Tyvärr blir jag inte klok på hur du bygger delar som i word om du skulle vilja köra replace. Men du kan använda vanliga vänster/extext och helt enkelt byta ut det 24:e tecknet mot en radbrytning (chr(10) - jag kommer inte ihåg om en radbrytning har koden 10 eller 13, testa) Sub MönsterMatch() ' hämtar regexp till ett eget objekt regex (eller vad det heter, se Youtuben) Dim regEx As New regexp regEx.Global = True Dim rCell As Range ' Sökmönstret = radstart (^), 23 tecken, mellanslag, 13 tecken, radslut ($) ' i engelsk regexp så avänds "." istället för "?" för att ange "vilket tecken som helst" regEx.Pattern = "^.{23} .{13}$" ' gå igenom alla celler i det markerade området For Each rCell In Selection.Cells ' OM cellen passar mönstret så hämtar du de vänstraste 23 tecknen, skriver en radbrytning och hämtar tecken 25+13 If regEx.Test(rCell.Value) = True Then sOld = rCell.Value rCell.Value = Left(sOld, 23) & Chr(10) & Mid(sOld, 25, 13) End If Next rCell End Sub Du får anpassa mönstret 23 mellanslag 13 så att det passar det du faktiskt har. Om du vet att det alltids skall starta/sluta på samma sätt så kan du göra sökningen säkrare gemom att ändra söksträngen.
  7. Men markera alla kolumner med tgb då? Ctrl+A? i värsta fall 2 ggr om den bara markerar aktuellt område (nytt hyss i excel, men på det stora hela smart)
  8. Excel kan söka med jokertecken. Men så vitt jag vet kan du inte föra över det till ersätt med. Word har "mönstermatchning" som är en en variant av "Regular Expression" (På svenska heter det något annat än mönstermatchning utanför Microsoft, men det är blankt i skallen) https://support.microsoft.com/sv-se/topic/exempel-på-jokertecken-939e153f-bd30-47e4-a763-61897c87b3f4 Då kan du bygga delar där varje parantes är ett uttryck. T.ex (börja med 23 valfria tecken) (mellanslag) (13 valfria tecken) (<?{23})( )(?{13}) och sedan ersätter du med Sökuttryck1, radbrytning, Sökuttryck3 \1^l\3 ***************************** Ok, det var Word...************ Det finns tillägg som ger excel RegEx. Men det känns jobbigt.... Kolla här t.ex: https://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops https://www.youtube.com/watch?v=OS7BPjTy3H0
  9. Har aldrig sett något snabbkommando så du får nog köra ett [ALT]-paket Start->celler->format->autoanpassa kolumnbredd. Som bonus är det inte en enda begynnelsebokstav du kan hänga upp det på: [ALT]+w, o, f, u Eller, I Australien har de vänstertrafik, så där bör du nog köra automatväxlat för att få en sak mindre att tänka på. Och en australiensisk hund som skäller kanske transkriberas till Wofu? Nehej, det var inte till någon hjälp. Bahhh, otacksamma värld.
  10. Jag är 67,521% säker på att outlook bara bjuder på färgmarkerignarna i Arkiv->alternativ->kalender: arbetstider. Då börjar i alla fall kalendern på rätt tid. + formateringarna i Mikaels dialogruta En snabbgoogling tyder på att det är ett gammalt önskemål att zooma in, eller bara visa arbetstimmarna så jag skulle inte sätta champagne på kylning (inte ens en gång om jag hade gillat bubbel)... Men samtidigt känns det du önskar bekant. Kan det vara någon Android-kalender som hade den funktionen?
  11. Jag slarvade när jag skrev det på telefonen utan att kunna kolla formeln. Jag menade naturligtvis: =DELATEXT(FORMELTEXT(A1);"+")
  12. Min dator struntar i gemener/versaler. MEN! när jag kollar så verkar ActiveWorkbook.SaveAs Inte använda ActiveWorkbook.path utan någonting i stil med systemets aktuella mapp (CurDir - ish) Så dina fel kan bero på att excel försöker skriva i mappar den inte skall skriva i. Bahhh Och Det verkar inte som att man kan ändra enbart sökvägen för "ActiveWorkbook.SaveAs" https://learn.microsoft.com/sv-se/office/vba/api/excel.workbook.saveas FileName: "A string that indicates the name of the file to be saved. You can include a full path; if you don't, Microsoft Excel saves the file in the current folder." Så du får nog köra word-koden och klistra ihop det nya namnet/sökvägen här också Sub PutinÄrEnSfinkterprotes() Dim iX As Integer Dim strFilnamn As String iX = ActiveWorkbook.FileFormat strFilnamn = ActiveWorkbook.Path & "\" & _ Replace(ActiveWorkbook.Name, ".xls", ".xlsx", , , vbTextCompare) If (iX = 16) Or (iX = 27) Or (iX = 29) Or (iX = 33) Or (iX = 39) Or (iX = 39) Or (iX = 56) Or (iX = 43) Or (iX = -4143) Then ActiveWorkbook.SaveAs Filename:=strFilnamn, FileFormat:=xlOpenXMLWorkbook End If ActiveWorkbook.Close End Sub (vbTextCompare gör sökningen okänslig för stora/små bokstäver)
  13. Jag använder av princip tangentbordet [Alt]+[F11] Samma som i excel
  14. Excel ändrade matrishanteringen för ett tag sen och jag TROR inte att excel 19 och 365 körs på samma sätt. I nyare excel hanteras alla formler som matriser och du måste berätta för excel när du vill hantera det som en-svarsformler (med @-tecknet). I äldre excel var det helt tvärs om. Som standard levererade formler bara ett svar och du måste berätta om du ville hantera den som en matris https://support.microsoft.com/sv-se/office/riktlinjer-för-och-exempel-på-matrisformler-7d94a64e-3ff3-4686-9372-ecfd5caa57c7 Vi börjar med din vanliga summering i A1. Testa att skriva in den här formeln någonstans: =DELATEXT(FORMELTEXT(A1)) Hamnar svaret en, eller tre, celler? Om det bara blir en cell. Skriv in formeln, ställ dig i cellen och tryck ner tangenterna [Ctrl]+[Shift]+[Enter] Då borde svaret hamna i tre celler. (Och formeln får "måsvingar") {=DELATEXT(FORMELTEXT(A1))} Gör samma sak med dina medel-formler. Men jag är INTE helt säker eftersom jag aldrig kört FORMELTEXT eller DELATEXT i äldre Excel. PS: Visst är det knäckande att Excel 2019 redan ses som gammalt? Jag körde Office 2010 i ca 10 år innan den började kännas gammal. 😞 /Ds
  15. Jag antar att de användes när de körde Sök/ersätt? I din kod ser jag ingen användning för det eftersom du kör "ActiveDocument" . Eller?
×
×
  • Skapa nytt...