Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

(vba) einer variablen den wert einer zelle zuweisen und mit 15 malnehmen





Frage

hallo community, wie kann ich einer variablen einen wert zuweisen und diesen dann mit 15 malnehmen. dieser wert soll inhalt einer anderen zelle sein. bsp.: die variable h9 soll den wert der zelle "h9" zugewiesen werden, dieser dann mal 15 genommen und in die zelle i9 eingefügt werden. danke, dietmar

Antwort 1 von Pumuckel


h9 = Worksheets("Tabelle1").Range("H9").Value
Worksheets("Tabelle1").Range("I9").Value = h9 * 15


Statt "Tabelle1" musst Du den Namen Deines Tabellenblattes verwenden.

Antwort 2 von Pumuckel

P.S.
wenn Du das Blatt vorher schon irgendwo mit

Worksheets("Tabelle1").Activate

aktiviert hast, kannst Du auch folgenden Code verwenden:

h9 = ActiveSheet.Range("H9").Value
ActiveSheet.Range("I9").Value = h9 * 15


Damit ist es allgemeingültig und bei Bedarf für mehrere Dateien / Tabellen verwendbar.

Antwort 3 von E. Kalt

habe eine ähnliche Frage.

hi,

ich brauche ein Makro.

Wenn ich mehrer Zellbereiche Makriere und in einem anderen Excelblatt einfüge dann sollen sie dort automatisch formatiert und mit einer Zahl multipliziert werden.

Beispiel:

Ich markiere die Zellen a1, b4, b9 und c3 (kann aber je nach bedarf anders sein) und drücke strg + c für kopieren.

jetzt muss das makro zum einsatz kommen.

ich gehe auf das andere Tabellblatt und markiere eine Zelle.

jetzt soll das makro die Zellen einfügen.
und dann bei jeder eingefügten Zelle den wert mal 5 nehmen und eintragen.

das heisst.

in zelle a1 steht eine 4 das ergibt mal 2 ein 8
inzelle b4 steht eine 2 * 2 ergibt 4
etc.

kann man das durch ein makro realisieren??

wenn ich mehrere Bereiche markiere kann ich ja durch enter durch die einzelnen Zellen springen aber wie mach ich das in vbs??


für eine Zelle sieht das ja so aus.
sobald ich aber mehrere kopiere wird nur die eine aktive Zelle * 2 genommen die restlichen bleiben in der Ursprungsform.
Jetzt muss das makro halt jede einzelne Zelle abarbeiten.

Sub einfuegen()

ActiveCell.PasteSpecial
ActiveCell.FormulaR1C1 = ActiveCell * 2
Selection.NumberFormat = "0.00"

End Sub

Antwort 4 von Kurz

Hier das Makro!!
Gruß Werner

Option Explicit
'Wenn Sie die Option Explicit-Anweisung in einem Modul verwenden,
'müssen alle Variablen explizit mit
'den Anweisungen Dim, Private, Public, ReDim oder Static deklariert werden.
'Wenn Sie einen nicht deklarierten Variablennamen verwenden,
'tritt zur Kompilierungszeit ein Fehler auf.
'
'Wenn Sie die Option Explicit-Anweisung nicht verwenden,
'erhalten alle nichtdeklarierten Variablen den Typ Variant,
'solange mit einer DefTyp-Anweisung kein anderer Standardtyp festgelegt wird.
'
'Anmerkung
'Mit Option Explicit vermeiden Sie falsch geschriebene Namen
'bereits bestehender Variablen oder Verwechslungen im Code
'bei unklarem Gültigkeitsbereich von Variablen.


Sub Mehrfachauswahl_kopieren()
On Error GoTo 1
Dim i, Ausgewählte_Zellanzahl, oberste_Zeile, linke_Spalte, RowOffset, ColumnOffset As Integer
Dim oben_links
Dim Einfügezelle As Object
Ausgewählte_Zellanzahl = Selection.Areas.Count
ReDim Ausgewähltes_Feld(1 To Ausgewählte_Zellanzahl) 'Objekt markierter Teilbereich
For i = 1 To Ausgewählte_Zellanzahl 'Zahl der Objekte Ausgewähltes_Feld
Set Ausgewähltes_Feld(i) = Selection.Areas(i) 'Kopplung des Bereichsobjektes mit der jeweiligen Auswahl
Next i
oberste_Zeile = ActiveSheet.Rows.Count
linke_Spalte = ActiveSheet.Columns.Count
For i = 1 To Ausgewählte_Zellanzahl
If Ausgewähltes_Feld(i).Row < oberste_Zeile Then oberste_Zeile = Ausgewähltes_Feld(i).Row
If Ausgewähltes_Feld(i).Column < linke_Spalte Then linke_Spalte = Ausgewähltes_Feld(i).Column
Next i
Set oben_links = Cells(oberste_Zeile, linke_Spalte)
Set Einfügezelle = Application.InputBox("Klicken Sie auf die oberste linke Zelle Ihres gewählten Einfügebereiches:", _
"Auswahl Einfügebereich", "Hier nichts eintragen!", 250, 161.25, Type:=8)
Einfügezelle.Select
For i = 1 To Ausgewählte_Zellanzahl
RowOffset = Ausgewähltes_Feld(i).Row - oberste_Zeile
ColumnOffset = Ausgewähltes_Feld(i).Column - linke_Spalte
Ausgewähltes_Feld(i).Copy Einfügezelle.Offset(RowOffset, ColumnOffset)
Next i
1:
End Sub