Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variable in VBA ermitteln und als Wert übergeben

Variable in VBA ermitteln und als Wert übergeben
24.02.2019 15:51:18
AnBad
Hallo,
ist es möglich eine in VBA ermittelten Wert an einen Namen zu übergeben, so dass dieser Wert in normalen Exelformeln genutzt werden kann?
Beispiel:
Ich ermittle die letzte Zeile mit:
LastRow = Cells(Rows.Count, 4).End(xlUp).Row
Und später möchte ich diesen Wert dann in einer Formel nutzen z.B.
=Summe(A1:A[LastRow]
Ist das möglich?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable in VBA ermitteln und als Wert übergeben
24.02.2019 15:55:50
Hajo_Zi
vba ist englisch.
WorksheetFunction.Sum(Range("A1:A" & Lastrow))

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: Variable in VBA ermitteln und als Wert übergeben
26.02.2019 18:30:30
AnBad
Feedback:
Hier liegt vlt. ein Missverständnis vor. Ich versuche meine Frage nochmals, anders zu formulieren.
In VBA berechnet man einen Wert und weist ihn einer Variable z.B. "VariableA" zu.
Wie kann man diesen Wert, bzw. diesen Variablennamen "VariableA" in einer normalen Formel nutzen? Durch Zuweisung eines Namens? Gernerierung einer Function()?
z.B.
=B1 + "VariableA" oder

=C9 x "VariabelA" + 1
Grund der Frage (nicht unbedingt lesenswert, da nicht wichtig, denke ich):
In B2 habe ich eine Summenformel (=Summe(B10:B100)). Manchmal endet die Tabelle bereits bei B20, manchmal bei B80. Zwei Zeilen unter der Zelle letzten Zelle, soll mir VBA auch einen Wert eintragen, der aber nicht aufsummiert werden soll. D.h: die Summenformel soll nicht fest bis B100 gehen sondern dynamisch, bestimmt durch VBA enden. Ja, jetzt kann man die Summenformeln (=Summe(B10:B100)) sicherlich komplett durch VBA erstetzen oder umgekehrt irgenwie mit einer normalen Formel die Max.Zelle ermitteln und -2 nehmen. Dies wollte ich jedoch nicht, da in machen Zellen ab B10 auch Text steht, und mir VBA Fehler ausgibt und umgekehrt, wenn der Wert in VBA bereits vorliegt, bedarfs es keine kompizierte Formel in Excel. Außerdem wollte ich aus SIcherheitsgründen für den Anwendungsfall die Summierung als Formel belassen und in einer weiteren Zelle ein Überpfürung duch VBA etablieren.
Dies ist ein Problem, welches jetzt kurzfristig gelöst werden müsste.
Anzeige
AW: Variable in VBA ermitteln und als Wert übergeben
26.02.2019 21:58:17
Dieter
Hallo AnBad,
du kannst per VBA entweder einem bereits vorhandenen Namen einen Wert zuweisen oder einen neuen Namen definieren und diesem Namen auch einen Wert zuweisen.
Das sieht z.B. folgendermaßen aus:
Sub Wert_zuweisen()
' Wert an einen vorhandenen Namen zuweisen.
Dim NameExistiert As Boolean
Dim nm As Name
Dim wb As Workbook
Dim ws As Worksheet
Dim zeileA As Long
Set wb = ThisWorkbook
Set ws = wb.Worksheets(1)
zeileA = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For Each nm In wb.Names
If nm.Name = "LetzteZeileA" Then
NameExistiert = True
Exit For
End If
Next nm
If NameExistiert Then
Set nm = wb.Names("LetzteZeileA")
nm.Value = zeileA
Else
MsgBox "Der Name """ & "LetzteZeileA" & """ existiert nicht."
End If
End Sub
Sub Namen_per_VBA_Definieren()
' Neuen Namen erzeugen und Wert zuweisen
' Das Programm kann auch ausgeführt werden, wenn
' der Name bereits existiert.
Dim nm As Name
Dim wb As Workbook
Dim ws As Worksheet
Dim zeileB As Long
Set wb = ThisWorkbook
Set ws = wb.Worksheets(1)
zeileB = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
Set nm = ws.Names.Add(Name:="LetzteZeileB", RefersTo:="=" & CStr(zeileB))
End Sub
Die Namen verwendest du dann als Variable in deinem Tabellenblatt, wie gewohnt.
https://www.herber.de/bbs/user/127954.xlsm
Mit freundlichen Grüßen
Dieter Klemke
Anzeige
AW: Variable in VBA ermitteln und als Wert übergeben
26.02.2019 23:49:16
Werner
Hallo,
so:
Public Sub aaa()
Dim loLetzte As Long
With Worksheets("DeinBlatt")
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Row
.Cells(2, 2) = WorksheetFunction.Sum(.Range(.Cells(10, 2), .Cells(loLetzte, 2)))
.Cells(loLetzte, 2).Offset(2) = 50
End With
End Sub
Gruß Werner
AW: Variable in VBA ermitteln und als Wert übergeben
01.03.2019 13:34:53
AnBad
Hallo Werner,
vielen Dank. Habe die Formel für meinen Bedarf jetzt angepasst:
(Das Anpassen kann man bestimmt noch professioneller machen, aber mir tut es das erstmal)
Option Explicit
Public Sub SummenSpalten()
Dim LastRow As Long
With Worksheets("Kalkulation")
LastRow = .Cells(.Rows.Count, 5).End(xlUp).Row
'.Cells(33, 7) = WorksheetFunction.Sum(.Range(.Cells(19, 7), .Cells(loLetzte, 7)))
.Cells(LastRow, 7).Offset(3).Clear
.Cells(LastRow, 6).Offset(3).Clear
.Cells(LastRow, 6).Offset(3) = "Gesamt, Netto:"
.Cells(LastRow, 7).Offset(3) = WorksheetFunction.Sum(.Range(.Cells(19, 7), .Cells(LastRow,  _
7)))
.Cells(LastRow, 7).Offset(3).NumberFormat = "#,##0.00 €"
End With
End Sub

Anzeige
AW: Variable in VBA ermitteln und als Wert übergeben
24.02.2019 16:01:53
Sepp
Hallo ?,
das hgeht auch ohne VBA.
Tabelle1

 ABCD
120 871
253  2
314  3
462   
591   
619   
727   
850   
958   
1089   
1142   
1287   
1372   
1471   
1589   
1691   
1743   
1832   
1982   
2023   
2119   
2257   
2312   
2441   

Formeln der Tabelle
ZelleFormel
C1=SUMME(A1:INDEX(A:A;lastRow))
Namen in Formeln
ZelleNameBezieht sich auf
C1lastRow=VERWEIS(2;1/(Tabelle1!$D:$D<>"");Tabelle1!$D:$D)
Namen verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
http://www.excelformeln.de/formeln.html?welcher=48
 ABCDEF
1Gruß Sepp
2
3

Anzeige
aha...
24.02.2019 16:16:08
Werner
Hallo,
...neues Problem, aber beim "alten Problem" reicht es nicht mehr eine Antwort zu geben.
Gruß Werner

196 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige