Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
484to488
484to488
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wert aus Zwischenablage in Tabelle suchen mit VBA

Wert aus Zwischenablage in Tabelle suchen mit VBA
14.09.2004 16:25:31
Ingo
Gute Tag allerseits
Ich habe eine ganz einfache Tabelle.
Diese hat nur eine einzige Spalte,
deren Zellen jeweils einzelne Wörter enthalten.
Nun möchte ich gerne per VBA-Makro folgendes machen.
Das Wort, welches sich gerade in der Zwischenablage befindet,
soll in der Tabelle gesucht werden.
Wenn es in der Tabelle vorhanden ist, soll nichts passieren.
Wenn es nicht in der Tabelle enthalten ist,
soll es in die erste freie Zelle geschrieben werden.
Hier mal ein Beispiel:
Tabelle:
--------
Hund
Katze
Maus
Igel
Hammer
Hauswand
In der Zwischenablege:
----------------------
Bergsteiger
Nun Ausführung des Makros ...
daraus folgt dann:
Tabelle (Neu):
--------------
Hund
Katze
Maus
Igel
Hammer
Hauswand
Bergsteiger
Ist so etwas mit VBA machbar ?
Da ich ja leider selber nicht so die dolle Ahnung von VBA habe,
würde ich mich über Hilfe da wirklich sehr freuen :)
Gruß aus Münster
Ingo Siemon

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert aus Zwischenablage in Tabelle suchen mit VBA
ransi
hallo
vesuch mal so rum:
fügt erst ein und prüft dann ob öfter als 1X vorhanden.
wenn ja wird wieder gelöscht.
wenn die ablage leer ist gibts nen fehler.

Sub ablage()
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
If Application.WorksheetFunction.CountIf(Range("A:A"), Range("A65536").End(xlUp)) > 1 _
Then Selection.ClearContents 'Range("A65536").End(xlUp).ClearContents
End Sub

ransi
AW: Wert aus Zwischenablage in Tabelle suchen mit VBA
14.09.2004 18:16:51
Ingo
Hallo ransi
Yep, genau so gehts !
Vielen lieben Dank für Deine schnelle Hilfe !!!
Gruß
Ingo
Wert aus Zwischenablage in Tabelle suchen mit VBA
14.09.2004 17:30:26
Gordon
Hallo Ingo,
nachfolgenden Code in ein Modul und ab geht's...
Declare

Function OpenClipboard Lib "User32" (ByVal hwnd As Long) _
As Long
Declare 

Function CloseClipboard Lib "User32" () As Long
Declare 

Function GetClipboardData Lib "User32" (ByVal wFormat As _
Long) As Long
Declare 

Function GlobalAlloc Lib "kernel32" (ByVal wFlags&, ByVal _
dwBytes As Long) As Long
Declare 

Function GlobalLock Lib "kernel32" (ByVal hMem As Long) _
As Long
Declare 

Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) _
As Long
Declare 

Function GlobalSize Lib "kernel32" (ByVal hMem As Long) _
As Long
Declare 

Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, _
ByVal lpString2 As Any) As Long
Public Const GHND = &H42
Public Const CF_TEXT = 1
Public Const MAXSIZE = 4096

Function ClipBoard_GetData()
Dim hClipMemory As Long
Dim lpClipMemory As Long
Dim MyString As String
Dim RetVal As Long
If OpenClipboard(0&) = 0 Then
MsgBox "Cannot open Clipboard. Another app. may have it open"
Exit Function
End If
' Obtain the handle to the global memory
' block that is referencing the text.
hClipMemory = GetClipboardData(CF_TEXT)
If IsNull(hClipMemory) Then
MsgBox "Could not allocate memory"
GoTo OutOfHere
End If
' Lock Clipboard memory so we can reference
' the actual data string.
lpClipMemory = GlobalLock(hClipMemory)
If Not IsNull(lpClipMemory) Then
MyString = Space$(MAXSIZE)
RetVal = lstrcpy(MyString, lpClipMemory)
RetVal = GlobalUnlock(hClipMemory)
' Peel off the null terminating character.
MyString = Mid(MyString, 1, InStr(1, MyString, Chr$(0), 0) - 1)
Else
MsgBox "Could not lock memory to copy string from."
End If
OutOfHere:
RetVal = CloseClipboard()
ClipBoard_GetData = MyString
End Function


'-> hier ´das eigentliche suchen / einfügen

Sub AppendIfNotExist()
Dim lCell As Range
Dim sRange As Range
Dim clpTxt As String
Dim ws As Worksheet
Dim f As Range
Set ws = ThisWorkbook.Sheets(1)
Set lCell = ws.Cells(Rows.Count, 1)
If lCell = "" Then
Set lCell = ws.Cells(Rows.Count, 1).End(xlUp)
End If
Set sRange = ws.Range(ws.Cells(1, 1), lCell)
clpTxt = ClipBoard_GetData()
On Error Resume Next
Set f = sRange.Find(clpTxt)
If f Is Nothing Then
lCell.Offset(1, 0) = clpTxt
End If
End Sub

Anzeige
AW: Wert aus Zwischenablage in Tabelle suchen mit VBA
14.09.2004 18:15:43
Ingo
Lieber Gordon
Vielen Dank für Deine schnelle Hilfe.
Aber ich nehm dann doch lieber den Lösungsvorschlag von ransi ...
... ist kürzer und einfacher :)
Aber trotzdem vielen lieben Dank nochmal für Deine Mühe !!
Gruß
Ingo
Das VBA-Script von woanders aus aufrufen
14.09.2004 19:40:05
woanders
Hallo nochmal
Nun habe ich doch noch mal ein Aliegen.
Lässt sich solch ein Excel-VBA-Script eigentlich auch irgendwie
von woanders aus aufrufen bzw. ausführen ?
In diesem Posting hatte ich ja am Anfang gefragt,
wie ich einen Wert aus der Zwischenablage in einer Tabelle suche,
und ihn zu der Tabelle hinzufüge, wenn er noch nicht darin steht.
Das klappt ja nun auch wunderbar.
Ich versuche hier nun mal, mein komplettes Anliegen zu erklären:
Ich besuche eine Internetseite mit dem InternetExplorer 6.
Dort markiere ich ein Wort und kopiere es in die Zwischenablage.
Dann wechsel ich zu meiner Excel-Tabelle und wende das
Makro an, welches mir ransi ja vorhin gepostet hatte.
Nun würde ich es gerne insofern vereinfachen,
dass ich das markierte Wort auf der Internetseite
mit der rechten Maustaste anklicke und von dort dann direkt
dieses Excel-Makro aufrufe.
Ich hoffe, mann versteh, was ich meine :)
Wenn nicht, versuche ich gerne eine andere Erklärung.
Gibt es für so etwas eine Möglichkeit ?
Gruß
Ingo
Anzeige

371 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige