Excel VBA: Sverweis Formel - Makro einfügen!
Hi zusammen. Habe mir heute mein erstes Userform gebastelt (Google sei Dank...). Mein UF macht simpel nichts anderes, als Einträge aus der EIngabemaske in eine Tabelle zu füllen.
Dim emptyRow As Long
'Ermitteln der ersten leeren Zeile
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'Wohin werden die eingegebenen Datein eingefüllt?
Cells(emptyRow, 1).Value = ComboBox1.Value
Cells(emptyRow, 5).Value = TextBox1.Value
Cells(emptyRow, 2).Value = TextBox2.Value
Cells(emptyRow, 3).Value = TextBox3.Value
Cells(emptyRow, 7).Value = TextBox4.Value
If OptionButton1.Value = True Then
Cells(emptyRow, 6).Value = "1. Halbjahr"
End If
If OptionButton2.Value = True Then
Cells(emptyRow, 6).Value = "2. Halbjahr"
End If
Me.Label7 = "Speichern erfolgreich!"
End Sub
Ich muss auch sagen, es funktioniert prächtig. Die Einträge werden alle korrekt erstellt etc. Nur habe ich in Spalte "H" meiner Tabelle, wo die Daten eingefügt werden, eine Spalte für SVerweis. Diese Formel soll jedesmal, wenn ein neuer Eintrag gespeichert wird, angefügt werden. Wenn ich von anfang an alle Formeln runterziehe bis ans Ende der Tabelle braucht Excel 2Minuten zum das Dokument zu öffnen... Formel lautet: =SVERWEIS($A2;'Tabelle1'!$A$1:$C$31;2;FALSCH) Wobei der Bezug A2 natürlich mit jeder Zeile anders ist (A2, A3, A4 etc.) Wenn ich die Formel "aufzeichne", erscheint folgendes, womit ich absolut nix anfangen kann.
Sub SVerweis_HC()
'
' SVerweis_HC Makro
'
'
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'Tabelle1'!R[-1317]C[-7]:R[-1289]C[-6],2,FALSE)"
Range("H1319").Select
End Sub
Kann hier wer helfen?

4 Antworten
Mein erster Gedanke wäre in dieser Situation, mal nach VLOOKUP zu googlen.
Ersetze doch einfach mal 'Tabelle1'!R[-1317]C[-7]:R[-1289]C[-6] durch 'Tabelle1'!$A$1:$C$31 und schaue, was passiert.
"ActiveCell.FormulaR1C1" ist ein Indikator für relative Bezüge, also einfach Formula.
Als nächstes würde ich versuchen, die WorksheetFunction zu verwenden:
Application.WorksheetFunction.VLOOKUP(lookup_value, table_array, column_index, range_lookup)
Beispiel hier: http://www.exceltrick.com/formulas_macros/vlookup-in-vba/
Hi zusammen
Hab es noch kurz nach Posten der Frage selbst herausbekommen. War eigentlich ganz simpel... Danke trotzdem für die Personen, welche geantwortet hatten.
Hab den Bezug zu emptyrow dann doch noch hinbekommen, der Rest hat sich von selbst erledigt. (Eintrag emptyrow, 8)
Private Sub CommandButton2_Click()
Dim emptyRow As Long
'Ermitteln der ersten leeren Zeile
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'Wohin werden die eingegebenen Datein eingefüllt?
Cells(emptyRow, 1).Value = ComboBox1.Value
Cells(emptyRow, 5).Value = TextBox1.Value
Cells(emptyRow, 2).Value = TextBox2.Value
Cells(emptyRow, 3).Value = TextBox3.Value
Cells(emptyRow, 7).Value = TextBox4.Value
Cells(emptyRow, 8).FormulaR1C1 = "=VLOOKUP(RC1,'Maximale Fehler pro HC_pro KW'!R[-1317]C[-7]:R[-1289]C[-6],2,FALSE)"
If OptionButton1.Value = True Then
Cells(emptyRow, 6).Value = "1. Halbjahr"
End If
If OptionButton2.Value = True Then
Cells(emptyRow, 6).Value = "2. Halbjahr"
End If
Me.Label7 = "Speichern erfolgreich!"
End Sub
ich würde einfach die Zelle kopieren und eins drunter wieder einfügen!
Makro:
Range("Adresse").copy destination:=Range("Adresse").offset(1, 0)
Das destination:= könnte man sich sparen, ich schreibs der Klarheit wegen immer dazu.
oder
Cells(Zeile, Spalte).copy Cells(Zeile + 1, Spalte).paste
Nur, falls das Problem wieder mal auftritt, Du hast ja schon eine Lösung!
(und es gäbe noch weitere!)
Du kannst dich ganz einfach wieder auf emptyRow beziehen:
Range("H" & emptyRow).Formula = "=VLOOKUP(A" & emptyRow & ",Tabelle1!A:B,2,0)"
Wichtig ist, dass du den Bezugstyp R1C1 bei .Formula entfernst.
Hi Danke für deine Antwort. Hab es dann noch hinbekommen. Bei meiner Lösung habe ich allerdings den Bezugstyp R1C1 belassen... Kannst dir ja mal ansehen.