Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Bild Löschen





Frage

Hallo, ich brauch mal wieder Eure Hilfe. Ich habe eine Tabelle erstellt und und wenn im B15 der Name eines Herstellers eingegeben wird, wird automatisch (über Makro) das Herstellerlogo eingefügt. Die Logos leigen auf einem zweiten Tabellenblatt. Das Einfügen klappt gut, aber wie kann ich das Bild per Makro wieder löschen? Das Problem dabei ist, das das eingefügte Bild immer einen neue Nummer bekommt ("Picture 435"...). Danke für Eure Mühe. Gruß Elhamplo

Antwort 1 von coros

Hi Elhamplo,

befinden sich noch andere Objekte in dem Blatt, wie Buttons, Textfelder usw., oder gibt es da nur dieses eine Bild? Wenn es meherer sind, wieviele.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Elhamplo

Hey Coros,

danke für schnelle Antwort:

Sorry das muss ich noch erwähnen, das Tabellenblatt ist mehr oder weniger wie ein Formular aufgebaut. Es ist das eigende Logo vorhanden, sowie eine combobox und 30 checkboxen. Mit der Combobox werden die Logos aufgerufen, die Checkboxen machen nichts, außer gut ausehen.

Danke

Gruß

Elhamplo

Antwort 3 von coros

Hi Elhamplo,

mit nachfolgendem Makro werden alle Bilder, bei denen der Name „Picture“ vorkommt, gelöscht. Was ich nicht so ganz verstanden habe ist das mit dem Logo. Ist dort dauerhaft ein Logo vorhanden, das auch nicht gelöscht werden soll vorhanden und dazu wird jeweils entsprechend der Auswahl ein weiteres Logo eingefügt, oder handelt es sich bei dem von Dir angegebenen Logos um das Logo welches eingefügt wird. Wenn Du ein Logo, z. B. Dein Firmenlogo, in dem Tabellenblatt behalten möchtest, dann musst Du diesem Logo einen neuen Namen geben, z.B. Firmenlogo, da es sonst durch das Makro gelöscht würde.

Option Explicit

Sub Bilder_löschen()
Dim Objekt As Object
For Each Objekt In ActiveSheet.Shapes
If Mid(Objekt.Name, 1, 7) = "Picture" Then
Objekt.Delete
End If
Next
End Sub

Ich hoffe, Du hast das so gemeint. Wenn nicht, melde Dich.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Elhamplo

Hi Coros,

Danke für Deine Hilfe.

In dem Formular ist das eigende Firmenlogo dauerhaft eingefügt. Über eine Combobox kann man Hersteller Logos wählen die dann in das Formular eingefügt werden. Die Hersteller Logos können sich ja ändern, deswegen sollen sie gelöscht werden.

Ich hab Dein Code ausprobiert und er löscht auch nur die Logos der Hersteller und nicht das eigne Firmenlogo. Läuft ganz gut. Wie kann ich denn dem Firmenlogo ein anderen Namen geben und wo?

Sonst läuft das gut!!! Echt, vielen Dank von Dir das Du mir so oft schon geholfen hast!!!!!!! Danke!!!

Mal eine andere Frage: Ist es möglich das ich in der Tabelle Formular über eine Inputbox eine Nummer eingebe (z.B. 12344) und wenn man auf OK geht wird die Nummer in Zelle M15 eingefügt und gleichzeitig in einer anderen Excelmappe "Daten" geprüft ob die Zahl vorhanden ist und wenn nicht kommt eine Fehlermeldung????

Gruß

Elhamplo

Antwort 5 von Elhamplo

Hi Coros,

kann das sein, wenn das Firmenlogo eine anderer Typ ist das es deswegen nicht gelöscht wird??? Ich hab mal kopiert und dabei ein Makro aufgenommen und dann steht im Code Object und nicht Picture.

Gruß

Elhamplo

Antwort 6 von coros

Hi Elhamplo,

das kann schon sein, das es sich dabei um ein Objekt handelt. Ich kann Dir das jetzt leider nicht beantworten, da man dazu wissen müsste, was für ein Objekt Du verwendest. Auch musst Du Dein Firmenlogo nicht umbenennen, da es ja beim Ausführen des Makros nicht gelöscht wurde. Umbenennen kannst Du das in der Symbolleiste, in der man auch die z.B. die Formeln der aktiven Zelle sehen kann und dann links daneben. Dort wird immer angezeigt, was gerade aktiviert ist, also z.B. die Zellbezeichnung oder eben ein Objekt, wenn es markiert wurde.

Zu Deiner Frage mit der Eingabe. Da ich nicht weiß, ob Du mit Excelmappe wirklich eine andere Exceldatei meinst, habe ich Dir erst mal ein Makro erstellt, das die eingegebene Zahl in einem anderen Tabellenblatt sucht. Wenn nicht vorhanden, wird eine Bildschirmmeldung ausgegeben. Kopiere das Makro wieder in ein StandardModul.

Option Explicit

Sub Werteingabe()
Dim Zeile As Long, Spalte As Long, Eingabe As Variant
Anfang:
Eingabe = CInt(InputBox("Bitte geben Sie einen gültigen Wert ein.", "Werteeingabe"))
If Eingabe = "" Then Exit Sub
If Not IsNumeric(Eingabe) Then
MsgBox "Als Eingabe sind nur Zahlen erlaubt. Bitte wiederholen Sie die Eingabe!", vbCritical, "Achtung!"
GoTo Anfang
End If
ActiveSheet.Range("M15") = Eingabe
For Zeile = Sheets("Daten").UsedRange.Rows.Count To 1 Step -1
For Spalte = Sheets("Daten").Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column To 1 Step -1
If Eingabe = Sheets("Daten").Cells(Zeile, Spalte) Then
Exit Sub
End If
Next Spalte
Next Zeile
MsgBox "Eingabewert nicht vorhanden"
End Sub

Wenn Du wirklich eine andere Exceldatei meinst, musst Du hier mal schreiben, unter welchem Pfad die Datei zu finden ist, da man die Datei ja ansprechen muss und auch ihre Existenz, also ob sie an dem Ort auch vorhanden ist, prüfen muss. Außerdem muss man wissen in welchen Tabellenblatt die Zahl gesucht werden soll.

Ich hoffe, Du kommst klar. Wenn nicht bitte ein paar mehr Infos.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von Elhamplo

Hey Coros,

danke für Deine Mühe!!!!!!

Die Zahl die dann in dem Formular in der Zelle M15 eingefügt wird, soll dann in der einer anderen Arbeitsmappe in der Spalte A überprüft werden ob die Zahl vorhanden ist. Die andere Arbeitsmappe liegt: W:\K-Daten\K-Tabelle.xls.

Geht das auch, wenn ich das Formular öffne das die Inputbox automatisch dann aufgerufen wird?

Danke nochmal!!!

Gruß

Elhamplo

Antwort 8 von coros

Hi Elhamplo,

besteht die Möglichkeit das Du beim Schildern oder Beantworten einer Frage Deine für Dich sicherlich verständlichen Bezeichnungen weg lässt? Was ich meine ist, Du schreibst

Zitat:
Geht das auch, wenn ich das Formular öffne das die Inputbox automatisch dann aufgerufen wird?


Was meinst Du mit Formular in diesem Fall. Meinst Du das Tabellenblatt und ganz spezifisch, wenn das Tabellenblatt aktiviert wird oder meinst Du wenn die Datei geöffnet wird? Verwende doch bitte für Tabellenblatt auch das Wort Tabellenblatt, für Datei das Wort Exceldatei oder Mappe. Denn ansonsten bringst Du nur unnötig viel Verwirrung in die ganze Sache.

Ich bin, da ich wie schon geschrieben nicht weiß, was Du mit Formular meinst, mal davon ausgegangen, das der Code beim Aktivieren des Tabellenblattes ausgeführt werden soll. Kopiere dann den VBA Code in das VBA Projekt des Blattes, bei dem beim Aktivieren die Inputbox geöffnet werden soll.

Option Explicit

Private Sub Worksheet_Activate()
Dim Zeile As Long, Spalte As Long, Eingabe As Variant, _
Datei_offen As Boolean, Wiederholungen As Long
Anfang:
Eingabe = CInt(InputBox("Bitte geben Sie einen gültigen Wert ein.", "Werteeingabe"))
If Eingabe = "" Then Exit Sub
If Not IsNumeric(Eingabe) Then
MsgBox "Als Eingabe sind nur Zahlen erlaubt. Bitte wiederholen Sie die Eingabe!", vbCritical, "Achtung!"
GoTo Anfang
End If
Application.ScreenUpdating = False
For Wiederholungen = 1 To Workbooks.Count
If Workbooks(Wiederholungen).Name = "K-Tabelle.xls" Then Datei_offen = True
Next
If Datei_offen = False Then _
GetObject "W:\K-Daten\K-Tabelle.xls"
ActiveSheet.Range("M15") = Eingabe
For Zeile = Workbooks("K-Tabelle.xls").Sheets("Daten").UsedRange.Rows.Count To 1 Step -1
For Spalte = Workbooks("K-Tabelle.xls").Sheets("Daten").Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column To 1 Step -1
If Eingabe = Workbooks("K-Tabelle.xls").Sheets("Daten").Cells(Zeile, Spalte) Then
Exit Sub
End If
Next Spalte
Next Zeile
MsgBox "Eingabewert nicht vorhanden"
Windows("K-Tabelle.xls").Visible = True
Workbooks("K-Tabelle.xls").Close Savechanges:=True
End Sub

Bei dem Code wird, wie auch schon vorher eine Inputbox geöffnet. Nach Eingabe einer Zahl wird im Hintergrund die Datei „K-Tabelle.xls“ geöffnet und in dieser Datei wird dann in dem Tabellenblatt „Daten“ nach einer Übereinstimmung gesucht. Wenn gefunden, erscheint eine Bildschirmmeldung. Wenn nicht, wird die im Hintergrund geöffnete Exceldatei wieder geschlossen. Wenn in der Datei „K-Tabelle.xls“ das Blatt, welches durchsucht werden soll, einen anderen Namen als „Daten“ hat, musst Du in dem gesamten Code überall dort wo dieses Wort vorkommt, Deinen Tabellenblattnamen eintragen.

Ich hoffe, Du kommst klar. Bei Fragen oder Änderungswünschen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von Elhamplo

Hi Coros,

krass supergeiler Code!!! Danke hab ihn ausprobiert.

Sucht der Code die ganze Tabelle nach der Bezugsnummer ab? Sorry (ich Esel), hab ich auch nicht erwänt, er soll nur in Spalte ab A3 die Tabelle nach der Nummer suchen.

Sorry!!!

Gruß Elhamplo

Antwort 10 von coros

Hi Elhamplo,

ja, der Code durchsucht den gesamten Bereich in Datei "K-Tabelle.xls", in dem Daten vorhanden sind. Wenn Du das nur für Spalte A haben möchtest, sieht der Code wie folgt aus:

Option Explicit

Private Sub Worksheet_Activate()
Dim Zeile As Long, Eingabe As Variant, _
Datei_offen As Boolean, Wiederholungen As Long
Anfang:
Eingabe = CInt(InputBox("Bitte geben Sie einen gültigen Wert ein.", "Werteeingabe"))
If Eingabe = "" Then Exit Sub
If Not IsNumeric(Eingabe) Then
MsgBox "Als Eingabe sind nur Zahlen erlaubt. Bitte wiederholen Sie die Eingabe!", vbCritical, "Achtung!"
GoTo Anfang
End If
Application.ScreenUpdating = False
For Wiederholungen = 1 To Workbooks.Count
If Workbooks(Wiederholungen).Name = "K-Tabelle.xls" Then Datei_offen = True
Next
If Datei_offen = False Then _
GetObject "W:\K-Daten\K-Tabelle.xls"
ActiveSheet.Range("M15") = Eingabe
For Zeile = Workbooks("K-Tabelle.xls").Sheets("Daten").UsedRange.Rows.Count To 3 Step -1
If Eingabe = Workbooks("K-Tabelle.xls").Sheets("Daten").Cells(Zeile, 1) Then
Exit Sub
End If
Next Zeile
MsgBox "Eingabewert nicht vorhanden"
Windows("K-Tabelle.xls").Visible = True
Workbooks("K-Tabelle.xls").Close Savechanges:=True
End Sub


Hier wird nur ncoh Spalte A durchsucht.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 11 von Elhamplo

Hi Coros,

Vielen, vielen Dank für die fette Hilfe!!!! Läuft alle super!!!! Echt Saugeiler Code!!!!!!

Jetzt noch eine Frage für die das Verständnis: Wo in dem Code steht das in Spalte ab A3 durchsucht wird??

Ich dank Dir für Deine Hilfe!!!!!!!!!!!

Gruß

Elhamplo

Antwort 12 von Elhamplo

Hey Coros,

noch mal einen nachtrag: Wenn ich in die Inputbox keinen wert Eingebe oder auf Abbrechen gehe bekomme ich einen Fehler einen Laufzeitfehler: Typen unverträglich und die Zeile:

Eingabe = CInt(InputBox("Bitte geben Sie einen gültigen Wert ein.", "Werteeingabe"))

ist gelb makiert.

Leider hab ich keine Ahnung warum.

Gruß

Elhamplo

Antwort 13 von coros

Hi Elhamplo,

jau, da war ein kleiner Fehler eingebaut. Aber mit nachfolgendem Code sollte das funktionieren.

Option Explicit

Private Sub Worksheet_Activate()
Dim Zeile As Long, Eingabe As Variant, _
Datei_offen As Boolean, Wiederholungen As Long
On Error GoTo ERRORHANDLER
Anfang:
Eingabe = CInt(Application.InputBox("Bitte geben Sie einen gültigen Wert ein.", "Werteeingabe"))
If Not IsNumeric(Eingabe) Then
MsgBox "Als Eingabe sind nur Zahlen erlaubt. Bitte wiederholen Sie die Eingabe!", vbCritical, "Achtung!"
GoTo Anfang
End If
Application.ScreenUpdating = False
For Wiederholungen = 1 To Workbooks.Count
If Workbooks(Wiederholungen).Name = "K-Tabelle.xls" Then Datei_offen = True
Next
If Datei_offen = False Then _
GetObject "D:\K-Daten\K-Tabelle.xls"
ActiveSheet.Range("M15") = Eingabe
For Zeile = Workbooks("K-Tabelle.xls").Sheets("Daten").UsedRange.Rows.Count To 3 Step -1
If Eingabe = Workbooks("K-Tabelle.xls").Sheets("Daten").Cells(Zeile, 1) Then
Exit Sub
End If
Next Zeile
MsgBox "Eingabewert nicht vorhanden"
Windows("K-Tabelle.xls").Visible = True
Workbooks("K-Tabelle.xls").Close Savechanges:=True
ERRORHANDLER:
End Sub


Um noch Deine Frage aus Antwort 11 zu beantworten, das wird in den Zeilen

For Zeile = Workbooks("K-Tabelle.xls").Sheets("Daten").UsedRange.Rows.Count To 3 Step -1
If Eingabe = Workbooks("K-Tabelle.xls").Sheets("Daten").Cells(Zeile, 1) Then


festgelegt. Die erste Zeile sagt aus, dass ab Zeile 3 begonnen wird und in der zweiten zeile sagt die 1 hinter Zeile die Spaltenindexzahl aus und das steht für Spalte A. Eine 2 würde für Spalte B stehen, eine 3 für C usw. bis 256 für Spalte IV.

So, ich hoffe, Du hast das verstanden. Wenn nicht oder bei weiteren Fragen oder Problemen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 14 von Elhamplo

Hey Coros,

SUUUUUUUPER!!!!!!!!! Vielen, vielen Dank!!!!!

Saugeile Code!! Danke!!!

jetzt trtzdem noch eine Frage:

Wo steht im Code das Excel nicht meckern soll weil die Datei K-Tabelle schon auf ist???

Gruß

Elhamplo

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: