Just nu i M3-nätverket
Gå till innehåll

MH_resurrected

Medlem
  • Antal inlägg

    702
  • Gick med

  • Senaste besök

  • Vunnit antal dagar

    12

MH_resurrected vann dagen: 29 januari

MH_resurrected hade det mest gillade innehållet!

Om MH_resurrected

  • Medlemstitel
    Flitig

Senaste profilbesöken

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

  1. MH_resurrected

    Vilken mobiltelefon skall väljas?

    Kanske en struntdetalj, men Samsung har bytt plats på navigerings-knapparna längst ner. Backa/senaste-app knapparna sitter bakvänt jämfört med Android standard. Om du är väldigt inkörd på Samsung så kan det ta ett tag att programmera om fingrarna. Om du vet att du är "tröglärd" så kan det kanske vara värt att hålla sig till Samsungtelefoner (alt: Ett bra skäl att lämna Samsung för evigt...). Om du använder Samsung Health och inte vill sluta med det (t.ex för att du har en samsungklocka) så kan den appen ibland köra slut på batteriet på telefoner av andra märken (vet inte varför).
  2. MH_resurrected

    Styra word utskrift via Excel vba

    Samma reservation som alla andra. Jag har ingen aning om vad jag talar om... Hur väljer du skrivare? Är det något i stil med: Application.ActivePrinter Vad händer om du pekar på Word lite hårdare när du väljer skrivare? Typ: Word.application.ActivePrinter eller objWord.ActivePrinter
  3. MH_resurrected

    VBA Tidstämpel krånglar

    Testade du att göra om till en vanlig SUB (utan Worksheet_Change)? Vad händer när du stegar igenom koden med [F8]? Kan du se var det går fel? Om du kan se var det går fel så är det lättare att identifiera problemet.
  4. MH_resurrected

    VBA Tidstämpel krånglar

    Inga direkta svar men lite förslag på felsökning. Jag misstänker starkt att det är något fånigt fel, t.ex att tabell2 inte heter tabell2 längre, eller att du döpt om Modul1. Det där felmeddelandet är ganska luddigt och den typen av fel är löjligt svåra att hitta (fråga inte hur jag vet det...). annars: Kan du visa "Huvudet" på TaBortSkydd respektive Modul1.Skydd? dvs motsvarigheten till: Private Sub Worksheet_Change(ByVal Target As Range) Du kan även testa att göra en kopia av din "Worksheet_Change" och köra den som en vanlig SUB (med manuell target). Typ: Sub test() Set Target = ActiveCell Call Modul1.TaBortSkydd Application.EnableEvents = False ActiveSheet.ListObjects("Tabell2").Range.Select With Selection If Target.Column <= 13 Or Target.Column >= 15 Then Range("N" & Target.Row).Value = Date End If End With Application.EnableEvents = True Call Modul1.skydd End Sub Då borde du kunna stega igenom med [F9] och se var felet uppstår För övrigt: Undvik gärna Select. Det har en förmåga att ge skumma fel. Om jag tolkar din kod rätt så är syftet att "Selecta" tabell2 bara att du vill vara säker på att du står i tabellen när koden körs? Eller? Annars vet jag inte varför du har en selection. Om du vill kolla att du står i tabellen så är det bättre att köra en Intersect. Dvs kolla om och Table2 och Target (cellen som ändrades och satte igång makrot) har någon cell gemensam. Exempel 'skapa testvariabeln test (Kreativt...) Dim test As Variant 'Kolla vilka celler Target och tabell2 har gemensamma: Set test = Application.Intersect(Target, _ ActiveSheet.ListObjects("Tabell2").Range) 'Om svaret blir Nothing så ligger target utanför tabell2 'If-satset körs INTE om (Kolumnen=14 eller Target ligger utanför tabell2) If Not (test Is Nothing Or Target.Column = 14) Then Range("N" & Target.Row).Value = Date End If
  5. MH_resurrected

    Filter Datum

    Det räcker inte att formatera som datum (cellformateringen handlar bara om hur data visas). Du måste se till att de omvandlas. Om du ökar bredden på kolumnen så borde du se att vissa celler vänsterställs. Eftersom du har en tabell så är det enklaste sättet att hitta textcellerna att filtrera . tryck på rullgardinen i tabellhuvudet och gå till Textfilter->innehåller-> skriv in tecknet * då tar den bara fram celler med textinnehåll Om du har tur kan du använda en väldigt enkel omvandlingsmetod. Skriv in en 1:a i en cell. Markera cellen och kopiera. Markera dina text-datum och gå till Start-klistra in->special->Multiplicera (Ctrl+Alt+V, U, Enter) Nu bör dina text-celler omvandlas till datum. Ta bort filtreringen Om det står någonting i stil med 43466 så behöver du bara ändra visningsformat till datum (formatera celler). Om det inte omvandlas får du gå in i varje cell och trixa manuellt eller göra något med hjälp av formeln DATUMVÄRDE().
  6. MH_resurrected

    Vad är detta

    eftersom adressen hör till ett bolag (digitalocean) så kanske det är värt att slänga in en abuse-anmälan? https://www.digitalocean.com/company/contact/#abuse abuse@digitalocean.com https://whois.arin.net/rest/net/NET-142-93-0-0-1/pft?s=142.93.40.13 Men jag skulle inte orka...
  7. MH_resurrected

    LÖST Kopiera text från web-läsare

    Jag har inte win 10 men vad händer om du klistrar in som text? Jag känner inte till något snabbkommando men högerklick eller Ctrl+Alt+V följt av bokstaven O brukar funka. Det skulle kunna vara så enkelt att det följer med en massa tvingande formateringar som kör över högkontrastnställningarna.
  8. MH_resurrected

    Hitta textsträng med VBA-kod

    Om du kollar hjälpen för .FIND så ser du att den returar Nothing om den inte hittar något. och det ger en hängning när sökningen inte hittar något och du försöker göra en activate på cellen (som den inte har hittat) Cells.Find(xxxxxx).Activate Excels hjälp föreslår att du först kör sökningen. sen kollar du om den ger något resultat innan du försöker göra någonting: ' skapa en variabel som heter C som skall "hålla" resultatet av sökningen Dim c As Variant ' kör sökningen och plocka in resultatet i "C" (utan att aktivera någon cell eller liknande) Set c = Cells.Find(What:="Kategori 1", After:=ActiveCell, _ LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 'klistra in data OM "c" innehåller något (not nothing). If Not (c Is Nothing) Then c.Offset(-1, 0).FormulaR1C1 = "hejkonbejkon@tralala.com" End If Osv Nu vet inte jag vad du vill göra med din kod. Men dn kod/ovanstående hittar bara den första förekomsten av "kategori 1". Om kategori 1 finns flera gånger måste du skapa en loop av något slag. Om vi bygger på förslaget i Excels hjälpfil så blir det någonting i stil med: ' skapa variabler som heter C och firstaddress Dim c, firstAddress With Cells ' kör sökningen och plocka in resultatet i "C" Set c = .Find(What:="Kategori 1", After:=ActiveCell, _ LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 'Loopa igenom alla träffar och klistra in data (så länge det finns 'träffar och den inte är tillbaks till första cellen). If Not c Is Nothing Then firstAddress = c.Address Do c.Offset(-1, 0).FormulaR1C1 = "hejkonbejkon@tralala.com" Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With För att söka efter kategori 2-3 så får du upprepa koden för resten av sökningarna eller skapa varsin Array för sökefter samt epostadresserna och loopa igenom ditt makro (jag tog mig friheten att kalla variablerna sökefter/ersättmed. Det får du leva med.) ' deklarera variabler Dim c, firstAddress Dim sökefter As Variant Dim ersättmed As Variant Dim i As Integer ' skapa enkla vektorer med värden för sök efter / ersätt med. ' Det är ordningen som skapar paren. Det går att göra snyggare/krångligare sökefter = Array("Kategori 1", "Kategori 2", "Kategori 3") ersättmed = Array("hejkonbejkon@tralala.com", "lillstrumpa@hejhopp.se", "nalle.puh@storskogen.se") With Cells 'skapa en loop som går igenom alla 3 kategorier '(Obs att en array som standard räknas från 0, så kategori1 ' är 0 och kategori 3 =2) For i = 0 To 2 ' kör sökningen och plocka in resultatet i "C" Set c = .Find(What:=sökefter(i), After:=ActiveCell, _ LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 'Loopa igenom alla träffar och klistra in data (så länge det finns träffar och den inte är tillbaks till första cellen). If Not c Is Nothing Then firstAddress = c.Address Do c.Offset(-1, 0).Value = ersättmed(i) Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If Next i End With exempel där du skapar dina par i en 2 dimensionell array istället Dim c, firstAddress Dim sökpar(1 To 3, 1 To 2) As Variant Dim i As Integer sökpar(1, 1) = "Kategori 1" sökpar(1, 2) = "hejkonbejkon@tralala.com" sökpar(2, 1) = "Kategori 2" sökpar(2, 2) = "lillstrumpa@hejhopp.se" sökpar(3, 1) = "Kategori 3" sökpar(3, 2) = "nalle.puh@storskogen.se" With Cells For i = 1 To 3 Set c = .Find(What:=sökpar(i, 1), After:=ActiveCell, _ LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) If Not c Is Nothing Then firstAddress = c.Address Do c.Offset(-1, 0).Value = sökpar(i, 2) Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If Next i End With Den sista skulle vara snyggare om du t.ex hade par med sök efter/klistra in i ett excelblad. Annars är det väl bara krångligare? testa runt och se om du får något att fungera. Hellere en lång kod du förstå än en kompakt kod som är obegriplig. OBS! det är en seg kod. det är inte din dator.
  9. MH_resurrected

    Excel VBA koll om cellområde är tomt

    >>sedan kan man ju undra vad dom 22st träffarna enligt formlerna är för något, men det tar vi en annan gång Om du får tråkigt (en annan gång)... =KOD(A1) kollar ascii-koden för det första tecknet i cell A1. 10=radbrytning 32=mellanslag 61= = etc. Kan ge ledtrådar om vad det är som spökar.
  10. MH_resurrected

    Funktion för kvartal efter datum?

    Det här ger kvartalssiffran i B1 (som text) =EXTEXT(B1;3;1) Multiplicera med 1 för att omvandla till tal. =EXTEXT(B1;3;1)*1 Problemet är, som du har sett, att om du bara adderar en etta (+1) blir kvartal 4 -> kvartal 5. Så du måste krångla till det på något vis. Vi kan köra en gammal hederlig okomplicerad men lite lång lösning med VÄLJ. Kvartal: VÄLJ(EXTEXT(B1;3;1)*1;2;3;4;1) dvs om EXTEXT(B1;3;1)*1=: 1->2 2->3 3->4 4->1 År Gamla året+en etta om 4:e kvartalet (skulle kunna vara en omsats) HÖGER(B1;2)*1+VÄLJ(EXTEXT(B1;3;1)*1;0;0;0;1) Lägg samman till din text: =SAMMANFOGA("Kv";VÄLJ(EXTEXT(B1;3;1)*1;2;3;4;1);"-";HÖGER(B1;2)*1+VÄLJ(EXTEXT(B1;3;1)*1;0;0;0;1)) Alternativt en matematisk REST_HELTALS lösning om du föredrar det: =SAMMANFOGA("Kv";REST(EXTEXT(B1;3;1)*1;4)+1;"-";HÖGER(B1;2)*1+HELTAL(EXTEXT(B1;3;1)*1/4))
  11. MH_resurrected

    Excel VBA koll om cellområde är tomt

    Kan du kolla runt med excelformlerna? =ANTAL(A1:B10) (räknar siffror) =ANTALV(A1:B10) (räknar allt innehåll, även tomma formler) =ANTAL.OM(A1:B10;"*") (verkar bara räkna formler med synligt innehåll) de beter sig olika. En helt annan variant är att använda Excels sökfunktion och leta efter wildcard * och sök i: värden (om du står i excel och trycker på sök ->alternativ så kan du välja att söka i formler eller värden). Om excel inte får någon träff (dvs området är tomt) blir resultatet Nothing. Det kan du använda i en IF-sats Dim test As Variant Set test = MyRn2.Find(What:="*", LookIn:=xlValues) If test Is Nothing Then MsgBox "MyRn2 är tomt" End If
  12. MH_resurrected

    Funktion för kvartal efter datum?

    Kolla EDATUM. Den ger ett datum som ligger X månader fram i tiden utan att ändra dagen. Så om du lägger på 3 mån så hamnar du i nästa kvartal: =EDATUM(A1;3) Tyvärr verkar inte kvartal finnas som talformat. så det kan du inte använda direkt (konstigt eftersom man kan dela upp på kvartal i t.ex pivottabell-filter och (tror jag). diagram) Så det blir formelröra. B-kolumnen som exempel: Året får du via: =ÅR(EDATUM(A1;3)) eller, om du vill slippa de 2 första siffrorna =HÖGER(ÅR(EDATUM(A1;3));2) Obs att det är en textsträng Kvartalet blir lite rörigt. Men vi tar månadsnummer/3 och avrundar uppåt. =AVRUNDA.UPPÅT(MÅNAD(EDATUM(A1;3))/3;0) (Edatum kan kännas lite överkurs istället för att kör +3 men tänk årsskifte så förstår du varför det är enklast) Lägg ihop till en text som ser ut som du vill. Typ =SAMMANFOGA("Kv";AVRUNDA.UPPÅT(MÅNAD(EDATUM(A1;3))/3;0);"-";HÖGER(ÅR(EDATUM(A1;3));2)) Om det är Ok för dig att räkna ut påföljande kvartal direkt ifrån datumet i A1 så kan du modifiera formeln. Istället för att låsa framflyttningen av datumet till 3 månader: =EDATUM(A1;3) Så använder du kolumnnumret och flyttar fram kolumnnummer*3 månader. där x är kolumnnumret ett steg till vänster (eftersom b-kolumnen är kolumn2 och du vill starta med 1*3) =EDATUM($A1;3*KOLUMN(A1)) om du kopierar till höger ser du att den hoppar 3 månader fram hela tiden Lägg samman, klistra in i B1 och kopiera åt höger/nedåt: =SAMMANFOGA("Kv";AVRUNDA.UPPÅT(MÅNAD(EDATUM($A1;3*KOLUMN(A1)))/3;0);"-";HÖGER(ÅR(EDATUM($A1;3*KOLUMN(A1)));2)) Om absolut vill basera värdet i C på vårdet i B så blir det krångligare eftersom det är text och inte datum. Kolla om det funkar.
  13. MH_resurrected

    Unique (datum) med countif

    (ANTAL.OMF=countifs på svenska) Kan du skapa en extra kolumn? Lägg in den här formeln i D2 (jag antar att du har en rubrik i första raden). Jag kallar den "HälpKolumn" =1/ANTAL.OMF($A$2:$A$1000;A2;$B$2:$B$1000;B2) Tryck Ctrl+0 om den försöker omvandla till datum Kopierar ner till rad 1000 Huvudformel: ANTAL.OMF($A$2:$A$1000;A2;$B$2:$B$1000;B2) Räknar hur många gånger namn/datumkombinationen i A2:B2 förekommer i din lista 1/ANTAL.OMF($A$2:$A$1000;A2;$B$2:$B$1000;B2) inverterar värdet. Dvs om det finns 2 gånger blir värdet 1/2=0,5 osv Om du summerar alla värden i kolumn D för "Person - 01" så får du ut hur många unika datum personen har jobbat. Det enklaste är att göra en pivottabell där du lägger Namn som Radetikett och HälpKolumn som summa Alternativt =SUMMA.OM($B$2:$B$1564;"Person - 01";$D$2:$D$1000) osv Kolla om det är i närheten av vad du vill. allt går att krångla till...
  14. MH_resurrected

    Excel VBA koll om cellområde är tomt

    Du berättar att de är en excelfunktion du vill använda när du skriver WorksheetFunction.xxxxx (egentligen Application.WorksheetFunction.xxx om du vill vara ordentlig). Så du petar bara in det i koden. För att kolla om området är tom kollar du bara om antalet celler med innehåll är >0 IF WorksheetFunction.CountA(MyRn2) >0 then '*****Gör det du skall end if https://docs.microsoft.com/en-us/office/vba/api/excel.worksheetfunction Det är ju väldigt smidigt eftersom du kan testa hur excelformeln funkar utan att köra VBA
  15. MH_resurrected

    Excel VBA koll om cellområde är tomt

    jag antar i exemplet att du är ute letar i område A1:E15 Om du hade kört formler skulle du förmodligen ha byggt på =ANTALV($A$1:$E$15) OBS:Den räknar alla celler med formler ockskå, även om de returnerar "" I VBA kan du antingen ropa på excelformeln: WorksheetFunction.CountA(MyRn2) Alternativt köra en FIND och räkna träffar. Eller också försöker du hitta något slags VBA-motsvarighet till countA. Men eftersom du kör i excel kan du lika gärna använda excelfunktionen.
×