Autor
|
Thema: Excel Tabelle durchsuchen (3276 mal gelesen)
|
FDS Mitglied
Beiträge: 11 Registriert: 25.01.2011
|
erstellt am: 04. Mrz. 2011 08:59 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein Problem mit meinem VBA Makros. Ich würde gerne eine Spalte einer Excel Tabelle nach einem bestimmten Wert durchsuchen. Dazu benötige ich die Anzahl der Zeilen dieser Spalte um nicht unnötig viel zu durchsuchen oder zu wenig. In einem Excel Makro von mir habe ich sowas schon oft gemacht. Der Befehl Tabelle.cells(Rows.Count, 3).End(xlUp).Row liefert mir die Anzahl der Reihen der Spalte 3. genau das was ich will. Funktionniert in Excel wunderbar, aber wenn ich die Funktion in ein Catia Makro einbau kommt die Fehlermeldung Runtime error '424': Object required . Warum klappt dieser Befehl unter Excel, aber unter Catia nicht. Vielleicht hat auch jamand eine andere Lösung die in beiden Umgebungen Funktionniert. Gruß, Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Mrz. 2011 09:04 <-- editieren / zitieren --> Unities abgeben: Nur für FDS
|
FDS Mitglied
Beiträge: 11 Registriert: 25.01.2011
|
erstellt am: 04. Mrz. 2011 09:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, danke für den Tipp, aber meine Tabelel hat im moment maximal 36 Zeilen. Dein Vorschlag liefert mir 1048576 Zeilen, ist ein wenig viel. Warum kannt Excel denn dann dieses Rows?? gruß, Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Mrz. 2011 10:09 <-- editieren / zitieren --> Unities abgeben: Nur für FDS
Servus Bitte Systeminfo ausfüllen. Ich glaub wir "reden" aneinander vorbei. Versuch mal Tabelle.cells(Tabelle.Rows.Count, 3).End(xlUp).RowGruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 04. Mrz. 2011 10:10 <-- editieren / zitieren --> Unities abgeben: Nur für FDS
Hallo Jürgen, ich habe vom Programmieren zwar wenig Ahnung, aber wenn Du es im Excel realisieren kannst, warum ermittelst Du den gesuchten Wert nicht in Excel über " Befehl Tabelle.cells" in einer Zelle und fragst dann den so ermittelten Wert im CATIA-Programm zur Weiterverwendung ab? ------------------ Gruß Mörchen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Ehrenmitglied V.I.P. h.c. Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 Drauß vom Walde komm ich her, verlaufen hab ich mich gar sehr ;-)
|
erstellt am: 04. Mrz. 2011 10:13 <-- editieren / zitieren --> Unities abgeben: Nur für FDS
Nee, Deine Tabelle hat schon 1048576 Zeilen, Du benutzt davon aber nur 36 Mal eine >> Leseempfehlung << zum Thema letzte benutzte Zelle Excel-VBA, auch wenn Dir das schon bekannt sein sollte, es sind dort noch mehr Varianten aufgeführt. Allerdings fehlt auch dort überall das Workbook und das Worksheet, ich denke ebenfalls, dass Du da Deine Probleme hast. Weise diese doch mal explizit zu in Deinem code und die Sache mit den Verweisen auf die Office-Object-Library wären da auch noch... HTH [rredit] die Zeile von Bernd läuft SO noch nicht, die muß angepaßt werden auf z.B. Tabelle 1.rows.count (halt der Name des Blatts, nicht die Registerbezeichnung .name, sondern die .codename-Eigenschaft) oder sheets (1).rows.count (Index des Blatts) usw. gibt ja gefühlt dutzende Ansprachemöglichkeiten... Oder ist das zu basic? Dann sorry, ich bin hier bei euch nicht so häufig... ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Dateianhänge | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope [Diese Nachricht wurde von runkelruebe am 04. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FDS Mitglied
Beiträge: 11 Registriert: 25.01.2011
|
erstellt am: 04. Mrz. 2011 15:14 <-- editieren / zitieren --> Unities abgeben:
Hallo, Danke für eure Antworten. @ Mörchen: kurz zum hintergrund: ich habe in meinem Modell je nach ausführung eine unterschiedliche Anzahl an Parametern (die eben in dieser Excel-Tabelle stehen) ich weiss also nicht wieviele parameter ich anziehen muss. Klar könnte ich das in excel ausrechnen lassen (da dort meine funktion ja läuft), übergeben und dann nur die anzahl durchsuchen, aber das finde ich wie sich mit der rechten hand am linken ohr gekratzt @Runkelrübe: Tabelle heisst das Worksheet bei mir gar nicht, war nur zu vereinfachung gedacht. hier mein richtiger Code: Dim objxls As Object Set objxls = GetObject("", "excel.application") Dim XLS As Object Set XLS = objxls.workbooks.Open("C:\temp\Inputs.xlsm") Dim benoetigte_Inputs As Object Set benoetigte_Inputs = XLS.Worksheets.Item("benoetigte_Inputs") ...."Code".... Anzahl = benoetigte_Inputs.cells(Rows.Count, Spalte + 1).End(xlUp).Row
also ich denke zumindest ich habe bereits das workbook und worksheet definiert, ausser ich mach da was falsch gruß, Jürgen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Mrz. 2011 15:20 <-- editieren / zitieren --> Unities abgeben: Nur für FDS
|
FDS Mitglied
Beiträge: 11 Registriert: 25.01.2011
|
erstellt am: 04. Mrz. 2011 15:27 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Mrz. 2011 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für FDS
Servus Doch rows bezieht sich auf deine Mappe, da du ka die Anzahl der Reihen in deiner Mappe bekommen willst. Also probiere mal (ungetestet) Anzahl = benoetigte_Inputs.cells(benoetigte_Inputs.Rows.Count, Spalte + 1).End(xlUp).RowGruß Bernd PS: Bitte Systeminfo ausfüllen. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FDS Mitglied
Beiträge: 11 Registriert: 25.01.2011
|
erstellt am: 07. Mrz. 2011 08:58 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 07. Mrz. 2011 09:06 <-- editieren / zitieren --> Unities abgeben: Nur für FDS
|
FDS Mitglied
Beiträge: 11 Registriert: 25.01.2011
|
erstellt am: 07. Mrz. 2011 16:31 <-- editieren / zitieren --> Unities abgeben:
|