PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBAMakro för utskriftMakro för utskrift
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2016-12-14 17:29
 
Hej! Om jag skriver t . ex ordet "Print" i cell A1 samt trycker retur så vill jag att min skrivare ska skriva ut innehållet i cell B1, C1 och D1 samt radera detta efteråt. Jag har experimenterat litet med ett makro men inte lyckats riktigt...
Nytt inlägg
 2016-12-15 12:05
 

Det finns tyvärr inget jätteenkelt sätt att övervaka förändingen av en enda cell. Du får lägga en händelsebevakare som tittar på hela bladet och sedan kolla om du stod i A1 när förändingen skedde. 

Jag gillar inte att arbeta med händelsehanterare, men jag tror att det är det enda sättet att få till det som du vill (Det enklaste vore naturligtvis att läggaen knapp i A1 som startar makrot och låter folk trycka på den istället)

 

1. Stå i ditt kalkylblad,

2. Högerklicka på fliknamnet längst ner (typ: Blad1).

3. välj "Visa kod"

Klistra in någontin i stil med det här:

 

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "$A$1" Then
    Exit Sub
End If
' 1. Om du inte står i A1-> avsluta makrot
' 2. Adressen måste skrivas med $-tecken
 
 
' kör bara kod om texten i A1 är "Print":
 

If Target.Value = "Print" Then

    Range("B1:D1").PrintOut

    Range("B1:D1").ClearContents

End If

 
End Sub
 
 
 
 

 

Nytt inlägg
 2016-12-15 16:16
 
Tack för ditt svar, det fungerade perfekt! Hur gör man om man inte vill låsa fast sig vid just A1? Jag vill gärna kunna skriva "Print" i vilken cell som helst i en bestämd kolumn t. ex. A-kolumnen. Testade själv med "$A$1:$A$1000" och även med semikolon utan att det lyckades. Hur avgränsar man intervallet? Tanken är att inte behöva använda tangentbord och mus utan istället styra alla funktioner med skannade streckkoder på ett papper. Den här blivande kassarapporten ska kunna användas av tekniska idioter nämligen. Det fungerade bra med en streckkod tillsammans med din VB-kod. Ps. Finns det ett liknande sätt för att ångra inmatningar d.v.s eventuella felskanningar? Ds.
Nytt inlägg
 2016-12-16 11:25
 

 Target.Column <> 1 

 
Annars är olika vatianter av Intersect det mest flexibla.
Kolla här för olika exempel på olika sätt att styra Worksheet_Change
https://msdn.microsoft.com/en-us/library/office/ff839775.aspx
 
 
Om du vill köra en kod på valfri rad får du utgå ifrån "Target" och förskjuta/rezia de omdåden du vill behandla. Exempel (Jag lade in en seect och kommenterade bort ' print/clear bara för att du skall kunna testa lite smidigare)
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then
    Exit Sub
End If
 
If Target.Value = "Print" Then
    With Target.Offset(0, 1).Resize(1, 3)
        .Select
        '.PrintOut
        '.ClearContents
    End With
End If
 
End Sub
 
 
 
Sista frågan vet jag inte riktigt hur du menar. När man kör VBA så går det inte att ångra på samma sätt som när man jobbar manuellt. Dvs man kan inte köra motsvarigheten till  [Ctrl+Z]. Eller, det kan man, med Application.Undo,  men då ångrar man det senaste människan gjorde, inte makrot
https://msdn.microsoft.com/en-us/library/office/ff838189.aspx
 
Men när du kör makron så vet du ju vad som hänt innan (det är ju du som skapat makrot) och du bör kunna köra det "baklänges". Men eftersom jag inte kör streckkoder och inte alls vet hur du får in data osv så vet jag inte alls vad som är lämpligt.

 

Nytt inlägg
 2016-12-17 19:37
 
Hej! Din kod för utskrifter fungerade efter några modifieringar men vid varje utskrift får jag även meddelandet "Körfel 13 Inkompatibla typer". Felsökaren fastnar vid: "If Target.Value = "Skriv ut" Then" Så här ser koden ut för tillfället: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 1 Then Exit Sub End If ' 1. Om du inte står i A1-> avsluta makrot ' 2. Adressen måste skrivas med $-tecken ' kör bara kod om texten i A1 är "Skriv ut": If Target.Value = "Skriv ut" Then With Target.Offset(0, 1).Resize(1, 3) Range("B1:F34").PrintOut Range("A1:A1000").ClearContents End With End If End Sub Vad gäller den andra frågan så är min önskan att man ska kunna ångra det senaste man skrev i en cell, (ctrl-z) genom att skriva "Radera". Låt säga att jag skriver i A1, trycker retur, hamnar i A2 men vill nu ångra vad jag skrev i A1. (Du kan bortse från streckkoderna. Det enda dom gör är att skriva en text eller ett tal i vald cell precis som om man hade använt tangentbordet).
Nytt inlägg
 2016-12-22 09:24
 

 Hej. 

Dina modifikationer gör with satsen överflödig. With target.offset(0,1).Resize(1, 3) betyder ungefär: Gör något med de tre raderna till höger om cellen som triggade eventet, ( i ditt fall cellen där det stod print). Nu sätter du istället en egen range, skriv ut celler B1:F34 samt rensa alla celler i kolumn A. (Så du kan ta bort din with sats)

Ditt körfel uppstår pga att du när du rensar A1:A1000 triggas eventhanteringen igen. Target.adress <> 1 är uppfylld då du trigagde kolumn A. Du fastnar sedan på target.value = "Skriv ut" efterssom cell A1 nu är tom och genererar ett typfel.. 

Undvik att trigga eventhantering igen genom att innan clearcontents, skriva application.enableevents = False.

Sätt därefter på eventhanteringen innan din sub stängs. application.enableevents = True

God Jul och Gott nytt

Christian

Nytt inlägg
 2016-12-27 10:20
 
Hej Christian! Tack för din hjälp, det fungerade direkt, det är dom små detaljerna som gör det! God fortsättning och gott nytt år! //Håkan
Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBAMakro för utskriftMakro för utskrift

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter