Excel VBA: Sverweis Formel - Makro einfügen!

Bild von Excel Spalten - (Computer, programmieren, Excel)

5 Antworten

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.

5

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.

0

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/

Fehlermeldung Excel VBA-Makro

Hi, ich möchte gerne in 15 verschiedenen Zeilen folgendes Makro anlegen. Wenn in Spalte J eine 1(2/3/4/5) eingegeben wird, soll der Wert in der gleichen Zeile in Feld C(D/E/F/G) um eins erhöht werden. Ich habe mir hier: http://www.gutefrage.net/frage/excel-wert-erhoehen den Code rauskopiert und entsprechend geändert. Ist erstmal nur für eine Zeile, würde ich dann manuell umändern für jede extra Zeile:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("J3")) Is Nothing Then Select Case Target.Value Case 1 Range("B3").Value = Range("B3").Value + 1 Case 2 Range("C3").Value = Range("C3").Value + 1 Case 3 Range("D3").Value = Range("D3").Value + 1 Case 4 Range("E3").Value = Range("E3").Value + 1 Case 5 Range("F3").Value = Range("F3").Value + 1

End Select Target.Value = 0 End If End Sub

Er führt die gewünschte Funktion aus, aber ich bekomme folgende Fehlermeldung:

"Laufzeitfehler ´-2147417848 (80010108)Die Methode ´Value für das Objekt ´Range` ist fehlgeschlagen"

wie gesagt, macht er aber alles was er soll. Beim zweiten Versuch stürzt Excel dann komplett ab.

Kann jemand helfen?

...zur Frage

Laufzeitfehler 429 in VBA (Excel Makro)?

Hallo!

Zurzeit versuche ich mich an VBA. Ich habe ein Makro erstellt, dass aus einer Excel Tabelle z.B. eine Rechnung erstellt ( durch befüllen der Texftfelder einer Vorlage )

Nun wollte ich das Makro so umändern, dass automatisch der richtige Pfad zum Speichern bzw Öffnen der Vorlage, für den jeweiligen Windows Nutzer benutzt wird. ( Das habe ich mithilfe von Workbook.Path gemacht.

Allerdings gibt er mir jetzt immer Laufzeitfehler 429 aus und ich weiß nicht was zu tun ist.

Bitte helft mir. ( Office und Word sind up to date )

Grüße

Chris

Hier mein Code: https://paste2.org/E8ZmvBXk

...zur Frage

Excel Timer runterzählen und dann Wert in anderer Spalte erhöhen?

Hallo zusammen,

ich lasse via Excel Timer den Wert von X-Minuten runterzählen.

Aktuell sieht das wie folgt aus:

Sub nexttick() 
If Tabelle1.Range("D26") = 0 Then Exit Sub
Tabelle1.Range("D26").Value = Tabelle1.Range("D26").Value - TimeValue("00:00:01")
starttimer
End Sub

Wenn nun der Wert "0" erreicht ist, dann soll in einer anderen Zelle "A2" der Wert um eins hochgesetzt werden. Zudem soll der Timer immer wieder von neu anfangen, wenn er bei "0" ist.

Habt Ihr eine Idee, wie ich das am besten lösen könnte?

Vielen Dank!

...zur Frage

Makro automatisch ausführen bei Zellenänderung VBA

Hi,

ich habe ein Makro, dass mir automatisch die Zeilenhöhe mit Zeilenumbruch anpasst, wenn der Text zu lang ist (es wirkt auf das ganze Tabellenblatt aber mir geht es hauptsächlich um die verbundenen Zellen "D31:M31"). Dies passt auch soweit wenn ich das Makro nach Eingabe des geänderten Textes ausführe.

Nun benötige ich noch, dass das Makro automatisch ausgeführt wird, sobald sich der Text in der Zelle ändert. "Nehmen wir an da steht "hallo" und ich schreibe nun "hallo hans" hinein (natürlich viel länger, damit der Umbruch stattfindet).

Leider funktioniert es nicht mittels VBA, wenn ich den Text ändere.. Weiß jemand rat was ich falsch mache?

Danke für jeden Hinweis !!!

VBA in Tabelle1:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("$D$31:$M$31")) Is Nothing Then Zellenanpassen End Sub

Und hier das Makro:

Sub Zellenanpassen() Dim CurrentRowHeight As Single, MergedCellRgWidth As Single Dim CurrCell As Range Dim ActiveCellWidth As Single, PossNewRowHeight As Single If ActiveCell.MergeCells Then With ActiveCell.MergeArea If .Rows.Count = 1 And .WrapText = True Then Application.ScreenUpdating = False CurrentRowHeight = .RowHeight ActiveCellWidth = ActiveCell.ColumnWidth For Each CurrCell In Selection MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth Next .MergeCells = False .Cells(1).ColumnWidth = MergedCellRgWidth .EntireRow.AutoFit PossNewRowHeight = .RowHeight .Cells(1).ColumnWidth = ActiveCellWidth .MergeCells = True .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _ CurrentRowHeight, PossNewRowHeight) End If End With End If End Sub

VG fireless91

P.S.: Meine VBA Kenntnisse sind eher mau.. von daher nicht böse sein face-wink

...zur Frage

VBA: Verschiedene Formel je Bedingung?

Ich sitze leider schon länger dran aber mittlerweile habe ich ein Brett vor dem Kopf.

Ich versuche meine Frage mal wie folgt zu beschreiben:

Wenn in Spalte P Ein Eintrag Namens "Hans" Vorhanden ist, so soll in Spalte AF eine Formel A hintelegt werden.
Bei anderen Einträgen in Spalte P wird Formel B hinterlegt.

Ich schaffe es, die Formel A einzutragen und sie Funktioniert auch, aber Formel B wird komplett ignoriert, obwohl in Spalte P andere Namens als Hans erscheinen.

'Dim Ende As Long
'ActiveSheet.UsedRange.AutoFilter Field:=16, Criteria1:="HANS"
'Range("AF2").FormulaLocal = "=WENN(HEUTE()-AE2<=40;""OK"";""P"")"
'Ende = Cells.SpecialCells(xlCellTypeLastCell).Row
'Range("AF2").AutoFill Destination:=Range("AF2:AF" & Ende), Type:=xlFillDefault

'ActiveSheet.UsedRange.AutoFilter Field:=16, Criteria1:="<>HANS"
'Range("AF2").FormulaLocal = "=WENN(HEUTE()-AE2<=30;""OK"";""P"")"
'Ende = Cells.SpecialCells(xlCellTypeLastCell).Row
'Range("AF2").AutoFill Destination:=Range("AF2:AF" & Ende), Type:=xlFillDefault

Vorab lieben Dank und

Viele Grüße

...zur Frage

Macro VBA Code Wenn Dann auf mehrere Zellen?

Hallo zusammen,

komme nicht mehr weiter :( Brauche einen VBA Code der wie folgt aussehen soll

in Spalte A1-A1000 sind Zahlenwerte eingetragen im Bereich von 0,01 - 500. Nun soll B1-B1000 eine automatische Berechnung stattfinden die wie folgt ausschauen soll. Zahl in Spalte A 0,00 - 0,10000 dann in Spalte B mal 1,25 0,10 - 0,29999 dann in Spalte B mal 1,10 0,30 - 0,39999 dann in Spalte B mal 1,09 0,40 - 0,49999 dann in Spalte B mal 1,08 0,50 - 0,69999 dann * 1,07 0,70 - 0,99999 dann * 1,06 1,00 - 1,49999 dann *1,05 1,50 - 1,99999 dann * 1,04 2,00 - 5,99999 dann * 1,03 6,00 - 9,99999 dann * 1,02 10,00 - 500,00 dann *1,01

Habe schon folgenden Code wo funktioniert aber leider nur für eine Zelle:

Sub Aufschlag()

If Cells(1, 1).Value < 0.099999 And Cells(1, 1).Value > 0 Then Cells(1, 2) = Cells(1, 1) * 1.25

If Cells(1, 1).Value > 0.1 And Cells(1, 1).Value < 0.29999999 Then Cells(1, 2) = Cells(1, 1) * 1.1

If Cells(1, 1).Value > 0.29999999 And Cells(1, 1).Value < 0.39999999 Then Cells(1, 2) = Cells(1, 1) * 1.09

If Cells(1, 1).Value > 0.39999999 And Cells(1, 1).Value < 0.49999999 Then Cells(1, 2) = Cells(1, 1) * 1.08

If Cells(1, 1).Value > 0.49999999 And Cells(1, 1).Value < 0.69999999 Then Cells(1, 2) = Cells(1, 1) * 1.07

If Cells(1, 1).Value > 0.69999999 And Cells(1, 1).Value < 0.99999999 Then Cells(1, 2) = Cells(1, 1) * 1.06

If Cells(1, 1).Value > 0.99999999 And Cells(1, 1).Value < 1.49999999 Then Cells(1, 2) = Cells(1, 1) * 1.05

If Cells(1, 1).Value > 1.49999999 And Cells(1, 1).Value < 1.99999999 Then Cells(1, 2) = Cells(1, 1) * 1.04

If Cells(1, 1).Value > 1.99999999 And Cells(1, 1).Value < 5.99999999 Then Cells(1, 2) = Cells(1, 1) * 1.03

If Cells(1, 1).Value > 5.99999999 And Cells(1, 1).Value < 9.99999999 Then Cells(1, 2) = Cells(1, 1) * 1.02

If Cells(1, 1).Value > 9.99999999 And Cells(1, 1).Value < 500 Then Cells(1, 2) = Cells(1, 1) * 1.01

End Sub

kann mir hier wer helfen?

Danke

...zur Frage

Was möchtest Du wissen?