Registriert seit: 23.07.2019
Version(en): 2010
Guten Tag,
ich arbeite viel mit Abfragen aus Datenbanken (Microsoft Query). Wenn ich dazu ein Makro schreibe ist dies alles solange super, bis ich eine weitere Spalte aus der Datenbank ausgeben lassen. Wenn ich dies mache, muss ich im makro meine ganzen Zahlen (Spalten) anpassen, was sehr nervig ist.
Ich kann Spalten/Bereiche definierte Namen zuordnen. Wie kann ich mit diesen Namen oder generell mit den Überschriften im Makro arbeiten? Leider hab ich bis jetzt noch nichts dazu gefunden.
Gruß
Registriert seit: 12.04.2014
Version(en): Office 365
Moin
Mach mal ein Update auf Excel 2019 oder Office 365. Dann hast du Möglichkeit mit PQ auf die Datenbanken zuzugreifen. Microsoft Query ist Steinzeit.
Wir sehen uns! ... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 23.07.2019
Version(en): 2010
Hey,
der betrieb stellt leider keine neueren Versionen zur Auswahl. Deshalb bin ich an Query gebunden.
Registriert seit: 26.07.2017
Version(en): 365
Hi, meinst du so etwas: Code: ' markiert Spalte 8 innerhalb des Namensbereichs "MeineDaten" Range("MeineDaten").Columns(8).select
' markiert Zeile 2 innerhalb des Namensbereichs "MeineDaten" Range("MeineDaten").Rows(2).select
' markiert die Überschrift-Zelle über dem Namensbereich "MeineDaten" Range("MeineDaten").Cells(0).select
' Alle Zellen innerhalb eines benannten Bereichs (nur bestimmte Spalte) For Each Zelle In Range("MeineDaten").Columns(8).Cells
V
Herzliche Grüße aus dem Rheinland Jörg
[Windows 10, Microsoft 365]
Folgende(r) 1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag:1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag 28
• BMSOBoo
Registriert seit: 23.07.2019
Version(en): 2010
Hier ist ein Code als BeispielUm in die jeweilige Spalte zu gelangen, während die Zeile hochzählt, geben ich "Tabelle1.Cells(u, 9).Value" ein. Die "9" möchte ich durch einen Spaltennamen ersetzten. Wenn ich dann eine Spalte einfüge, würde der Name bestehen bleiben und ich muss den Code nicht ändern.Wenn ich die Spalte alle mit dem Befehl "Range" benannt habe, kann ich dann meinen Befehl ändern in "Tabelle1.Cells(u, "MeineDaten").Value" bzw. wie ist der Verweis auf die jeweilige Tabelle?Code: For v = ZeileMax2 - 2 To ZeileMax2 + 2 For u = 3 To ZeileMax1 'RE-Menge If Tabelle1.Cells(u, 9).Value = Tabelle2.Cells(v, 1).Value And Tabelle1.Cells(u, 10).Value = Tabelle2.Cells(v, 10).Value Then REMenge = REMenge + Tabelle1.Cells(u, 3).Value a = a + 1 End If 'S100 If Tabelle1.Cells(u, 9).Value = Tabelle2.Cells(v, 1).Value And Tabelle1.Cells(u, 4).Value > 0 And Tabelle1.Cells(u, 10).Value = Tabelle2.Cells(v, 10).Value Then S100 = S100 + Tabelle1.Cells(u, 4).Value b = b + 1 End If 'S110 If Tabelle1.Cells(u, 9).Value = Tabelle2.Cells(v, 1).Value And Tabelle1.Cells(u, 5).Value > 0 And Tabelle1.Cells(u, 10).Value = Tabelle2.Cells(v, 10).Value Then S110 = S110 + Tabelle1.Cells(u, 5).Value c = c + 1 End If 'Mg If Tabelle1.Cells(u, 9).Value = Tabelle2.Cells(v, 1).Value And Tabelle1.Cells(u, 10).Value = Tabelle2.Cells(v, 10).Value Then Mg = Mg + Tabelle1.Cells(u, 7).Value d = d + 1 End If 'CAD If Tabelle1.Cells(u, 9).Value = Tabelle2.Cells(v, 1).Value And Tabelle1.Cells(u, 10).Value = Tabelle2.Cells(v, 10).Value Then CAD = CAD + Tabelle1.Cells(u, 6).Value e = e + 1 End If
Next u
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo, (15.04.2020, 11:52)BMSOBoo schrieb: Wie kann ich mit diesen Namen oder generell mit den Überschriften im Makro arbeiten? Sub aaa() Dim lngSpalte lngSpalte = Application.Match("Überschrift2DerSpalte", Tabelle1.Rows(1), 0) If Tabelle1.Cells(u, lngspalte).Value = ... End Sub Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• BMSOBoo
Registriert seit: 23.07.2019
Version(en): 2010
Hey,
danke, dass sieht schon einmal gut aus. Problem ist dadurch leider noch nicht ganz verschwunden. Wenn ich jetzt eine neue Spalte einfüge, muss ich dies trotzdem ändern - zwar nur an einem Punkt aber trotzdem noch nicht ideal.
Hätte da noch jemand eine Idee?
Registriert seit: 26.07.2017
Version(en): 365
Hi, Zitat:Wenn ich die Spalte alle mit dem Befehl "Range" benannt habe, kann ich dann meinen Befehl ändern in "Tabelle1.Cells(u, "MeineDaten").Value" bzw. wie ist der Verweis auf die jeweilige Tabelle? Die Spaltennummer des benannten Bereichs "MeineDaten" erhälst du mit Code: Range("MeineDaten").Column
Herzliche Grüße aus dem Rheinland Jörg
[Windows 10, Microsoft 365]
Registriert seit: 23.07.2019
Version(en): 2010
Das ich den namen beibehalte ist soweit verständlich aber ich definiere ja, in welche Spalte der Name ist Zitat:Sub aaa() Dim lngSpalte lngSpalte = Application.Match("Überschrift2DerSpalte", Tabelle1.Rows(1), 0) If Tabelle1.Cells(u, lngspalte).Value = ... End Sub
Registriert seit: 26.07.2017
Version(en): 365
Hi, also so ganz genau habe ich dnn noch nicht verstanden, was du suchst: - Den Namen der aktuellen Tabelle findest du mit " ActiveSheet.Name". - Die Spalte der aktuellen Zelle findest du mit " ActiveCell.Column". Suchst du nach der Spaltenbezeichnung z.B. nach Copy/Paste einer Spalte, dann hilft vielleicht das Event " Worksheet_Change(ByVal Target As Range)": mit Target.Column wird die neue Spalte ausgegeben (wohin du kopiert hast). ... oder bin ich ganz woanders?
Herzliche Grüße aus dem Rheinland Jörg
[Windows 10, Microsoft 365]
|