Hi, Morrelbi,
WELKOM op dit forum!
Informatie ophalen van het klembord gebeurt met "GetFromClipboard": ja, in VBA zijn de termen soms bijna "letterlijk gewoon Engels".
De procedure gebeurt enigszins via een omweg.
Nieuw Object aanmaken: zie lijn met "new"
Object "vullen": zie "GetFromClipboard"
Tekst er uit halen: "MyData.GetText"
Die tekst stoppen we dan in een variabele, bijvoorbeeld "txt". Heb je tevoren een bestand gekopieerd, dan zit er in het klembord geen geldige informatie en krijg je een foutmelding.
Dan gaan we op zoek naar de tekst die nu in de variabele "txt" zit. Soms kan ook dit nog mislopen, wanneer er bijvoorbeeld teveel tekst in de variabele zit: "on error resume next" is dus noodzakelijk.
Option Explicit
Sub get_from_clipboard_and_find()
'Erik Van Geit
'070913
'set reference to Microsoft Forms x.x Object Library
Dim MyData As Object
Dim txt As String
Dim c As Range
Set MyData = New DataObject
MyData.GetFromClipboard
On Error Resume Next
txt = Application.Clean(Trim(MyData.GetText))
On Error GoTo 0
If txt = vbNullString Then
MsgBox "Could not get valid information from the Clipboard!", 48, "ERROR"
Exit Sub
End If
With Sheets("Sheet1")
On Error Resume Next
Set c = .Cells.Find(txt, .Cells(1, 1), xlFormulas, xlPart, xlByRows, xlNext, False)
On Error GoTo 0
If Not c Is Nothing Then
'do something with c
MsgBox "Found """ & txt & """" & vbLf & "on sheet " & .Name & " in cell " & c.Address(0, 0), 64, txt
Else
MsgBox """" & txt & """ not found", 64, "No results"
End If
End With
End Sub
Eer de code kan werken, is het nodig om in het VBEmenu (In de Visual Basic Editor, dus niet het Excelmenu) Extra/Verwijzingen iets aan te vinken, zoals in de code aangegeven is.'set reference to Microsoft Forms x.x Object Library
Je zal in de lijst iets vinden dat lijkt op Microsoft Forms x.x Object Library
De "x.x" is dan bijvoorbeeld "2.0": dat hangt van je versie af.
beste groeten,
Erik