[VisualBasic] commando om clipboard te legen..

Pagina: 1
Acties:
  • 855 views sinds 30-01-2008
  • Reageer

  • Eindbaas
  • Registratie: Maart 2001
  • Laatst online: 05-12 22:05
Ik ben bezig met een macro in Excel. Daarin wordt iets naar het clipboard gekopieerd. Na iets met die gegevens gedaan te hebben wil ik dat die macro het clipboard weer leegmaakt.

Heb al Clipboard.Clear geprobeerd, maar werkt niet. Iemand van jullie een idee?

  • Eindbaas
  • Registratie: Maart 2001
  • Laatst online: 05-12 22:05
Hier de gehele macro:


Sub Test1()

'Deze test zorgt ervoor dat er geen lege tarieven in SBClient komen

Sheets("scherm2").Select
Range("E4").Activate
If ActiveCell.Value = 0 Then Fout Else Starten
(vraag: hij moet stoppen als het geen waarde in de cel staat. Als er nu (#waarde!) of(#N/B) in deze cel komt wordt ik naar de editor verwezen dat ik er een fout in heb staan. Wat moet ik hier veranderen???)


End Sub
Sub Fout()

response = MsgBox("Er is geen tarief geselecteerd!", 0)

End Sub

Sub Starten()

response = MsgBox("Wilt u starten met het kopieren?", 4)
If response = vbYes Then KopieerScherm1

End Sub

Sub Test2()

timeout
timeout
timeout
Sheets("scherm2").Select
Range("E4").Activate
If ActiveCell.Value = 0 Then Fout Else KopieerScherm1

End Sub

Sub KopieerScherm1()

' Kopieert scherm1

Application.ScreenUpdating = False 'zorgt ervoor dat het scherm weer ververst wordt
(vraag: Voor de Macro gaat kopieeren wil ik graag dat het klembord leeg gemaakt wordt.
Ik heb dit al met clipboard.clear geprobeerd maar krijg het niet voor elkaar. Graag advies!!!)

Sheets("Scherm1").Select
Range("A3:A26").Select
Selection.Copy
Sheets("Scherm2").Select
Range("A2").Select

Application.ScreenUpdating = True 'zorgt ervoor dat het scherm weer ververst wordt

Doorsturen_SBClient1
End Sub
Sub Doorsturen_SBClient1()

'Stuurt de gekopieerde gegevens van Scherm een en twee door naar SB-Client

AppActivate "sbclient - roadrunner"

timeout
SendKeys "%", True
SendKeys "E", True
SendKeys "P", True
SendKeys "{f2}", True
timeout
timeout

AppActivate "microsoft excel"

KopieerTarieven
End Sub
Sub KopieerTarieven()

'kopieert de tarieven

Application.ScreenUpdating = False 'zorgt ervoor dat het scherm weer ververst wordt

Sheets("Scherm2").Select
Range("A53").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("A2").Select

Application.ScreenUpdating = True 'zorgt ervoor dat het scherm weer ververst wordt

Doorsturen_SBClient2
End Sub
Sub Doorsturen_SBClient2()

' Stuurt de tarieven door naar SB-Client.

AppActivate "sbclient - roadrunner"

timeout
SendKeys "%", True
SendKeys "E", True
SendKeys "P", True
SendKeys "{f2}", True
timeout
timeout

AppActivate "microsoft excel"

ClearKLembord
End Sub
Sub ClearKLembord()

'Dit maakt het klembord leeg

Application.ScreenUpdating = False 'zorgt ervoor dat het scherm weer ververst wordt

Sheets("Scherm2").Select
Range("F70").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F71").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F72").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F73").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F74").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F75").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F76").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F77").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F78").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F79").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F80").Select
Selection.Copy
Sheets("Scherm2").Select
Range("F81").Select
Selection.Copy

Application.ScreenUpdating = True 'zorgt ervoor dat het scherm weer ververst wordt

Verhogen
End Sub
Sub Verhogen()

'Dit verhoogt de teller en gaat naar volgende tarief.

Application.ScreenUpdating = False 'zorgt ervoor dat het scherm weer ververst wordt

Sheets("Teller").Select
Range("A5").Select
Selection.Copy
Range("A3").Select
Selection.PasteSpecial Paste:=xlValues
Sheets("Scherm2").Select
Range("A2").Select

Application.ScreenUpdating = True 'zorgt ervoor dat het scherm weer ververst wordt

'Doorgaan
Test2
End Sub
Sub Doorgaan()

'Dit start de macro weer vanaf het begin.

response = MsgBox("Wilt u doorgaan naar het volgende tarief?", 4)
If response = vbYes Then Test2

End Sub
Sub timeout()

For i = 1 To 100
Application.StatusBar = "Please Wait: " + Str$(i)
Next i

Application.StatusBar = ""

End Sub
Sub EnkelVerhogen()

'Deze sub verhoogt enkel de teller en zorgt ervoor dat volgende tarief in de rekenreeks komt

Application.ScreenUpdating = False 'zorgt ervoor dat het scherm weer ververst wordt

Sheets("Teller").Select
Range("A5").Select
Selection.Copy
Range("A3").Select
Selection.PasteSpecial Paste:=xlValues
Sheets("Scherm2").Select
Range("A2").Select

Application.ScreenUpdating = True 'zorgt ervoor dat het scherm weer ververst wordt

End Sub

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 20-12 11:28
Op maandag 08 oktober 2001 17:29 schreef wouter76 heel veel tekst
Misschien een lege string op het klembord zetten? Ik weet echter niet zo snel hoe dat in VBA moet...

-- EDIT: --
In VB werkt Clipboard.Clear wel. Maar VBA is helaas geen VB.

Verwijderd

ik zou het ook niet weten. wel een goede heb het ook wel eens nodig. los het inderdaad nu op met lege cellen te kopieeren.

  • Eindbaas
  • Registratie: Maart 2001
  • Laatst online: 05-12 22:05
Gandallf74, de meesten onder ons hebben het zo nu en dan wel nodig :)

Hmmm, hier zouden toch wat meer VB experts mogen rondhuppelen wat mij betreft :P

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 23:45

Gerco

Professional Newbie

Op maandag 08 oktober 2001 22:14 schreef wouter76 het volgende:
Hmmm, hier zouden toch wat meer VB experts mogen rondhuppelen wat mij betreft :P
* Gerco meldt zich.

Alleen hou ik niet van VBA, dat beschouw ik als nodeloos moeilijk doen. Alles wat in VBA kan, kan je met VB+COM interface naar het betreffende prog ook.

Ik vind die beperkingen van VBA en vooral die vreselijke form designer in Access vreselijk. En dat een control de FOCUS moet hebben voor je de Properties kan bekijken vind ik ronduit belachelijk!

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • tus
  • Registratie: November 2000
  • Laatst online: 05-07-2012

tus

Zoals Gerco terecht zegt, moet je VBA niet met VB vergelijken. VBA is een subset van VB. En dat VBA werkt gewoon van geen kant.

Maar ff terug on topic. Als je wel iets naar het clipboard kan kopieren, waarom kopieer je er dan niet een lege string ernaar toe?

Veel suc6 met VBA (heb je nodig, dat ellenlange gepiegel met die forms ook en dat ontiegelijk lang debuggen, omdat het net niet dat doet wat jij wilt)

Verwijderd

probleem is als je in excel een macro wilt schrijven (dus VB) is dat het enige waar je het mee kan doen.

Dus ik zit met een probleem. En inderdaad we doen het nu met een lege string maar is beetje omweg lijkt me.

groet

  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 14-12 21:11
Misschien direct een API Call gebruiken ?

Declare Function EmptyClipboard Lib "user32" () As Long

EmptyClipboard


(komt van http://support.microsoft.com/support/kb/articles/q159/8/23.asp?FR=0 en is over VB4, maar wie weet werkt dat wel)

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11 13:15

Korben

() => {};

Op dinsdag 09 oktober 2001 12:26 schreef ParaNoiMia het volgende:
(...)
code:
1
2
3
Declare Function EmptyClipboard Lib "user32" () As Long

EmptyClipboard

(...)
Juist...

Afbeeldingslocatie: http://www.forum4u.f2s.com/images/smileys/rtfm.gif

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • Eindbaas
  • Registratie: Maart 2001
  • Laatst online: 05-12 22:05
gaat dit een beetje werken met VBA?

  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 14-12 21:11
Is maar 1 manier om achter te komen toch ?
20 seconden werk gok ik

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 11:03
Ja hoor, heb zelf wel eens op die manier in word (is ook vba toch?) de MoveFile API ofzo gebruikt, werkt prima.
Pagina: 1