-
Innehållsantal
186 -
Gick med
-
Dagar vunna
20
Inlägg postade av MH_
-
-
För att visa tid över 24 timmar så kan du ändra visningsformatet (Ctrl+1)
Gå till Anpassat för att ta bort sekunder om du vill. Det är hakparanteserna runt [t] som gör att du kan visa mer än 24 timmar. Så här blir den enklaste koden för timmar och minuter:
[t]:mm
För att visa negativa tider måste du använda Macintosh datumsystem i dokumentet
Arkiv>alternativ>avancerat>använd Macintosh datumsystem (långt ner)
Men excels "Macintosh datumsystem" utgår ifrån 1904 istället för 1900 så datum blir 4 år och en dag fel om du kopierar mellan dokument med olika datumsystem.
- 1
- 1
-
Blad i en arbetsbok: Begränsas av tillgängligt minne
************************
för att skapa bladen "automatiskt" kan du köra ett VBA-makro. Typ:
[Alt]+[F11] för att öppna VBA editorn
infoga->modul
Klistra in något i den här stilen:
Sub veckoblad() Dim i As Integer For i = 1 To 52 Sheets.Add After:=ActiveSheet Sheets(i).Name = "V" & i Next i End Sub
kör koden [F5]
Sen kan du radera modulen innan du stänger VBA-editorn
- 1
-
Jag uppskattade inte Höglund så mycket när han var aktiv. Men karln hade en hel del pärlor.
Kul att minst en yngre förmåga (Ellen Sundberg) gjorde en hel coverplatta för flera år se:
- 1
-
Jag antar att du jobbar i ett Windowsprogram? inte word online?
Då finns Zoomen längst ner till höger på sidan. @Mikael ringade in det på sina bilder.
Det finns även under menyn:
VISA->zooma
Där har du bl.a 100%, sidbredd osv.
Personligen brukar jag trycka in [Ctrl] och använda rullknappen på musen (om du har en sån)
När det gäller skrivaren brukar det vara enklast att fixa standardinställningar via windows
Startknappen->kugghjulet->Enheter->din skrivare
Ändra standardpapper osv.
- 1
-
Frågeställaren avslutade frågan på ett annat forum. Om någon har samma problem kan det eventuellt ge en ledtråd:
- 1
-
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Gäller bara för det blad som makrot ligger i (det ligger inte i en modul utan i bladet). Dvs "selection change" går bara att fånga inom ett blad (så vitt jag vet. Det finns säkert andra metoder).
*****************************************************************
Du kan istället testa att själv-certifiera din bok.
på sidan öppnar du rubriken:
"Använda ett självsignerat certifikat"
för att få instruktioner för att skapa ett självsignerat certifikat i din windows version.
När du har skapat ett certifikat öppnar du ditt VBA-projekt/editor (högerklicka på flik-namnet och välj "visa kod"):
verktyg->digital signatur
Självsignera med ditt nyskapade certifikat
Nu bör Excel få betydligt snällare säkerhetsspärrar för det här dokumentet. Även om det ligger på en nätverksenhet (kräver eventuellt omstart av dokument/excel).
Jag är själv tvungen att göra så på jobbet eftersom IT har någon policy som ändrar mina säkerhetsinställningar i office så fort jag startat om datorn och vi har alla arbetsdokument på någon nät- eller molntjänst (vem orkar hänga med...).
- 1
-
Den enda gången jag råkat ut för det där är om jag råkat starta excel-dokument i separata instanser. Då "pratar" inte de två programinstanserna med varandra och man kan inte skapa länkar.
Vette tusan hur du får bort det. Jag antar att du har startat om excel och windows?
Om du känner dig bekväm i registret kan du kolla om du kanske har råkat ställa om standard i Excel:
https://learn.microsoft.com/sv-se/office/troubleshoot/excel/force-excel-to-open-new-instance
Annars tror jag att du får världens tråkigaste svar, kör en officereparation:
-
Min länk gick ju inte till excel VBA utan någon gammal visual basic. Wooops!🙈
Kollar du excels riktiga dokumentation här:
OpenTextFile method (Visual Basic for Applications) | Microsoft Learn
Så är det helt andra värden för konstanterna och parametrarna skall in i en annan ordning
'... MinText = MinText & """)" Const ForReading = 1, ForWriting = 2, ForAppending = 8 Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 Dim fs As Object, f As Variant Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.OpenTextFile(Filename:="C:\temp\filldown.ahk", iomode:=ForAppending, Create:=True, Format:=TristateTrue) f.Write MinText f.Close End sub
eller så här om du vill ha det kompaktare (men svårbegripligare)
'... MinText = MinText & """)" Dim fs As Object, f As Variant Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.OpenTextFile("C:\temp\filldown.ahk", 8, True, -1) f.Write MinText f.Close End Sub
- 1
-
Här diskuterar dom olika metoder:
https://stackoverflow.com/questions/2524703/save-text-file-utf-8-encoded-with-vba
Där jag tycker att svaret som hänvisar till
https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/aa265347(v=vs.60)
verkar lättast att köra. Dvs du skippar "Print #1" helt och lägger till någonting i stil med (ombyggt från exemplet längst ner på microsoftsidan):
'... MinText = MinText & """)" Const ForReading = 1, ForWriting = 2, ForAppending = 3 Dim fs, f Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.OpenTextFile("C:\temp\filldown.ahk", ForAppending,TristateTrue) f.Write MinText f.Close End SUB
Jag har inte testat men det ser ju smidigt ut. Du får väl kör en testomgång på låtsasdata.
- 1
-
Då räcker det väl att ersätta/förenkla
Sub SearchReplace(searchFor As String, replaceWith As String, ws As Worksheet) With ws.PageSetup .LeftHeader = replace(.LeftHeader, searchFor, replaceWith) .CenterHeader = replace(.CenterHeader, searchFor, replaceWith) .RightHeader = replace(.RightHeader, searchFor, replaceWith) .LeftFooter = replace(.LeftFooter, searchFor, replaceWith) .CenterFooter = replace(.CenterFooter, searchFor, replaceWith) .RightFooter = replace(.RightFooter, searchFor, replaceWith) End With End Sub
Med
Sub SearchReplace(searchFor As String, replaceWith As String, ws As Worksheet) ws.Cells.Replace What:=searchFor, Replacement:=replaceWith, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2 End Sub
Där du väljer vilka argument som är nödvändiga (searchOrder borde du t.ex kunna skippa)
Sen kanske men inte behöver LoopWorkbook egentligen. Men har du en kod som funkar. Dont fix it
- 1
-
Missförstår jag dig rätt:
Du vill köra sök/ersätt i alla excelfiler i en mapp?
**ED**
Och undermappar
***/ed***
-
Man har ju nästan förträngt hur mycket tid man la ner på att ta sig runt diverse konstiga begränsningar. Det är rätt skönt att vi har kommit till den nivån av användarvänlighet att telefon- och pad generationerna inte behöver ha någon direkt koll på datorer. Vi la ner på tok för mycket tid på att få det att funka. De använder programmen till att göra saker istället (sen kan man naturligtvis diskutera hur meningsfulla de sakerna är).
-
Inte vad du frågar om, men en relativt billig lösning om det funkar för dig.
Du skulle ju kunna bygga om en av de "avlånga" brytarna och kör den fast monterad på din kabel (jag förutsätter att dylika hack kallas för att "göra en Mikael" i din familj).
eller sätta en hane/hona på din befintliga kabel
https://www.kjell.com/se/produkter/el-verktyg/el-produkter/starkstrom/timers-klockstrombrytare
Sökordet för kontakterna verkar i alla fall var säkerhetstimer eller Korttidstimer
- 1
-
Ja, vem har lovat att det skall vara enkelt (någon borde ha gjort det och då fick ju hen rätt den här gången :-))
- 1
-
Jag fattar inte varför du inte kan klistra in allt (eller kopiera hela bladet) och sedan köra sök/ersätt. Sök/ersätt går på formlerna i alla celler och när du ersätter
"[Ursprungligt_Exelark.xlsx]" med ingenting så försvinner de externa referenserna överallt.Självklart kan du köra någonting i stil med:
=SUMMA.OMF(INDIREKT("Fliken_Y!C$27");INDIREKT("Fliken_Y!$B$27");"gnu")
Men då tappar du all autofyll
Jag tror inte att jag riktigt har förstått vad du är ute efter.
- 1
-
Tror att det absolut enklaste är att klistra in och sedan köra sök/ersätt (Ctrl+H)
Sök: [Ursprungligt_Exelark.xlsx]
Ersätt med: (tomt, ingenting)Om det bara är någon enstaka cell så kan du kopiera från formelfältet. Dvs kopiera formeln som text.
Alternativt kopiera från cellen i redigeringsläge ("snabb"-kommando F2, Ctrl+A, Ctrl+C, Esc)- 1
-
Ahhh. nu minns jag nästan. Eller inte.
Måste erkänna att jag aldrig tog mig längre än till demospelen (tror det fans en mask också). Hade inte råd med dator förrän man kunde sommarjobba på fabrik. Och på universitetskurserna var det något slag pascal(?) som användes i generella programmeringsövningar. Så Qbasic kändes måttligt lockande.
-
Hmm. Var det DOS-basic som hade ett demospel där man kastade exploderande bananer på en gorilla?
Man var lättroad på den tiden ...Och till OS2 fick man med (?köpa billigt?) något slags Lotus-office där jag la ner X timmar för att träna tal-tolken så att man skulle kunna diktera texter. Bara för att inse att man tydligen talar extremt otydlig engelska. Det var mest framtiden som var bättre förr i tiden ...
-
Namnge listan I blad3 till "gu"
Och namnge listan i blad 4 till "Fo"i Blad1, A1 så skapar du en lista på vanligt sätt (data->dataverifiering: Lista) där du läger in Fo och Gu i listan.
i Blad1, B1 så skapar du ett villkor på vanligt sätt (data->dataverifiering:Lista). Men du lägger in formeln
=INDIREKT($A$1)
i cellen A1 kommer att kunna välja namnet på ett namngivet område (Gu eller Fo).
I dataverifieringen för B2 berättar Indirekt() för excel att värdet som hämtas från A1 är en adress (namngivet område).
*********************
Ähhh, testa.
Du kan börja med att peta in
=INDIREKT($A$1)
i en cell och se vad som händer när du ändrar värdet i A1
- 1
-
Ingen exakt lösning. Men lite byggstenar. Antag att inköpsdatum står i cell A1:
2016-02-14 (ett högerställt, "riktigt" datum)
Då kan du kan använda formeln IDAG() för att få dagens datum och räkna ut diffen i en anna cell. Exempel (dagar sedan inköp):
=IDAG()-A1
Eftersom du använder IDAG() och länkar till ett datum så kan excel försöka visa resultatet som ett datum (1907-någonting). markera cellen och tryck Ctrl+noll (0) eller högerklicka och välj "formatera celler", tal eller allmänt.
Det här kan du använda för att kolla om det gått 7 år
=OM((IDAG()-A1)>365*7;"RÖD";"")
Istället för 365*7 så kan du använda EDATUM() som räknar månader (och tar hänsyn till skottår osv)
=om(IDAG()>EDATUM(A1;12*7);"RÖD";"")
Ok. Nu ville du inte ha texten "röd" utan färgen röd
Markera cell A1
START->Villkorsstyrd formatering->ny regel->bestäm vilka...använda en formelskriv in formeln
=IDAG()>EDATUM(A1;12*7)
och tryck på knappen [Formatera..], fliken fyllning och ange den färg du vill ha
När du fått den tekniska livslängden att fungera så kan du lägga till flera villkor om du vill. Gå till:
START->Villkorsstyrd formatering->Hantera regler så kan du duplicera regeln du skapade och gå in och ändra villkor/färg.
Du kan stapla en massa villkor. Exempel som kollar om dagens datum ligger mellan 2 år och 2år+1 månad
=OCH(IDAG()>=EDATUM(A1;12*2);IDAG()<=EDATUM(A1;12*2+1))
OSV.
Det här är lite "kinkigt" avseende vilken ordning villkoren ligger och beroende på om du kryssat i "avbryt om sant".
Du får testa och leka dig fram.
- 1
-
**ED**
Sidlayout->Alternativ->rubriker: skriv ut
**/ED**
***ED2***
Vill du bara ha radnumren utan kolumnrubrikerna så kan du a bort krysset för rubriker och lägga till den här formeln i A kolumnen istället:
RAD()
Om dina utskrifter är bredare än en sida så får du gå till
Sidlayout->utskriftsformat ->skriv ut rubriker (ja, det är förvirrande med två olika saker som heter nästan samma sak ([Alt], p, i1))
Där väljer du fliken "blad" och "kolumner till vänster". Sen markerar du kolumn A. Då kommer den alltid att synas.
***/ED2***
-
>>håller inte online kurser ?
När forumen var mer aktiva så var det precis vad ett forum var. Hängde man på ett forum blev man snabbt bättre. Ett gäng som ställde frågor och ett annat gäng som höll sig uppdaterade genom att hjälpa till och läras sig av andras svar (och de som ställde frågor "betalade igen" genom att själva hjälpa till något stans).
Jag skulle gärna skylla på alla Svärjevänner som förstörde stämningen på forum får något årtionde sen. Men sanningen är nog att den stora, anonyma och hjälpsamma gemenskapen som fanns i nätets barndom redan hade börjat dö när Svärjevännerna härjade som värst. Trist, men kanske väntat.
He, he. Det finns en klassisk tråd i
Eforums musiktråd eller möjligtvisStudios forum när en nisse som kallar sig "Timberman" frågar om mixer-råd och åsikter om en demo. Han blev ju rätt bra på det där så småningom (se slutet av tråden, 5 år senare)...
https://www.studio.se/forums/topic/34925-timberman-brain/- 1
-
När man skriver in någonting i cellen man står i, t.ex
Target.Value = "EJ"Så är det ju en "change" som inträffar och då skall ju Change_makrot köras igen, vilket kan göra en ändring som triggar igång en förändring som startar makrot som trigga....
Det här borde lösas med hjälp av:
Application.EnableEvents = FalseMen eftersom jag är paranoid pga erfarenhet (Tangenten [Break] är ett viktig instrument när du skall stoppa ett makro som löpt amok... (eller var det Ctrl+break, hmmm?))
så vill jag gärna ha både hängsle, livrem och kontorsklister för att vara säker på att byxorna sitter kvar
If Not Len(Target.Value) = 1 Then Exit Sub
Avbryter om cellen är tom eller om det står något i stil med "EJ 2023-02-22" (dvs om vi hamnat i en loop).
medan "Target.Offset(1, 0).Select" i ärlighetens namn ökar risken för en loop - Tag bort- jag hade lite otur när jag tänkte...
Och när jag kollar koden igen så inser jag att "EnableEvents = False" skall ligga efter de första "exit-raderna". Annars kommer excel sluta känna av "Change" så for du ändrar en cell utanför området eller skriver något annat än p,j,e i en av cellerna
Och Case Else behövs inte heller
Det här blir ju ganska kompakt och trevligt:
Private Sub Worksheet_Change(ByVal Target As Range) ' avbryt om ändringen skedde utanförd ditt bevaknings-område If Intersect(Target, Range("c4:n50")) Is Nothing Then Exit Sub ' avbryt om mer än en cell är vald If Target.Cells.Count <> 1 Then Exit Sub ' fortsätt bara om det är exakt ett tecken i cellen If Len(Target.Value) <> 1 Then Exit Sub ' du bör inte stänga av "EnableEvents" förrän här eftersom ovanstående rader inte ' gör något som kan uppfattas som en Change och de sätter inte på "event" innan exit Application.EnableEvents = False Select Case LCase(Target.Value) Case "p" Target.Value = "PB " & Date Case "j" Target.Value = "JW " & Date Case "e" Target.Value = "EJ " & Date End Select Application.EnableEvents = True End Sub
- 1
-
Jag testade din metod (med villkorsstyrd formatering vid årsskiften) innan jag svarade förut men lyckades inte "träffa rätt" med visningen.
I ditt fall misstänker jag att dina inmatningar har blivit text på något sätt eftersom du får fram "textaxel". Du kanske råkade få in ett mellanslag eller liknande vid inmatning.
Power Query - Append 2 Tables
i Microsoft Office / Microsoft 365 Apps (Word, Excel och Outlook med flera)
Postad · Redigerad av MH_
Kan du inte slå ihop
https://learn.microsoft.com/sv-se/power-query/append-queries
och sedan ta bort dubbletter?
Markera alla kolumner i förhandsgranskningsläget. Högerklicka och väl "ta bort dubbletter"
Men det förutsätter förstås att du inte kan ha dubbletter inom samma ordernummer (typ 2 skor med samma ordernummer)
Går man in på
Start->avancerad redigerare
blir den automatgenererade sammanslaging / dubblettrensningskoden någonting i stil med
Där tabell1 är den ursprungliga huvudtabellen och "Sheet1" är frågan som hämtar dina uppdaterade data (t.ex från en mapp)
Se upp med "Table.Distinct" och kolla att den blir rätt
https://learn.microsoft.com/sv-se/powerquery-m/table-distinct
När jag körde först så kollade den bara dubbletter i min ID-kolumn. Typ:
#"Borttagna dubbletter" = Table.Distinct(#"Tillagd fråga", {"ID"})
Om man snabbläser "learn" länken så kan det vara så att du kan nöja dig med att kolla dubbletter det senaste dygnet. Men jag är inte säker.