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

Tommy H

Medlem
  • Antal inlägg

    277
  • Gick med

  • Senaste besök

Allt postat av Tommy H

  1. Jag testade även med Mikael63's tanke om att lägga skrivarbytet före Word-koderna, och det verkade också fungera!
  2. Ja! Där satt den på en endaste kodrad! Tack!
  3. Det är ju ett krångligt makro eftersom jag behöver kolla igenom vilken port mina resp. skrivare ligger på, men så här ser det ut! Dim NetWork As Variant Dim X As Integer myprinter = "SKR-MMX-64-A4-Färg-ohålad" NetWork = Array("Ne00:", "Ne01:", "Ne02:", "Ne03:", "Ne04:", _ "Ne05:", "Ne06:", "Ne07:", "Ne08:", _ "Ne09:", "Ne10:", "Ne11:", "Ne12:", _ "Ne13:", "Ne14:", "Ne15:", "Ne16:", _ "LPT1:", "LPT2:", "File:", "SMC100:") X = 0 TryAgain: On Error Resume Next Application.ActivePrinter = myprinter & " på " & NetWork(X) If Err.Number <> 0 And X < 16 Then X = X + 1 GoTo TryAgain ElseIf Err.Number <> 0 And X > 15 Then GoTo PrtError End If On Error GoTo 0 NetworkPrinter = myprinter & " på " & NetWork(X) Application.ActivePrinter = NetworkPrinter 'här kan jag se att jag har rätt skrivare! Dim objDoc Set objWord = CreateObject("Word.Application") Set objDoc = objWord.Documents.Open("R:\Anbud.docx") objWord.Visible = True objWord.PrintOut Ditt förslag om att styra Word hårdare har jag inte testat ännu! Ska kolla det efter lunch
  4. Jo, det går och det har jag gjort, men ändringen av skrivare når inte Word utan påverkar endast Excel. Det innebär att kollar jag i koden så har jag rätt skrivare, men när Word dokumentet öppnas så ligger standardskrivaren kvar i Word. Jag når inte fram till att ändra den i Word som sagt!
  5. Mja, jag vill ju kunna styra det via vba-koden i Excel, och det är väl inte riktigt denna lösningen?
  6. Jag behöver skriva ut ett word dokument men det skall skrivas ut på en annan skrivare än standardskrivaren. Hur byter jag skrivare för word? Dim objWord As Object Set objWord = CreateObject("Word.application") objWord.Documents.Open Filename:="r:\anbud\ica.doc" objWord.Visible = True objWord.Application.PrintOut Trots att jag kanändra skrivaen i Excel så förs ju inte det över till word utan där ligger standardskrivaren kvar. /Tommy
  7. Mja, jag har kanske varit lite otydlig. Kodraderna är ju utplockade från sin helhet, då det jag går bet på är just det sista villkoret. Jag vill kolla om ett antal celler runt min "offset" är tomma eller innehåller något. Det är den sista kod-radens sista And som jag inte får att fungera. Jag vill ju att oavsett om det står "IN2" eller "IN5" på .offset (2,0) så ska det tas med i If-satsen. Har jag koden enligt nedan, så accepteras inte villkoret även om allt uppfylls på Excelbladet. Jag misstänker att jag inte kan ha med en "text kontroll" i If-stasen men jag vet som sagt inte.... Sub IN_Reserver() Dim C As Range Dim d As Range Dim antal As Integer antal = 0 Dim firstAddress As String With Worksheets("Prenad").Range("K:K") Set C = .Find("IN" & "*", LookIn:=xlValues, LookAt:=xlWhole) If Not C Is Nothing Then firstAddress = C.Address Do On Error GoTo 90 With C Dim rng3upp As Range Set rng3upp = C.Offset(-3, -8).Resize(3, 1) '3 rader upp Dim rng3ner As Range Set rng3ner = C.Offset(1, -8).Resize(3, 1) '3 rader ner 'Kollar om det finns 3st tomma rader ovanför. If Application.WorksheetFunction.CountBlank(rng3upp) = 3 _ And .Offset(0, -8) <> "" And .Offset(0, 2) = "" And .Offset(1, 1) = "" And .Offset(0, 6) = "" And .Offset(2, 0) = "IN" & "*" Then bla, bla, bla
  8. Hej! Varför kan jag inte lägga in ett vilkor för att kolla om en del av innehållet i min cell innehåller nämnd text? I koden nedan så skulle jag vilja ha ett antal förutsättningar (fler än dom som jag har med här) och även då ha med det sista att om cellen innehåller något som börjar på "IN" och innehåller mer (typ en siffra är det) så gör då det och det... If Application.WorksheetFunction.CountBlank(rng3upp) = 3 _ And .Offset(0, -8) <> "" And .Offset(2, 0)= ("IN" & & "*") Then Vad gör jag för fel då koden ej köper vilkoret! (allt köps utom sista vilkoret) /Tommy
  9. Ja, det går ju inte att vänta på att det ska bli tråkigt. Kollade och det ger #VÄRDEFEL! från alla cellerna! Lite skumt dock för i H & I-kolumnen så är det rödmarkerad text medan övrig är svarta som vanligt...
  10. =ANTAL(A1:B10) (räknar siffror) ger svaret 0 =ANTALV(A1:B10) (räknar allt innehåll, även tomma formler) ger svaret 22 =ANTAL.OM(A1:B10;"*") (verkar bara räkna formler med synligt innehåll) ger svaret 22 Koden: Dim test As Variant Set test = MyRn2.Find(What:="*", LookIn:=xlValues) If test Is Nothing Then MsgBox "MyRn2 är tomt" End If ger svaret 0 Ja, jag kunde inte vänta med att sätta in koden i verkligheten och den jobbar precis som önskat! Snyggt lösning och Stort Tack! (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) Jag har tyvärr delat ut min "tumme upp" redan! /Tommy
  11. Tackar för det! Hittar jag inte lösningen där så vete gudarna.... /Tommy
  12. Jo, jag är medveten om att det inte är det vackraste som jag har knåpat ihop! Du har säkert rätt i vad du säger, jag tycker bara att det är synd att lägga tid på något som trots allt fungerar förutom skönhetsfelet med ScreenUpdating.... Får nog göra något nytt! Tack ändå!
  13. Hej Ove! Det jag vill uppnå är att om det inom min MyRn2 är helt tomt så ska jag lägga till text i 2st celler, annars så stegar jag vidare via Find-funktion. MyRn2 består ju av 12 kolumner och 4 rader = 48 celler, så det är ju ett smidigt sätt att se om dessa är tomma! Tråkigt bara att cellerna är "visuellt" tomma men ändå kan innehålla något som räknas i "IF WorksheetFunction.CountA(MyRn2) >0". Jag verkar behöva .ClearContents också för att rensa bort det osynliga, men för att göra det så måste ju området MyRn2 vara tomt annars raderas ju det som ska vara kvar. Lite Moment 22?
  14. Hej! Jag återkommer till "IF WorksheetFunction.CountA(MyRn2) >0 then". Det fungerar klockrent utom i vissa fall då funktionen visar (via felbevakningen) att det kan ge svaret 2, 3 eller 4 trots att Myrn2 är tomt. Det ligger något gammalt dolt kvar i cellerna som inte syns. Något tips hur man kommer runt det? Kan man ev. räkna om det finn "text" istället för om det är "något" i cellen, eller? /Tommy
  15. Hej Monshi! Hmmm...jag vet inte om jag "vågar" skicka över koden då den är 20år gammal och det var innan du hade läxat upp mig med mina "GoTo" & Selection rader... Jag har inte velat göra om koden då den trots allt fungerar. Här kommer den iaf: Sub Uppdatera_Skåpkalkyl_Schneider() Application.ScreenUpdating = False Dim wbDatabas As Workbook Set wbDatabas = Workbooks("DATABAS.xls") If wbDatabas Is Nothing Then On Error Resume Next Workbooks.Open Filename:="R:\PRENAD\kalkyl\DATABAS.xls", _ UpdateLinks:=0 On Error GoTo 0 End If Workbooks("DATABAS.xls").Activate Sheets("DATABAS").Select 5 ActiveWindow.ActivateNext If ActiveSheet.Name = ("KALKYL") Then GoTo 6 Else GoTo 5 End If 6 Sheets("KALKYL").Select ActiveSheet.Unprotect ActiveSheet.Protect DrawingObjects:=True, CONTENTS:=True, Scenarios _ :=True Range("A4").Select 'startläge på källblad 7 Do 'Startläge för loop On Error GoTo hanteraFel 20 Sheets("KALKYL").Select 'förbereder för ny variabel ActiveCell.Offset(1, 0).Select 'hämtar startpos för att hämta rad i källblad If ActiveCell = 0 Then 'rader som ej skall hämtas GoTo 7 Else 'rader som skall hämtas Resume Next End If Dim X As Integer 'variabel för källblad (=x) X = ActiveCell.Value 'variabel för källblad (=x) ActiveCell.Offset(0, 1).Select 25 Workbooks("DATABAS.xls").Activate Sheets("DATABAS").Select ActiveSheet.Unprotect Columns("M:M").Select 'skall söka rad på källblad On Error GoTo 30 'om sökt rad ej hittas Selection.Find(What:=X, After:=ActiveCell, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:= _ xlNext, MatchCase:=True).Activate If ActiveCell = 0 Then 'om sökt rad ej hittas så Sheets("KALKYL").Select 'gå till målblad för att ta ny rad ActiveCell.Offset(0, -1).Select 'återgår till variabler på målblad GoTo 7 'börja ny loop Else GoTo 40 'gå vidare på källblad End If 40 ActiveCell.Offset(0, -12).Select 'går till "A"-kolumnen på källblad ActiveCell.Range("A1:C1,H1:K1").Select 'markerar det som skall kopieras Selection.Copy 'kopierar Sheets("KALKYL").Select 'går till "Målblad" Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False 45 Workbooks("DATABAS.xls").Activate Sheets("DATABAS").Select Application.CutCopyMode = True ActiveCell.Offset(0, 0).Select 'går till "A"-kolumnen på källblad ActiveCell.Range("A1:C1,H1:K1").Select Selection.Copy 47 ActiveWindow.ActivateNext If ActiveSheet.Name = ("KALKYL") Then GoTo 48 Else GoTo 47 End If 48 Sheets("KALKYL").Select Selection.PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False ActiveCell.Offset(0, -1).Select 'återgår till variabler på målblad Loop 30 ActiveWindow.ActivateNext If ActiveSheet.Name = ("KALKYL") Then GoTo 35 Else GoTo 30 End If 35 Sheets("KALKYL").Select 'om sökt rad ej hittas på källblad gå till målblad Resume Next 'markerar av felhanterare ActiveCell.Offset(0, -1).Select 'återgår till variabler på målblad GoTo 7 'börja ny loop hanteraFel: 'allmän felhanterare If ActiveCell = 0 Then 'om varibeln på målbladet är 0 Resume Next 'markerar av felhanterare GoTo 7 'börja ny loop ElseIf ActiveCell = 173 Then 'sista raden på målbladet GoTo 100 'går till makroavslut Else Resume Next 'markerar av felhanterare Sheets("KALKYL").Select 'om värdet inte är 0 eller sista raden är nådd ActiveCell.Offset(0, -1).Select 'återgår till variabler på målblad GoTo 20 'förbereder för ny variabel End If 100 Range("C3").Select 'intar slutposition på målblad Workbooks("DATABAS.xls").Activate Sheets("DATABAS").Select Range("A3").Select 'intar slutposition på källblad ActiveWindow.SmallScroll up:=3 'intar slutposition på källblad ActiveSheet.Protect DrawingObjects:=True, CONTENTS:=True, Scenarios _ :=True 60 ActiveWindow.ActivateNext If ActiveSheet.Name = ("KALKYL") Then GoTo 70 Else GoTo 60 End If 70 Sheets("KALKYL").Select 'intar slutposition på målblad Range("D77").Select 'Raderar pålägg Selection.ClearContents 'Raderar pålägg Range("A1").Select 'intar slutposition på målblad Application.GoTo ActiveCell, Scroll:=True Range("C2").Select 'intar slutposition på målblad ActiveSheet.Protect DrawingObjects:=True, CONTENTS:=True, Scenarios _ :=True Application.ScreenUpdating = True 'uppdaterar skärmen igen MsgBox "Skåpkalkyl är uppdaterat för Schneider" 'slutmeddelande End Sub ' Inte snyggt, jag vet men den fungerar, förutom ScreenUpdatingen som har fungerat tidigare.... /Tommy
  16. Ja, det fungerar precis som jag önskade, och så enkelt med bara en rad kod! Stort tack! /Tommy
  17. Hmmm.... Ja, funktionerna har jag ju bry att få att fungera... Det jag vill är att få bekräftat om det finns något i mitt område för i så fall ska jag söka vidare till nästa, annars om det är tomt så ska något annat ske. Dvs. jag kommer att gå vidare med en "If-sats" som baseras på typ sant eller falsk för innehållet i mitt område. Det känns ju tungt att behöva "räkna" eller kontrollera, ja vad blir det 15x4=60st celler för varje område. Men visst, tanken är ju god! Hur gör jag med ditt förslag? kan jag bara lägga in den raden i min kod? måste inte funktionen då ligga i en egen modul? (som sagt jag kan inte det här med funktionerna) /Tommy
  18. Hej! Det är tydligen lite problem med att få "Application.ScreenUpdating = False" att fungera i vissa fall. Jag har Googlat omkring en del och många har samma problem som jag. Det verkar som om koden inte läses in utan tolkas som "True". Problemet verkar uppstå då ett makro kallar på ett annat. Det finns som sagt mycket på nätet om detta och många olika förslag på lösning, men jag har inte fått något att fungera bra. Har någon ett bra tips? /Tommy
  19. Hej! Jag skulle vilja kontrollera om ett cellområde är tomt. Jag har följande kod, men det måste finnas något bättre sätt än att kontrollera varje enskild cell i området. With C Dim myCell As Range Dim MyRn2 As Range Set MyRn2 = Range(.Offset(0, 5), .Offset(4, 16)) For Each myCell In MyRn2 If myCell = "" Then .Offset(0, 14).Value = "RESERV" End If Next myCell End With Det ska givetvis till lite mer runt omkring sedan men jag behöver ha koll på om det är tomt eller ej! /Tommy
  20. Ja, jag tror du är rätt på det med referenserna Monshi! Denna "microsoft word 15.0 object library" saknar jag på min hemmaburk då jag endast har "microsoft word 12.0 object library". Öppnar jag en gammal backup vba hemma så fungerar allt klockrent. (det har ju dock skett lite nya funktioner sedan dess) Det gick väl bra innan vi bytte till Win10 och senaste office på jobbet för då kördes det ju också Win 7 där. Nu har jag ju pulat lite i mina makro på jobbet och sparat det där, och då vill dom köra mot 15.0. Något tips hur jag kommer runt detta? (dock inget bra alternativ att uppgradera privat...) Det verkar ju inte som man kan spara utan att ha referensen i bockad och sedan tro att det ska hämtas vad som finns på min hemburk. Nä, det vore väl för enkelt.... Söker man på det så verkar det som ett "rätt så vanligt" problem, men jag hittar ingen bra lösning. Det går ju inte heller att ändra i koden då den blir spärrad av "Saknar DLL-fil" så fort man försöker att gå in i modulerna. Moment 22?
  21. Det går inte ens att välja ngt makro för det blir tvärstopp hela tiden. Jag bifogar en wordfil med några skärmdumpar. Det fattas ju en referens men det har inte spelat ngn roll tidigare. Jag har växlat mellan hemmadatorn och jobbdatorn utan problem. Har MS kanske uppdaterat ngt som ställer till det? Det dök ju upp väldigt plötsligt... Dok1.docx
  22. Det stoppar inte vid en rad utan direkt! referenserna skiljer sig åt på "Microsoft Word 15.0 Object Libary" Denna har ett lägre nummer hemma, men det är ju Word....eller? Det är ju klart så att jag har en nyare version av office på jobbet, men ska det inte fungera ändå?
  23. Hej! "Det går inte att ladda DLL filen" Detta meddelande har börjat att dyka upp då jag vill köra mina makron! Inne ifrån arbetsboken, så händer inget mer än att det hänger sig, däremot så kommer meddelandet upp då jag är inne i Visual Basic modulen och vill köra därifrån. Jag kör samma filer på olika datorer och det fungerar (iaf ännu) på jobbets Win10 burk. Hemma är det Win7 burkar, men det har inte varit ngt problem tidigare. Någon idé om hur jag löser detta? /Tommy
  24. Hej och tack för ditt svar (igen)! Jag fick inte till det med ditt tidigare förslag utan det blev en annan klumpig lösning som jag sedan har gått och retat mig på. Jag är ju inte så hemma på detta men ger mig f-n på att lösa det, men ibland så tar det bara för mycket tid... Skall fortsätta att testa! Det kan ju inte (borde inte) vara så förbaskat svårt att se om ett cellområde är tomt. /TH
×
×
  • Skapa nytt...