• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

in Vb testen of kladblok leeg is

Status
Niet open voor verdere reacties.

caffie

Gebruiker
Lid geworden
2 jan 2008
Berichten
291
ik heb een marco gemaakt
deze verwerkt de data die uit een klemblord worden gekopieerd
Nu wil ik eerste kijken of er wel data is
Als de data er niet is loopt de macro vast (foutmelding 1004)

zoiets

if kladblok is leeg dan
msgbox("leeg")
Else
de rest van de marco uitvoeren
End if


graag met een beetje uiteg


vast bedankt


Rob
 
Laatst bewerkt:
Je kan beter je macro plaatsen, anders worden er waarschijnlijk dingen dubbel gedaan waardoor fouten gaan ontstaan en je hier dan weer komt melden dat het niet werkt.
 
Laatst bewerkt:
Bedoel je met kladbok het klembord? Uit de code kan ik niet opmaken waar wat vandaan komt en wat er verder moet gebeuren. Dus graag een beetje meer uitleg.
 
De data die uit het klembord komt word naar andere cellen gezet
Dat werk allemaaal

Maar wil vooraf controleren of het klembord data bevat of dat deze leeg is
Zodat ik de fout kan afvangen.


ik zoek dus iet s als:

is klembord leeg
melding (geen data)
anders
verder met macro


De data komt uit het windows klembord
PS ik werk met excel 2007 ned.
heb een windows 7 ned. (32) besturing
ben een leek met VB
dus graag een stukje uitleg
 
Laatst bewerkt:
Zo zie je maar weer hoe belangrijk het is zaken bij de juiste naam te noemen.
Zoiets dan:
Code:
On Local Error Resume Next
'Je Paste actie
If Err Then MsgBox "Geen data": Err.Clear
On Local Error Goto 0

Denk er wel aan dat er een verschil is tussen het Windows Clipboard en het Office Clipboard.
Ook als er iets staat in het Windows Clipboard zal de Paste actie dat plaatsen.
 
Laatst bewerkt:
Ook maar eens op Google gezocht.
Code:
Private Declare Function CountClipboardFormats Lib "user32" () As Long


Sub Sample()
    If (CountClipboardFormats() = 0) = True Then
        MsgBox "Clipboard is empty"
    Else
        MsgBox "Clipboard is not empty"
    End If
End Sub
 
Gebruik dan dit om het voor zowel 32- als 64-bit Office te laten werken:
Code:
#If Win64 Then
    Declare PtrSafe Function CountClipboardFormats Lib "user32" () As LongPtr
#Else
    Private Declare Function CountClipboardFormats Lib "user32" () As Long
#End If
 
Zo zie je maar weer hoe belangrijk het is zaken bij de juiste naam te noemen.
Zoiets dan:
Code:
On Local Error Resume Next
'Je Paste actie
If Err Then MsgBox "Geen data": Err.Clear
On Local Error Goto 0

Denk er wel aan dat er een verschil is tussen het Windows Clipboard en het Office Clipboard.
Ook als er iets staat in het Windows Clipboard zal de Paste actie dat plaatsen.

Deze werkt niet want ik moet eerste controleren of er data is
tijdens de paste lopt de macro vast en zal dus niet veder gaan.
toch bedankt voor de tip.
 
Ook maar eens op Google gezocht.
Code:
Private Declare Function CountClipboardFormats Lib "user32" () As Long


Sub Sample()
    If (CountClipboardFormats() = 0) = True Then
        MsgBox "Clipboard is empty"
    Else
        MsgBox "Clipboard is not empty"
    End If
End Sub


ik heb

If (CountClipboardFormats() = 0) = True Then
MsgBox "Clipboard is empty"
Else
MsgBox "Clipboard is not empty"
End If

in mijn macro geplakt maar dan werkt deze niet
Wat doe ik fout
ben eeln leek
Zeker als is het vergelijk met de kenis die hier aanwezig is.
toch vast bedankt
 
De door mij geplaatste code werkt ook niet feilloos.
Als ik iets kopieer uit Excel (tekst of getallen) gaat het naar de klembord, maar de melding is 'empty'.
Als ik iets kopieer vanaf het forum (tekst) gaat het ook naar het klembord, en is de melding 'not empty'.

Begrijp het nog niet helemaal, dus laat eerst maar zitten, en zal als ik tijd heb er nog eens naar kijken.
 
De door mij geplaatste code werkt ook niet feilloos.
Als ik iets kopieer uit Excel (tekst of getallen) gaat het naar de klembord, maar de melding is 'empty'.
Als ik iets kopieer vanaf het forum (tekst) gaat het ook naar het klembord, en is de melding 'not empty'.

Begrijp het nog niet helemaal, dus laat eerst maar zitten, en zal als ik tijd heb er nog eens naar kijken.


Ik heb ergens op het web het volgende gevonden
Deze laat zelfs zien wat er in het kladblok zit
dit heb ik niet nodif maar het werkt wel
nog iemand een goede tip
Ik laat nu i.p.v. de messagebox de macro uitvoeren
dit is waarschijnlijk niet de beste en mooiste manier maar zo als ik al zei
ik ben een leek
beter goed gestoelen als slecht verzonnen (of zo iets)




Sub control()
'índien er een fout melding op treed controleer dan of "Microsoft Forms 2.0 Object Library" aangevinkt staat

Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject '<~~ Amended as per jp's suggestion

On Error GoTo Whoa

'~~> Get data from the clipboard.
DataObj.GetFromClipboard

'~~> Get clipboard contents
myString = DataObj.GetText(1)
MsgBox myString


koopieractie <- Mijn macro

Exit Sub
Whoa:
If Err <> 0 Then MsgBox "Klembord heeft geen data"


End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan