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

Locutus

Medlem
  • Antal inlägg

    68
  • Gick med

  • Senaste besök

Om Locutus

  • Medlemstitel
    Användare

Senaste profilbesöken

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

  1. Tack för svaret, jag antar att jag får strukturera om allting, som du säger. En par mer specifika frågor: 1. Vad är bästa sättet att hämta ut ett värde från ett excelblad som skapats via VBA-kod? Hur kan jag lägga namnet från Newsheet.Name i en variabel och hänvisa till det? Bladet får ju ett namn "Bladx" (som är okänt) och också det namn jag ger det med Newsheet.Name. 2. Jag skulle helst vilja hämta information med tal-koordinater, inte ex "A2". Hur gör jag det på bästa sätt, gruppnamnen ligger ju på var 6:e cell alltid på samma rad? 3. Hur aktiverar jag "direktfönstret"? Tack
  2. Hej. Jag har ett Excelmakro, där jag gjort nya blad och namngivit dem och behöver lägga information på "rätt" blad i vba-koden. Tanken är att jag ska söka igenom Exceldokumentet som makrot skrivits i och om det står "x" i en ruta, då ska information hämtas från ett annat blad (den excelbok som var aktivt när makrot startats). Bifogad bild 1 visar hur Exceldokumentet ser ut. Följande kod har fungerat för att skapa nya blad i den nya excelboken, men jag får problem att hämta ut informationen. Får en körkod "9", "Indexet är utanför intervallet" Set wkb357 = Excel.Workbooks("Makro_Till_ELVIS_listor_AllaAvd_v11_180405.xlsm") Set wks1 = wkb357.Worksheets("357") ElseIf var_avd = "357" Then Set NewSheet = Worksheets.Add NewSheet.name = wks1.Range("A2") Set NewSheet = Worksheets.Add NewSheet.name = wks1.Range("F2") Set NewSheet = Worksheets.Add NewSheet.name = wks1.Range("L2") Set NewSheet = Worksheets.Add NewSheet.name = wks1.Range("R2") Set NewSheet = Worksheets.Add NewSheet.name = wks1.Range("X2") Set NewSheet = Worksheets.Add NewSheet.name = wks1.Range("AD2") Sidan som informationen ska hämtas från om det står "x" på en viss rad, ser ut som bifogad bild 2 Makrot ska då hämta ut informationen från hela den raden (8 celler) och skriva till rätt blad, som heter samma som värdet i A2 Det är där det strular, jag får ingen information när jag försöker hämta ut värden med följande kod och jag tror jag har gjort det mer komplicerat än det behöver vara och hänvisar på fel sätt. Skulle behöva hänvisa till ett Worksheet med det namn som makrot har skapat i koden ovan, det gruppnamnet är samma som finns på sidan som söks igenom. När jag stegar igenom och kör koden, kommer den inte ens in i looparna. Set wkb357 = Excel.Workbooks("Makro_Till_ELVIS_listor_AllaAvd_v11_180405.xlsm") Set wks1 = wkb357.Worksheets("357") Dim Int_xx ' *** Variabel för rum 1-19 på admin-sidan *** Dim Int_bed ' *** Variabel för sängplats 1-5 på admin-sidan *** Dim Int_Case ' *** Variabel för rum 1-19 på makro-sidan *** Dim var_sheetName ' *** Variabel för namnet på fliken (Gruppnamn) i makrot *** Int_xx = 3 ' *** Gå igenom alla rum (1-19) och placera ut på resp lista och grupp *** Select Case Array_Avdlista(Int_currRow, var_counter) For Int_Case = 1 To 19 For var_step = 1 to 49 step 7 ' *** Gör så länge det står något i Gruppnamn-cellen på admin-sidan *** Do While wks.Range(var_step,2) <> "" ' *** Iterera igenom admin-sidans lista över sängplatser *** ' *** Om rumsnummer på admin-sidan matchar Aktuellt rum som ska skrivas *** If wks.Range(var_step, Int_xx).Value = Int_Case Then ' *** Iterera igenom admin-sidans rumsrad och se vilka det står "x" på och ta med dem på listan *** For Int_bed = 0 To 4 If wks.Range(var_step + 1, Int_xx + Int_bed).Value = "x" Then ' *** Lägg till alla cellers info i aktuell grupp *** For d = 1 To 8 var_sheetName = wks.Range(var_step, 2).Value Sheets(var_sheetName).Cells(1, d).Value = Array_Avdlista(Int_currRow, d) Next d End If Next Int_bed End If ' *** Gå till nästa rad med rumsnummer på admin-sidan och loopa *** Int_xx = Int_xx + 1 Loop Next var_step Int_Case = Int_Case + 1 Next Int_Case End Select
  3. Tack för svaret, jag nämnde nog inte att jag är väldigt ringrostig i både PHP och mySQL. Den funktionen du föreslår ger en array. Finns det ingen funktion eller enkelt sätt att omvandla datum-tid i en string till olika format? "20171201T162000Z" är vad jag förstått i format UTC, stämmer det?
  4. Hej Jag försöker göra en PHP-sida som lägger in värden från en .vcs eller .ics kalenderfil i en databastabell. Jag har fått ut värdena jag behöver via php-script. DTSTART är i formatet 20171201T162000Z Problemet jag har, är att få in det i MySQL databastabellen, jag har provat både att ha fältet som DATETIME och TIMESTAMP, men får 0000-00-00 00:00:00 som värde i fältet. Jag behöver ha fältet som datum-tid fält, då jag måste sortera och ta ut värden mellan vissa datum. Jag antar att jag måste konvertera textsträngen i PHP innan jag lägger in i databasfältet, men har inte lyckats få det att fungera. Tacksam för hjälp hur jag ska göra, så jag kan lagra $DTSTART och behålla både datum och tid, för att sedan ta ut det ur tabellen igen och göra om till originalformatet. <?php session_start(); $sid = session_id(); ?> <?php include ( 'icalEasyReader.php' ); $ical = new iCalEasyReader(); $lines = $ical->load( file_get_contents( 'Schema December 2017.vcs' ) ); //open Databas mysql_connect("************", "*************", "********"); mysql_select_db("*********"); foreach($lines as $ver) { foreach($ver as $event) { $DTSTART= $event['DTSTART']; //Denna rad ger: 20171201T162000Z $DTEND = $event['DTEND']; $SUMMARY = $event['SUMMARY']; // Lägg in värden i tabellen mysql_query("INSERT INTO db_kalender VALUES ('','" . $sid . "','" . $DTSTART . "','" . $DTEND . "','" . $SUMMARY . "','','')"); } }
  5. Tack för förslaget, men det är i Windows filsystem som den kommit ihåg lösenordet. Hela situationen är den att jag kör Plex från en dator och har aktiverat så att Plex auto-startar vid boot. Eftersom filerna som Plex behöver komma åt, ligger på NAS, så valde jag att "komma ihåg" lösenordet för att inte behöva logga in via filhanteraren varje gång jag vill använda Plex (och den behöver uppdatera biblioteket). Då uppstår problemet när jag behöver komma åt andra kataloger med högre behörighet än Plex-kontot, så kan jag inte komma åt de filerna från filhanteraren, då jag redan är inloggad. Min fråga var om det fanns en enklare metod att "glömma" autentiseringen i Windows utan att logga ur Plex, starta om datorn och sedan logga in. Antar att jag får låta bli att auto-köra Plex vid boot och bara vid behov och då logga in. Tack för alla förslag.
  6. Jag har kollat i Synology DSM och där står ingen connection. Finns inte så mycket man kan göra där verkar det som. Jag bytte temporärt lösenord på användaren då kunde jag reboota och logga in som annan användare, men det är ju ingen långtidslösning.
  7. Jag har en Synology NAS som ligger på nätverket. För att automatiskt komma åt en katalog på NAS, så använde jag "kom ihåg" lösenordsfunktionen. Nu är problemet att jag inte kan ta bort den autentiseringen för att logga in med ett annat konto på NAS från filhanteraren, då den säger att någon redan är inloggad och man kan bara ha en användare inloggad åt gången. Har tittat i Windows Autentiseringshanteraren, men där finns ingenting att ta bort.. Även provat att ta bort med cmd net use /d (vilket då säger att listan är tom och ej går att hitta någon nätverksanslutning).
  8. Det är till samma kod som jag frågat kring tidigare. Jag försöker automatiskt (via kod) formatera en lista med namn och rumsnummer, där rummet står i en kolumn och "platsen" står i nästa kolumn. Listan är dynamisk så till vida att varje gång man tar fram listan till Excel så har man olika antal rader. Listan ska delas upp i avdelningar, så att t.ex rum 7 plats 1 till rum 10 plats 4 (ibland blir det en plats 5 och 6 också) ska i en grupp och jag ska köra kod på dem så att radhöjden blir sidhöjden delat på antal rader, så de passar till exakt en sida vid utskrift. Man kan också i början via en Form, välja vilken "avdelning" man vill skriva ut, eller alla . Det jag VET är att sida 1 slutar efter "rum" 6, Sida 2 slutar innan A=9 och B=2, Sida 3 ska sluta innan A=10 och B=2, sida 4 ska vara fram till A=12 och B=1, sida 5 fram till det står A=15, B=1, Sida 6 fram till A=18, B=1 och sista sidan resten av "rum" 19 (kan vara plats 5 eller 6 i vissa fall). Man kanske kan göra det som formler, men eftersom koden redan är gjort för makrot för allt annat jag gjort med listan, så vore det smidigt att få in det i ett makro. Hoppas det blev tydligare och att någon kan hjälpa mig optimera min kod. Jag kan klistra in hela koden, men det är rätt lång kod.
  9. Hur kan jag göra en effektiv och smidig kod för att räkna radantal och lägga i en markering mellan 2 rader beroende på vad som står i kolumnen bredvid. se bild som exempel Kolumn A har ett värde (7) och på samma rad har kolumn B värde (1) jag ska räkna rader och lägga i en markering alla rader fram till det står 9 i kolumn A och 1 i kolumn B. Sedan ska jag göra samma sak för 9:2 till 10:4 och 11:1 till 12:1 osv och köra kod på markeringarna. Hur gör man detta på bästa sätt?
  10. Tack. .Det verkar som en bra lösning. Jag fick justera litet i koden för att det skulle fungera, hoppas nu bara att det inte är en lösning som går sönder efter ett tag (ny Excelversion etc.). Hade hoppats på en smidig universell lösning. Fungerar för tillfället.
  11. Jag gör ett VBA makro i Excel för att formatera radhöjd mm på en lista. Beroende på en kolumns nummervärde så sätter jag in en radbrytning och räknar antal rader inom intervallet och delar så de precis ska få plats på en sida vid utskrift. Problemet är att jag vid utskrift från äldre Excelversioner (som vissa användare har) får bra utskrifter, men senaste Excel i vissa fall lägger en rad på egen sida. Finns det något sätt att vara säker på att utskrifterna blir som man vill i alla versioner av Excel? Vad bör jag tänka på? Marginalerna är satta så snävt som möjligt i VBA-koden. Jag kan inte konvertera till .pdf eftersom informationen inte får sparas på datorn, vilket annars var en idé jag hade. Tacksam för hjälp.
  12. Hej. Om man har vatten på händerna och tar exempelvis handsprit (alkoholhaltigt 70%) på händerna direkt, så känns händerna varma. Kan någon förklara i detalj varför detta händer och vad det är som händer?
  13. Ja, helt riktigt. Så det blev något galet när jag la till kodsnutten som plockar ut raderna automatiskt (med en UserForm och radioknappar). Här är all kod: Dim Valt As String Private Sub Btn_Starta_Click() If Opt_EVAA.Value = True Then MsgBox "Valt EVA A" Valt = "A" AllaSidor ElseIf Opt_EVAB.Value = True Then MsgBox "Valt EVA B" Valt = "B" AllaSidor ElseIf Opt_EVAC.Value = True Then MsgBox "Valt EVA C" Valt = "C" AllaSidor ElseIf Opt_EVAAB.Value = True Then MsgBox "Valt EVA AB" ElseIf Opt_EVACA.Value = True Then MsgBox "Valt EVA CA" ElseIf Opt_HIA.Value = True Then MsgBox "Valt HIA" Else MsgBox "Välj en sida att skriva ut" End If End Sub Sub AllaSidor() Application.ScreenUpdating = False ' Aktivera fönstret som skall formateras, typ: 'ActiveWindow.ActivatePrevious ' Alla sidor med linjer ' Använder variabeln a från rumsnummerkoden att avgöra hur många linjer med ' text det finns och väljer utskriftsområde utifrån det ' Ta bort onödiga rader och kolumner Columns("A:A").Select Selection.Delete shift:=xlToLeft Rows("1:1").Select Selection.Delete shift:=xlUp Columns("C:C").Select Selection.Delete shift:=xlToLeft Columns("G:J").Select Selection.Delete shift:=xlToLeft ' Namnge celler ' *** Startnummer för rumsnummer (A1) *** CurrNum = Cells(1, 1).Value a = 1 ' *** Hänvisning till radnummer att starta på *** Do ' *** Om rutan är tom *** If Cells(a, 1).Value = "" Then Cells(a, 1).Value = CurrNum ' *** Lägg till rumsnummer att skriva ut *** CurrNum = Cells(a, 1).Value ' *** Lägg till en ny siffra i rumnsummervariabeln *** Else ' *** Om rutan har en siffra i sig (rumsnr), Lägg till den i rumsnr variabeln *** CurrNum = Cells(a, 1).Value End If ' Skriva sekr i Kolumn C If Cells(a, 3).Value = "J" Then Cells(a, 3).Value = "Sekr" End If a = a + 1 ' *** Kör så länge rutan till höger (sängnr) inte är tom *** Loop While Cells(a, 2).Value <> "" If Valt = "A" Then TaUtRumA ElseIf Valt = "B" Then TaUtRumB ElseIf Valt = "C" Then TaUtRumC End If UserForm1.Hide ' Kolumnbredd Columns("A:F").EntireColumn.AutoFit Columns("C:C").Select Selection.ColumnWidth = 5 Columns("E:E").Select Selection.ColumnWidth = 60 'Columns("I:I").ColumnWidth = 11.86 'Columns("H:I").ColumnWidth = 18 ' Radlinjer Range("1:" & a).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .Weight = xlThin End With Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .Weight = xlThin End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlTop .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With ' Radhöjd If a < 10 Or a > 25 Then Range(Cells(1, 1), Cells(a - 1, 1)).Select Selection.RowHeight = (700 / (a - 1)) Else Range(Cells(1, 1), Cells(a - 1, 1)).Select Selection.RowHeight = (1400 / (a - 1)) End If ' Marginaler With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(3.93700787401575E-02) .RightMargin = Application.InchesToPoints(3.93700787401575E-02) .TopMargin = Application.InchesToPoints(0.5) .BottomMargin = Application.InchesToPoints(0.5) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = False .CenterVertically = False .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 100 End With Application.ScreenUpdating = True ' ' DateTimestamp Makro ' Rows("1:1").Select Selection.Insert shift:=xlDown Range("C1:G1").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Selection.Value = Now() Selection.Font.Bold = True ' Utskriftområde 'ActiveSheet.PageSetup.PrintArea = "$A$1:$I$" & a ActiveSheet.PageSetup.PrintArea = "$A$1:$F$" & a End Sub Sub TaUtRumA() Dim rng As Range, cell As Range, del As Range 'Set rng = Intersect(Range("A1:C20"), ActiveSheet.UsedRange) Set rng = Intersect(Range("A1:A200"), ActiveSheet.UsedRange) For Each cell In rng 'If (cell.Value) < 11 Or (cell.Value) > 15 If (cell.Value) < 11 Or (cell.Value) >= 16 Then If del Is Nothing Then Set del = cell Else: Set del = Union(del, cell) End If End If Next cell On Error Resume Next del.EntireRow.Delete End Sub Sub TaUtRumB() Dim rng As Range, cell As Range, del As Range 'Set rng = Intersect(Range("A1:C20"), ActiveSheet.UsedRange) Set rng = Intersect(Range("A1:A200"), ActiveSheet.UsedRange) For Each cell In rng If (cell.Value) < 16 Or (cell.Value) > 19 Then If del Is Nothing Then Set del = cell Else: Set del = Union(del, cell) End If End If Next cell On Error Resume Next del.EntireRow.Delete End Sub Sub TaUtRumC() Dim rng As Range, cell As Range, del As Range 'Set rng = Intersect(Range("A1:C20"), ActiveSheet.UsedRange) Set rng = Intersect(Range("A1:A200"), ActiveSheet.UsedRange) For Each cell In rng If (cell.Value) < 7 Or (cell.Value) > 10 Then If del Is Nothing Then Set del = cell Else: Set del = Union(del, cell) End If End If Next cell On Error Resume Next del.EntireRow.Delete End Sub tillägg: Jag ser nu att jag möjligen använder samma variabel (a) som räknar alla rader från början senare i dokumentet i formateringen. Kan vara så att det är det som spökar. Jag kollar vidare på det. Tack
  14. OK, jag får titta vidare på det. Saken är den att om jag raderar raderna manuellt _innan_ jag kör formateringskoden, så blir det helt rätt, det var därför jag tänkte att jag gjort något fel i kodsnutten som hämtar ut raderna åt mig som jag nyligen lade till. Om du vill kan jag posta hela koden som jag har.
  15. Jag har en VBA kod som formaterar ett exceldokument (en lång lista, där endast vissa rader ska behållas beroende på nummer i första kolumnen). När jag använder följande kod, så plockas rätt rader ut, men det blir en massa rader kvar under som är tomma, men räknas in i dokumentet och då blir radhöjden fel, när jag formaterar listan för utskrift. Det jag vill göra är att radera alla rader förutom de jag plockat ut. Går det? Sub TaUtRumA() Dim rng As Range, cell As Range, del As Range Set rng = Intersect(Range("A1:A200"), ActiveSheet.UsedRange) For Each cell In rng If (cell.Value) < 11 Or (cell.Value) >= 16 Then If del Is Nothing Then Set del = cell Else: Set del = Union(del, cell) End If End If Next cell On Error Resume Next del.EntireRow.Delete End Sub Tillägg: Så här ser listan ut från början: Så här ska den se ut: Men så här blir det:
×
×
  • Skapa nytt...