Registriert seit: 14.09.2020
Version(en): 2013
Hallo, ich habe ein Makro der aus zwei Teilen besteht, zu einem löscht er Duplikate im Worksheet1 (in 3 verschiedenen Tabellen) und zum anderen überträgt er Daten in das Worksheet2. Wenn ich mich im Worksheet1. befinde kann ich den Makro ausführen. Wenn ich mich im Worksheet2. befinde kann er nicht ausgeführt werden. Ein Fehler tritt auf.
Ich poste den einfach mal hier rein, sorry weiß nicht wie ich es mache das der Code in einem extra Kasten angezeigt wird.
PS: Ich habe weder VBA noch noch irgendein Makro davor in Excel benutzt, ich weiß könnte bestimmt schöner, einfacher und kürzer sein.
Sub NET_DUPLICATE__RSSI__FILTER() ' ' RSSI FILTER Makro '
Application.CutCopyMode = False ActiveSheet.Range("Tabelle1[NET NAME]").RemoveDuplicates Columns:=1, Header:=xlYes
Application.CutCopyMode = False ActiveSheet.Range("Tabelle2[NET NAME]").RemoveDuplicates Columns:=1, Header:=xlYes
Application.CutCopyMode = False ActiveSheet.Range("Tabelle3[NET NAME]").RemoveDuplicates Columns:=1, Header:=xlYes
' Range("C2").Select ActiveCell.FormulaR1C1 = "=MIN(Tabelle1[RSSI (-dBm)])" Range("C3").Select ActiveCell.FormulaR1C1 = "=MIN(Tabelle2[RSSI (-dBm)])" Range("C4").Select ActiveCell.FormulaR1C1 = "=MIN(Tabelle3[RSSI (-dBm)])" Range("C5").Select ActiveCell.FormulaR1C1 = "" Range("B2").Select ActiveCell.FormulaR1C1 = _ "=INDEX(Tabelle1[NET NAME],MATCH(RC[1],Tabelle1[RSSI (-dBm)],0))" Range("B3").Select ActiveCell.FormulaR1C1 = _ "=INDEX(Tabelle2[NET NAME],MATCH(RC[1],Tabelle2[RSSI (-dBm)],0))" Range("B4").Select ActiveCell.FormulaR1C1 = _ "=INDEX(Tabelle3[NET NAME],MATCH(RC[1],Tabelle3[RSSI (-dBm)],0))" Range("B5").Select End Sub
Registriert seit: 06.09.2016
Version(en): 2016
Hallo ExcelLearner, an welcher Stelle bekommst Du einen Fehler? Wie lautet der Fehler? Wo überträgt Dein Makro Daten in das Worksheet2? Zum Posten von Code hast du in der unteren Icon-Zeile eine Button (5. von rechts). Für die ersten Hilfe probier mal als erste Zeile deines Makros: Code: Sheets("MeinTabellenblatt").Select
wobei du "MeinTabellenblatt" durch den Namen deine Workshetts1 ersetzt. Dein Makro arbeitet mit ActiveSheet, d.h. es arbeitet alles auf dem aktiven Blatt ab. Ist da keine Tabelle1, gibt's wahrscheinlich nen Fehler. Springst Du vorher auf das richtige Blatt ist alles gut. Grundsätzlich geht das Ganze natürlich schöner, aber das ist ein anderes Thema. Gruß, Lutz
Registriert seit: 14.09.2020
Version(en): 2013
(16.09.2020, 08:58)Lutz Fricke schrieb: Code: Sheets("MeinTabellenblatt").Select
Vielen Dank, hiermit hat es geklappt. habe jetzt den Makkro erweitert, er besteht aus 3 Schritte. 1. Schritt: Automatisch intelligente Tabellen erzeugen (Worksheet 1) 2. Schritt: Duplikate aus den Tabellen löschen (Worksheet 1)3. Schritt: Daten in Worksheet 2 übermitteln. An sich würde auch alles funktionieren, doch da es sich um eine importierte CSV Datei handelt, kommt immer die Fehlermeldung "Ihre Auswahl überlappt mindestens einen externen Datenbereich" wenn ich es manuell mache, kann ich einfach Enter drücken und es funktioniert trotzdem. Aber den Makro hält es leider auf. Kann ich das irgendwie umgehen?
Registriert seit: 06.09.2016
Version(en): 2016
Hallo ExcelLearner, Du kannst versuchen, vorm Import der Daten die Fehleranzeige auszuschalten: Code: Application.DisplayAlerts = False
Und, gaaaaanz wichtig, nach dem problematischen Schritt wieder einschalten: Code: Application.DisplayAlerts = True
Gruß, Lutz
Registriert seit: 14.09.2020
Version(en): 2013
18.09.2020, 08:40
(Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2020, 10:23 von WillWissen.
Bearbeitungsgrund: Unnötiges Vollzitat entfernt, Antwort aus Zitat herausgenommen
)
Hi danke für die Hilfe. Ich habe nun aber festgestellt, das es doch nicht an der Fehlermeldung liegt. Wie ich ja schon meinte habe ich einfach das Makro aufgenommen, wie ich aus einem Bereich eine intelligente Tabelle gemacht habe. Das Problem ist, das im VBA irgendwas davon drin steht das aus der CVS Datei "..." eine Tabelle gemacht wurde. Heißt ich kann das gar nicht auf jede CVS Datei anwenden. Das ist mir aber wirklich wichtig. Gibt es einen weg das zu umgehen? Vielleicht kann man ins VBA rein schreiben, das er sich auf die Importierte Datei beziehen soll. Code: Sub Makro1() ' ' Makro1 Makro '
' 'hier muss ich noch mit Offset arbeiten Range("A24").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select ' die Zahlen ist der Datei Name ActiveSheet.QueryTables("09100914").Delete ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$24:$O$47"), , xlYes).Name = _ "Tabelle1" Range("Tabelle1[#All]").Select End Sub
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hallo,
bitte nicht unnötig vollzitieren; vor allem dann nicht, wenn sich die Antwort auf den vorherigen Beitrag bezieht. In allen anderen Fällen genügt meistens eine Anrede, damit klar ist, wessen Beitrag beantwortet wird.
Zum Antworten den Button auf der rechten Seite unterhalb des Antwortformulars benutzen.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, wenn Du eine csv importierst / öffnest, ist das entsprechende Blatt das aktive Blatt. Den entsprechenden Code hast Du auch schon in Deiner Aufzeichnung: Code: ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$24:$O$47"), , xlYes).Name = _ "Tabelle1"
nur dass eventuell der Bereich nicht passt. Im Prinzip könnte es, wenn Du alle Daten einbeziehst, auch so reichen: Code: Sub test() ActiveSheet.ListObjects.Add(xlSrcRange, ActiveSheet.UsedRange, , xlYes).Name = _ "Tabelle1" End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 14.09.2020
Version(en): 2013
@schauan Leider kann ich es gerade nicht ausprobieren, erst morgen wieder. So wie ich es verstanden habe, wird mit deinem Code eine einzige intelligente Tabelle mit den ganzen Daten erstellt. Aber ich muss ja aus einer CVS Datei immer 3 Intelligente Tabellen machen. Und das ganze muss unabhängig von der jeweiligen CVS Datei sein, damit es mit jeder CVS Datei klappt.
Für mich sieht es so aus, dass dein Code auch für jede CVS Datei gehen würde. Ist es möglich jetzt noch bestimmte Bereiche festzulegen?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, bei verschiedenen Bereichen musst Du zumindest auch verschiedene Tabellennamen vergeben. Code: Sub test() ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1:A10"), , xlYes).Name = _ "Tabelle1" ActiveSheet.ListObjects.Add(xlSrcRange, Range("C1:C10"), , xlYes).Name = _ "Tabelle2" ActiveSheet.ListObjects.Add(xlSrcRange, Range("E1:E10"), , xlYes).Name = _ "Tabelle3" End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 14.09.2020
Version(en): 2013
Achso, dann bin ich gespannt ob das klappen wird, ich bin zuversichtlich. Wäre echt klasse.
|