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

Tommy H

Medlem
  • Antal inlägg

    272
  • Gick med

  • Senaste besök

Om Tommy H

  • Medlemstitel
    Aktiv
  • Födelsedag 1958-05-16

Kontaktinformation

  • Hemsida
    http://

Profil

  • Ort
    Staffanstorp

Senaste profilbesöken

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

  1. 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
  2. Tommy H

    Excel VBA vilkor i If-sats

    Suveränt! Man lär så länge man lever! Tack!
  3. Tommy H

    Excel VBA vilkor i If-sats

    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
  4. 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
  5. 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...
  6. =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
  7. Tackar för det! Hittar jag inte lösningen där så vete gudarna.... /Tommy
  8. 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å!
  9. 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?
  10. 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
  11. 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
  12. Ja, det fungerar precis som jag önskade, och så enkelt med bara en rad kod! Stort tack! /Tommy
  13. 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
  14. 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
  15. 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
×