|  |  | 
|  | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs 
 | 
| Autor | Thema:  Tabelle1 ansprechen (15798 mal gelesen) | 
 | hotstaks2005 Mitglied
 Elektriker
 
   
 
      Beiträge: 142Registriert: 03.07.2008
 EPLAN 5.7Office 2003
 |    erstellt am: 19. Jul. 2011 11:31  <-- editieren / zitieren -->    Unities abgeben:            
  Hi Excelgemeinde Nach langer Zeit mal wieder eine Nachfrage: Mit einem aufgezeichneten Makro vergleiche ich Spalteninhalte auf Vorhandensein in beiden Tabellen.  Ich schaffe es nicht bei diesem Code die Tabelle1 anzusprechen; mit dem Namen der Tabelle geht es einwandfrei. ActiveCell.FormulaR1C1 = _"=VLOOKUP(RC[-1],'Nummer_01_Name1.xls'!C[10],1,FALSE)" ' hier sollte Tabelle1 angesprochen werden
 Range("C2").Select
 ActiveCell.FormulaR1C1 = _
 "=VLOOKUP(RC[-2],'Nummer_01_Name1.xls.xls'!C[14],1,FALSE)" ' hier sollte Tabelle1 angesprochen werden
 Range("B2:C2").Select
 Wie muss ich anpassen um statt des Tabellennamens "'Nummer_01_Name1.xls.xls" Tabelle1 anzusprechen. Hinweis der Tabellenname heißt wirklich so (*.xls)
 Danke Euch und einen schönen Tag ------------------Immer wieder neu lernen
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Jester_Karbach Mitglied
 Ist doch kein Spiel ;-)
 
   
 
      Beiträge: 348Registriert: 09.01.2006
 Windows alle Leiden seit 3.1 |    erstellt am: 19. Jul. 2011 11:34  <-- editieren / zitieren -->    Unities abgeben:           Nur für hotstaks2005   | 
                        | runkelruebe Moderator
 Straßen- / Tiefbau
 
         
 
  
 
      Beiträge: 8086Registriert: 09.03.2006
 MS-Office 365 ProPlus x86WIN7(x64)
 |    erstellt am: 19. Jul. 2011 11:40  <-- editieren / zitieren -->    Unities abgeben:           Nur für hotstaks2005   
  Nach Möglichkeit nicht mit ActiveSheet. [<- bezog sich auf eine von Jester inzwischen editierte Aussage]  Zu unsicher, es sei denn, man stellt sicher, dass das gewünschte sheet auch wirklich das ActiveSheet ist. Aber dann kann man das sheet auch gleich direkt ansprechen: Code:Workbooks(1).Sheets(1).Cells(1, 1).Value = "Fred"
 Workbooks("Mappe2.xlsm").Sheets("Tabelle1").Range("A1").Value = "FRED"
 
 HTH
 ------------------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     Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | hotstaks2005 Mitglied
 Elektriker
 
   
 
      Beiträge: 142Registriert: 03.07.2008
 EPLAN 5.7Office 2003
 |    erstellt am: 19. Jul. 2011 12:36  <-- editieren / zitieren -->    Unities abgeben:            
  Hi - Besten Dank für eure Antworten. Hier der vollständige Code:Sub Querverweis()
 '
 ' Querverweis Makro
 ' Makro am 18.07.2011 von '
 'Tabelle3.Select 'Hier klappt es
 Columns("I:I").Select
 Selection.Copy
 Sheets("Tabelle2").Select ' Heißt immer so
 Range("A1").Select
 ActiveSheet.Paste
 Columns("A:A").Select
 Application.CutCopyMode = False
 Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
 DataOption1:=xlSortNormal
 Columns("A:A").Select
 Range("A1:A1000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
 "B1"), Unique:=True
 Columns("A:A").Select
 Selection.Delete Shift:=xlToLeft
 Range("B2").Select
 ActiveCell.FormulaR1C1 = _
 "=VLOOKUP(RC[-1],'Nummer_01_VBG.xls'!C[10],1,FALSE)" 'statt TB-Name Tabelle1 da Name immer anders
 Range("C2").Select
 ActiveCell.FormulaR1C1 = _
 "=VLOOKUP(RC[-2],'Nummer_01_VBG.xls'!C[14],1,FALSE)" 'statt TB-Name Tabelle1 da Name immer anders
 Range("B2:C2").Select
 Selection.AutoFill Destination:=Range("B2:C28"), Type:=xlFillDefault
 Range("B2:C28").Select
 End Sub
 Jester_KarbachDas mir Tabelle.Select funzt nicht; bzw. hab ich es auch falsch eingesetzt
 Runkelrübe > ist immer das aktive Sheet"unsicher, es sei denn, man stellt sicher, dass das gewünschte sheet auch wirklich das ActiveSheet ist"
 ------------------
 Immer wieder neu lernen
 [Diese Nachricht wurde von hotstaks2005 am 19. Jul. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | runkelruebe Moderator
 Straßen- / Tiefbau
 
         
 
  
 
      Beiträge: 8086Registriert: 09.03.2006
 MS-Office 365 ProPlus x86WIN7(x64)
 |    erstellt am: 19. Jul. 2011 12:42  <-- editieren / zitieren -->    Unities abgeben:           Nur für hotstaks2005   | 
                        | hotstaks2005 Mitglied
 Elektriker
 
   
 
      Beiträge: 142Registriert: 03.07.2008
 EPLAN 5.7Office 2003
 |    erstellt am: 19. Jul. 2011 13:28  <-- editieren / zitieren -->    Unities abgeben:            
 Zitat:Original erstellt von hotstaks2005:
 ActiveCell.FormulaR1C1 = _
 "=VLOOKUP(RC[-1],'Nummer_01_VBG.xls'!C[10],1,FALSE)" 'statt TB-Name Tabelle1 da Name immer anders
 Range("C2").Select
 ActiveCell.FormulaR1C1 = _
 "=VLOOKUP(RC[-2],'Nummer_01_VBG.xls'!C[14],1,FALSE)" 'statt TB-Name Tabelle1 da Name immer anders
 [/B]
 
 Mal eine Nachfrage; im obigen Code erstelle ich in Zelle C2 ja einen SVerweis. Kann ich an dieser Stelle überhaubt den Tabellennamen austauschen?  Sollte ich nicht besser die Namen der Tabellen auslesen und diese verwenden? Danke Wolfgang ------------------Immer wieder neu lernen
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Paulchen Mitglied
 Bauing./SW-Entwickler
 
     
 
      Beiträge: 1227Registriert: 19.08.2004
 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice |    erstellt am: 19. Jul. 2011 13:43  <-- editieren / zitieren -->    Unities abgeben:           Nur für hotstaks2005   
  Hi,  Zitat:Kann ich an dieser Stelle überhaubt den Tabellennamen austauschen?
 
 Ja, warum nicht? Es ist das gleiche, als ob Du die Formel per Hand in die Zelle schreiben würdest. Natürlich müssen die Bereiche stimmen, die Namen existieren etc. - sonst Fehler.  Zitat:Sollte ich nicht besser die Namen der Tabellen auslesen und diese verwenden?
 
 "Besser" - nunja, schwer zu sagen. Kommt darauf an, was Du später noch vorhast. Flexibler wärst Du damit vermutlich schon, und sicherer, und besser nachzuvollziehen, falls Du da in 17 Monaten nochmal ran musst... Obacht: Sollte jemand (Du?) die Namen der Register in Excel später ändern, kracht's auch. ------------------DIN1055.de  |  Lastannahmen für Anwender
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | hotstaks2005 Mitglied
 Elektriker
 
   
 
      Beiträge: 142Registriert: 03.07.2008
 EPLAN 5.7Office 2003
 |    erstellt am: 19. Jul. 2011 13:59  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Paulchen, Bei einem SVERWEIS definiere ich eine Matrix (Nummer_01_Name1.xls); hier weiß Excel dann in welcher Tabelle gesucht wird.Meine Frage: Kann ich der Matrix auch den Internen Tabellennamen "Tabelle1" geben?
 Hintergrund: Namen der 1. und 2. Tabellen sind immer anders; deshalb der Versuch auf den internen Tabellennamen zuzugreifen. ------------------Immer wieder neu lernen
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Paulchen Mitglied
 Bauing./SW-Entwickler
 
     
 
      Beiträge: 1227Registriert: 19.08.2004
 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice |    erstellt am: 19. Jul. 2011 14:34  <-- editieren / zitieren -->    Unities abgeben:           Nur für hotstaks2005   
  Hmja, geht. Lass' mal das hier mit F5 laufen und sieh Dir die Ausgabe an. Code:Es ändert sich natürlich alles, wenn Du die Reihenfolge Deiner Register vertauschst: Dann greift Sheets vermeintlich falsch, und Du kommst nur noch mit dem VBA-internen Namen ran. (Keine Ahnung, wie das in Wirklichkeit heißt - jedenfalls der Name des Registers vor der Klammer in VBA.) Siehe auch Hilfe zu Sheets().Sub test()
 Sheets(1).Select
 Debug.Print "Aktiv: " & ActiveSheet.Name
 Sheets(2).Select
 Debug.Print "Aktiv: " & ActiveSheet.Name
 Debug.Print "INaktiv: " & Sheets(1).Name
 Debug.Print "Name Tab1: " & Tabelle1.Name 'egal, an welcher Position
 End Sub
 
 ------------------DIN1055.de  |  Lastannahmen für Anwender
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | hotstaks2005 Mitglied
 Elektriker
 
   
 
      Beiträge: 142Registriert: 03.07.2008
 EPLAN 5.7Office 2003
 |    erstellt am: 19. Jul. 2011 16:48  <-- editieren / zitieren -->    Unities abgeben:            
  Hi - ich noch mal. Per VBA schreibe ich in Tabelle2 in Zelle B2 den SVERWEIS:=SVERWEIS(A2;'Nummer_01_Name1.xls'!L:L;1;FALSCH)
 Wenn der Tabellenname auch 'Nummer_01_Name1.xls' ist, dann kein Problem.
 Da sich der Tabellenname 'Nummer_01_Name1.xls' bei jedem Projekt ändert möchte ich per VBA sowas schreiben:=SVERWEIS(A2;'Tabelle1'!L:L;1;FALSCH)
 Hierbei kommt natürlch der Hinweis "NV"; klar Tabelle1 findet der Sverweis nicht.
 Wie kann ich dem Sverweis beibringen das er den internen Namen der Tabelle "Tabell1" nimmt? Danke für Eure Mithilfe Wolfgang ------------------Immer wieder neu lernen
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Paulchen Mitglied
 Bauing./SW-Entwickler
 
     
 
      Beiträge: 1227Registriert: 19.08.2004
 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice |    erstellt am: 19. Jul. 2011 17:05  <-- editieren / zitieren -->    Unities abgeben:           Nur für hotstaks2005   | 
                        | hotstaks2005 Mitglied
 Elektriker
 
   
 
      Beiträge: 142Registriert: 03.07.2008
 EPLAN 5.7Office 2003
 |    erstellt am: 20. Jul. 2011 10:40  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | Comos User Mitglied
 
 
   
 
      Beiträge: 112Registriert: 23.03.2010
 |    erstellt am: 21. Jul. 2011 13:35  <-- editieren / zitieren -->    Unities abgeben:           Nur für hotstaks2005   
  Hallo, nun mal Butter bei die Fische   natürlich läß sich in VBA jedes Object (und nichts anderes ist ein Sheed) mit dem Codename ansprechen.Der Vorteil ist: der Codename kann zur Laufzeit nicht geändert werden. Er ist also konstant, genau das was dich interessiert.
 SVerweis bzw. VLOOKUP ist jedoch ein Formelausdruck, und der versteht das nicht! ist ja nicht objektorientiert. Also kombinieren: Code:Sub Querverweis()
 '
 '
 Dim TAB1 As String
    Tabelle3.Columns("I:I").Copy Destination:=Tabelle2.Range("A1")
 Tabelle2.Columns("A:A").Sort Key1:=Tabelle2.Range("A2"), Order1:=xlAscending, Header:=xlYes, _
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
 DataOption1:=xlSortNormal
 
 Tabelle2.Range("A1:A285").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("B1"), Unique:=True
 Tabelle2.Columns("A:A").Delete Shift:=xlToLeft
 
 
 TAB1 = Tabelle1.Name
 Tabelle2.Range("B2:B28").FormulaR1C1 = "=VLOOKUP(RC[-1],'" & TAB1 & "'!C[10],1,FALSE)"
 Tabelle2.Range("c2:c28").FormulaR1C1 = "=VLOOKUP(RC[-2],'" & TAB1 & "'!C[14],1,FALSE)"
 End Sub
 
 Den unseligen Code des Makrogenerators habe ich mal gestrafft. Kugst du hier:http://www.online-excel.de/excel/singsel_vba.php?f=78Da du deine Aufgabenstellung nicht genau angegeben hast, bin ich nicht sicher ob alles so ist wie es seien soll
 GrußPeter
 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
 | hotstaks2005 Mitglied
 Elektriker
 
   
 
      Beiträge: 142Registriert: 03.07.2008
 EPLAN 5.7Office 2003
 |    erstellt am: 02. Aug. 2011 15:40  <-- editieren / zitieren -->    Unities abgeben:            
  Hi CAD.de User und Excelfans, an dieser Stelle mal wieder meinen besten Dank für die Hilfestellung. Rückmeldung ob es erfolgreich war erst jetzt da ich in Urlaub war. Hallo Comos User - deine Antwort löste meine Fragestellung - Danke. Schönen Tag noch. Hotsteaks ------------------Immer wieder neu lernen
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |