Gå till innehåll

MH_

Medlem
  • Innehållsantal

    180
  • Gick med

  • Dagar vunna

    20

Allt postat av MH_

  1. ingen aning. Men om man tittar på reklam "videon" som loopar på den här sidan: https://eu.switch-bot.com/collections/home-automation/products/switchbot-curtain-3 så verkar den nästan låsas fast när man monterar Nu skall jag bara gå med i en frikyrka och försöka få dom att bota mig från det här anfallet av akut prylbögeri (bara för att behovet är 0 behöver man väl inte avstå från något, eller?)
  2. Det är bra att du läser vad jag menar och inte vad jag skriver.
  3. Om du alltid gör om importen till exceltabeller så kan du även använda "tabell-hänvisning" i excel. Dvs något i den här stilen: =SUMMA.OM(Tabell2[Väggkod];K1;Tabell2[sum Im]) Det blir kanske lite mer som du tänker?
  4. Kolla in summa.om() https://support.microsoft.com/sv-se/office/funktionen-summa-om-169b8c99-c05c-4483-a712-1697a653039b Exempel, letar i kolumn A och summerar kolumn H när villkoret är uppfyllt =SUMMA.OM(A:A;"IV_96GG2";H:H) Eller så här om du vill skriva in villkoret i cell K1 =SUMMA.OM(A:A;K1;H:H) då kan du lägga en rullgardin/val -lista i K1 https://support.microsoft.com/sv-se/office/video-skapa-och-hantera-listrutor-28db87b6-725f-49d7-9b29-ab4bc56cefc2 Om du har flera tabeller så kan du ha en formel för varje tabell och lägga ihop värdet: =SUMMA.OM(A2:A9;K1;H2:H9)+SUMMA.OM(A12:A30;K1;H12:H30)
  5. [Alt], p, q, s, [Alt], d/t Du får alltså börja om med ALT när du har fått fram sidhuvud/sidfot
  6. MH_

    Roliga avigheter

    Det mest deprimerande är att Lo-katterna missade chansen att rehabilitera kattsläktets rykte. Men redan efter 12 sekunder så visar ett av syskonen sitt rätta jag.
  7. Hej. Antag att vikten du letar efter står i E2 och din hjälptabell står i A2:B5. Då kan du använda XLETAUPP Funktionen XLETAUPP - Microsoft Support =XLETAUPP(E2;$A$2:$A$5;$B$2:$B$5;;1) Med Error-text: =XLETAUPP(E2;$A$2:$A$5;$B$2:$B$5;"Utanför tabellområdet";1) Den sista 1:an står för: matchningsläge "1 – Exakt matchning. Returnerar nästa större objekt om ingen hittas." Det betyder att om du skriver in vikten 501 i E2 så blir det fel. Så på sista raden får du skriva in något jättehög viktsiffra som gäller för alla paket som är större än näst högsta. testa.
  8. i rimlighetens namn är det väl bara att lägga in något precis innan "end sub"? Då borde den ha loopat alla filer Next i msgbox "Fääääääärdig" End Sub
  9. MH_

    Roliga avigheter

    Du har en produkt som ligger rätt i tiden. Ni har äntligen identifierat rätt målgrupp. Gullig hund fotograferad och en stor/dyr annonsen slängs in i expressen. Ta en kopp kaffe, njut och inse att de små detaljerna kan förstöra allt . Tex att att någon råkar byta ut för mot till . https://kampanj.expressen.se/alvarpet/insektsmat-darfor-har-det-blivit-populart-att-ge-till-hunden/ Ok, det är bara Mikael som uppskattar såna här fel - men han måste ju också få ha det lite kul.
  10. Ok. Men då hamnar du i den besvärliga situationen att du måste (?) använda något slags händelsehanterare för att upptäcka att någon klickat. Exempel för dubbelklick: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'kopiera ibland, klistra in ibland End Sub Och då måste du veta om du verkligen är i "klipp och klistra läge" samt om du vill kopiera eller klistra in om di deklarerar en räknare (i) utanför själva händelsehanteraren och lägger till en etta varje gång den körs så kan du kolla om du är i udda (kopieringsläget) eller klistra in (jämt). I exemplet kör jag en tilldelning eftersom VBA och klipp/klistra aldrig blir som jag vill. Dim i As Integer Dim källa As Range Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If i Mod 2 = 0 Then Set källa = Target Else Target.Value = källa.Value End If i = i + 1 End Sub Men då är det aktivt så fort du dubbelklickar på bladet och du måste komma på något sätt att koppla på/av händelsebevakningen. Om du kör ett "vanligt" makro så vet jag i stället inte hur du skall känna av klick. Exempel där du har två start/stopmakron som du kanske styr via knappar eller liknande. Option Explicit Dim i As Integer Dim bKör As Boolean Dim källa As Range Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If bKör = False Then Exit Sub Target.Activate If i Mod 2 = 1 Then Set källa = Target Else Target.Value = källa.Value End If i = i + 1 End Sub Sub starta() bKör = True i = 1 End Sub Sub sluta() bKör = False End Sub men om du kör det här ett par gånger så märker du att jag är snäll när jag påstår att det funkar "så där". i princip fins det inget som förhindrar att du kör "Worksheet_SelectionChange" istället. så slipper du dubbelklickandet Private Sub Worksheet_SelectionChange(ByVal Target As Range) If bKör = False Then Exit Sub Target.Activate If i Mod 2 = 1 Then Set källa = Target Else Target.Value = källa.Value End If i = i + 1 End Sub men då är det ännu mer som kan gå snett. Den stora nackdelen är väl att de här är bundet till ett blad. Du kan inte lägg ain makrot i någon masterbook. Även om du kan få dubbelklicksvarianten att funka för ett helt blad med Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) ... End Sub Nej. Det kräver nog mer jobb än du har nytta.
  11. Jag antar att du är ute efter samma sak som man kan göra med format-penseln? Dvs om man markerar en cell/område med önskat format och dubbelklickar på pensel-ikonen så får alla celler man markerar på det formatet, ända tills man stänger av funktionen genom att klickar på penseln igen. Så vitt jag vet kan man inte göra något liknande för innehåll i excel. Och ett makro skulle bli väldigt svårskrivet - i princip måste du ha ett "vanligt" makro som aktiverar en händelsehanterare som klistrar in så fot du aktiverar en cell osv. Sen skall händelse-makrot dödas/avaktiveras när du är färdig. Eller också ligger det aktivt hela tiden och körs varje gång du markerar en cell, men inklistringen aktiveras bara om villkor x är uppfyllt. Du kan få nästan samma funktion genom att kopiera din källcell. Sen aktiverar du alla målceller innan du klistrar in (håll inne Ctrl och klicka på alla målceller innan du kör Ctrl+V). Det borde duga rätt långt.
  12. Dubbelklicka på den lodrätta axeln. Då för du fram "formatera axel" Där vill du ändra "huvudenhet" till 5 timmar. Problemet är att du inte får skriva in "5:0" så du får räkna lite manuellt. I excels tidsformat är en dag= 1 och en timme är 1/24. Så 5 timmar är 5/24=2,083333333333... Så du får manuellt skriva in det (med lämpligt antal 3:or) För 50 gör du samma sak 50/24 =2.08333333333333 och det låter vettigt eftersom 2 två dygn är 48 timmar. Fixa gärna visningsformatet till [t]
  13. Och ingen Lill-Lördag utan överkurs Formatting and VBA codes for headers and footers | Microsoft Learn
  14. Jag TROR inte att excels sök/ersätt någonsin går in i header/footer och söker. Kan du hitta en vanlig text i en sidfot med sökfunktionen? Det kan inte jag. Det är möjligt att du måste öppna varje Footer och kolla vad som står, typ så här: https://techcommunity.microsoft.com/t5/excel/macro-to-update-footers-on-multiple-worksheets/m-p/74507 problemet är att det svenska "&[Flik]" ser ut som "&A" för VBA. i alla fall om man kollar med: MsgBox Blad.PageSetup.CenterFooter då kan du testa någonting i stil med: Sub Makro1() Dim Blad As Worksheet For Each Blad In Worksheets If Blad.PageSetup.CenterFooter = "&A" Then Blad.PageSetup.CenterFooter = "property of M63" End If Next Blad End Sub för att söka igenom centrum-foten i samtliga blad i boken (och &[Flik] måste stå ensam i sin del av sidfoten)
  15. Reguljära uttryck är väl mest användbart när du vill bygga komplicerade uttryck med flera delar. T.ex om du vill hitta gamla registreringsnummer. med möstret 3 bokstäver följt av tre siffror. Syntaxexempel från words möstermatchning: [A-Ö]{3}[0-9]{3} Då kan du utvidga med att bokstäverna inte får vara "I" eller vad det nu är som är förbjudet. Dessutom kan du dela upp sökningen i delar och vända på ABC123 till 123ABC om du behöver det. Svenska words namn "mönstermatchning" är ganska bra Sök efter: ([A-Ö]{3})([0-9]{3}) Ersätt med: \2\1 (varje parantes blir en egen sökdel och i "ersätt med" klistrar du in sökdel 2 + sökdel ) I ditt fall handlar det väl mer om att köra ett antal bestämda sökningar efter varandra. Inte att hitta saker som följer ett mönster. Eller? Då är det bättre att modifiera ditt makro till att hämta sök/ersätt parametrarna någonstans på makrobladet och helt enkelt köra 18-20 sök/ersätt på varje "klient"blad. Dvs kopiera gränssnittet från ditt specialprogram.
  16. Jag gissar att "Hela ord" inte betyder samma sak som "hela cellen"/"hela frasen". Typ att "hela ord" skiljer på volvo och volvoxc70, men inte på volvo och volvo xc70. Och då kan du nog fastna i en loop med ovanstående upplägg. Jag vet inte hur ditt specialprogram läser excelfilerna. Om jag öppnar en excelfil i en texteditor så kan jag inte se hur cellavgränsarna ser ut (innehållet verkar vara komprimerat, även i en "moderna" xlsx fil). Annars skulle man kunna tänka sig att du sökte efter: <tab>volvo<tab> för att få en hel fras, typ.
  17. Mat och eftertanke är kraftigt underskattat. 🧍‍♂️🤸‍♂️ 🧍‍♂️
  18. MH_

    Roliga avigheter

    Påminner lite om googles skämt
  19. Det går: =LETAKOLUMN(A9;$E$3:$H$4;2;FALSKT) eller så här om du vill slippa se "#SAKNAS!" innan du fyllt i värde i A =OMFEL(LETAKOLUMN(A9;$E$3:$H$4;2;FALSKT);"") Och om du har en nyare Excel finns det en funktion med "allt i ett": =XLETAUPP(A9;$E$3:$H$3;$E$4:$H$4;"")
  20. Spontant, nej. inte med upplägget du har. Din kod öppnar (väl?) filen som en excelfil och kör sök/ersätt. och då tar den en cell i taget. Om du vill söka avgränsaren (tab) så tror jag att du måste behandla det som en textsträng och aldrig öppna filen i excel. kanske något i den här stilen (inte testat) https://stackoverflow.com/questions/37291553/excel-macro-to-find-and-replace-multiple-strings-in-any-text-file Om du öppnar det som en excelfil så kanske du kan hitta varje cell med [5x10] och kolla innehållet 2 celler till höger och vänster. men det blir ju ett helt annat upplägg.
  21. MH_

    Roliga avigheter

    Expressen är lite inkonsekventa när det gäller namngivning:
  22. Spontant, nej, inte med excelfunktioner - Om du inte använder ett skrivmaskinstypsnitt med fast teckenbredd. VBA/javaskript(automat) - kanske. Om du skickar texten till en textruta med inställningen "anpassa storlek efter text" så borde du kunna avläsa storlek. Eller någon annan metod där du helt enkelt skapar din formaterade text och mäter bredden.
  23. Eftersom tjoflöjt körs på alla förekomster av "Print_Area" så är det förmodligen bara så att det namngivna område som kommer senare i lista "vinner" och får bestämma vad utskriftsområdret blir. Du skulle kunna bygga en räknare och bara använda den äldsta eller något liknande (jag antar att namngivna 8mråd3n kommer 7 datum8rdning) Jag haaaaatar telefontamgentbord
  24. Om man snor din gamla kod som ni använde tidigare. Ttroligtvis baserad på det här: https://exceloffthegrid.com/vba-code-loop-files-folder-sub-folders/ Så borde något i den här stilen funka. Option Explicit Sub start() Dim startmapp As String Dim folder As String folder = GetFolder Call LoopAllSubFolders(folder) End Sub Function GetFolder() As String Dim fldr As FileDialog Dim sItem As String Set fldr = Application.FileDialog(msoFileDialogFolderPicker) With fldr .Title = "Select a Folder" .AllowMultiSelect = False .InitialFileName = Application.DefaultFilePath If .Show <> -1 Then GoTo NextCode sItem = .SelectedItems(1) End With NextCode: GetFolder = sItem Set fldr = Nothing End Function Sub LoopAllSubFolders(ByVal folderPath As String) Dim fileName As String Dim fullFilePath As String Dim numFolders As Long Dim folders() As String Dim i As Long If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\" fileName = Dir(folderPath & "*.*", vbDirectory) While Len(fileName) <> 0 If Left(fileName, 1) <> "." Then fullFilePath = folderPath & fileName If (GetAttr(fullFilePath) And vbDirectory) = vbDirectory Then ReDim Preserve folders(0 To numFolders) As String folders(numFolders) = fullFilePath numFolders = numFolders + 1 ElseIf (InStr(1, fileName, ".xl") > 0) Then Call tjoflöjt(folderPath & fileName, fileName) End If End If fileName = Dir() Wend For i = 0 To numFolders - 1 LoopAllSubFolders folders(i) Next i End Sub Sub tjoflöjt(sökväg, filnamn) Dim WS As Worksheet Dim namn As Name Dim adress As String 'Öppna filen Workbooks.Open sökväg For Each WS In ActiveWorkbook.Worksheets For Each namn In WS.Names If ((InStr(namn.Name, "Print_Area") > 0) Or (InStr(namn.Name, "Print_Titles") > 0)) Then adress = namn.RefersTo If (InStr(namn.Name, "Print_Area") > 0) Then namn.Delete WS.PageSetup.PrintArea = adress ElseIf (InStr(namn.Name, "Print_Titles") > 0) Then namn.Delete WS.PageSetup.PrintTitleRows = adress End If End If Next namn Next WS 'Spara och stäng (den vill inte ha sökvägen då) Workbooks(filnamn).Close SaveChanges:=True End Sub OBS Jag har bara testat med testat med att låta "tjoflöjt" öppna/stänga filerna och visa filnamnen. Sub tjoflöjt(sökväg, filnamn) Workbooks.Open sökväg MsgBox sökväg Workbooks(filnamn).Close SaveChanges:=True End Sub Men det borde funka ändå
×
×
  • Skapa nytt...