Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1732to1736
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

Excel VBA Werte ändern

Excel VBA Werte ändern
18.01.2020 06:49:49
Volker
Guten Morgen,
Ich hab ein kleines Anliegen ;) und hoffe auf die Hilfe von euch Profis :)
Zwei Spalten
Spalte NI enthält standardmäßig 0 ist aber abhängig von einer anderen Spalte und ändert die Werte dementsprechend ab 1,2,3,4,5,6
Nun soll in Spalte B 5 ein Text erscheinen wenn in Spalte NI 4 eine 2 erscheint. Könnte man mit IF lösen aber ich brauch das für die ganze Spalte von B5 : B200 wären Zuviels IF geht das nicht irgendwie mit Offset oder so ?
Vielen Dank schon mal

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Werte ändern
18.01.2020 08:18:58
Nepumuk
Hallo Volker,
das hört sich nach einem einfachen SVERWEIS an.
Gruß
Nepumuk
AW: Excel VBA Werte ändern
18.01.2020 08:19:39
Matthias
Hi

Option Explicit
'Nun soll in Spalte B5 ein Text erscheinen wenn in Spalte NI4 eine 2 erscheint.
'Könnte man mit IF lösen aber ich brauch das für die ganze Spalte
'von B5 : B200 wären Zuviels IF geht das nicht irgendwie mit Offset oder so ?
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("NI4:NI199")) Is Nothing And Target.Count = 1 Then
Select Case Target
Case Is = 1
Target.Offset(1, -371) = "Text1"
Case Is = 2
Target.Offset(1, -371) = "Text2"
Case Is = 3
Target.Offset(1, -371) = "Text3"
'und hier bei Bedarf weitere Case-Anweisungen
End Select
End If
End Sub
Gruß Matthias
Anzeige
AW: Excel VBA Werte ändern
18.01.2020 08:43:15
Volker
Hallo Matthias,
Wie kann ich den Code umschreiben das er in meinen Click Sub passt?
Private Sub ok_Click()
Ich brauch ja die Definition Von Target
Danke und Sorry das ich nerve
AW: Excel VBA Werte ändern
18.01.2020 09:07:53
Volker
Hallo Matthias,
hab es hinbekommen :) dein code macht genau das was ich wollte super vielen dank :) hast mein Wochenende gerettet :) vielen vielen dank
eine frage hab ich noch.
Wenn in den Zellen NI nun Formeln stehen die das Ergebnis 1,2,3,4,5,6,0 ausgeben funtioniert der code leider nicht mehr, kann man das im code anpassen das er aus dem ergebniss einer formel den text ausgibt?
falls das zuviel arbeit ist trotzdem danke hast mir schon enorm geholfen :)
Anzeige
erklär mal bitte etwas genauer ...
18.01.2020 09:48:48
Matthias
Zitat:
Wenn in den Zellen NI nun Formeln stehen die das Ergebnis 1,2,3,4,5,6,0 ausgeben funtioniert der code leider nicht mehr, kann man das im code anpassen das er aus dem ergebniss einer formel den text ausgibt?
Sorry, diese Aussage verstehe ich nicht. Was für Text denn wenn Du schreibst da steht 1,2,3, ... usw. drin.
Evtl. muss der Code nur ins Calculate-Ereignis geschrieben werden.
AW: erklär mal bitte etwas genauer ...
18.01.2020 10:04:02
Volker
ja doof formuliert :(
dein code funktioniert super wenn in der Spalte NI eine zahl (1,2,3,4,5,6,0 ) steht, dann gibt dein code in B Text1, Text2, Text3 ein. dafür nochmal vielen dank.
Allerdings wenn nun in Spalte NI eine Formel steht deren Ergebnis 1,2,3,4,5,6,0 ergibt funktioniert der code nicht mehr.
gibt es die Möglichkeit für den Code aus einer formel zu erkennen ob da nun 1,2,3,4,5,6,0 steht ?
hab mal gegooglt
Private Sub Worksheet_Calculate()
Static A3_Alt As Double
If Range("A3").Value  A3_Alt Then
A3_Alt = Range("a3").Value
Call Zellenänderung
End If
End Sub
ähnliches Problem wie bei mir.
allerdings bin ich mit VBA nicht so begabt Calculate in mein Problem einzubinden
Meine Überlegung:
Private Sub Worksheet_Calculate()
Static A3_Alt As Double               'hier glaube ich müsste meine Spalte NI stehen'
If Range("A3").Value  A3_Alt Then   ' hier müsste ich einen Bereich statt einzelne zelle prü _
fen'
A3_Alt = Range("a3").Value        ' hier auch wieder ganze spalte NI'
If Not Intersect(Target, Range("NI4:NI199")) Is Nothing And Target.Count = 1 Then 'hier  _
dein code'
Select Case Target
Case Is = 1
Target.Offset(1, -371) = "Text1"
Case Is = 2
Target.Offset(1, -371) = "Text2"
Case Is = 3
Target.Offset(1, -371) = "Text3"
'und hier bei Bedarf weitere Case-Anweisungen
End Select
End If
End If
End Sub
bin bestimmt komplett falsch aber so in die Richtung dachte ich sollte es funktionieren nur wie gesagt bin ich in VBA nicht fit genug das selbst umzusetzten.
Anzeige
kannst Du mal ne Bsp.Datei hochladen owT
18.01.2020 10:51:55
Matthias
AW: Erklärung in meiner Datei
18.01.2020 12:33:13
Volker
In Spalte B darf leider keine Formel stehen das ist mein Problem.
Das muss ich über einen code lösen welchen ich ja schon habe dank dir
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("NI4:NI199")) Is Nothing And Target.Count = 1 Then
Select Case Target
Case Is = 1
Target.Offset(1, -371) = "Text1"
Case Is = 2
Target.Offset(1, -371) = "Text2"
Case Is = 3
Target.Offset(1, -371) = "Text3"
'und hier bei Bedarf weitere Case-Anweisungen
End Select
End If
End Sub
Nur muss ich den Code jetzt so hin bekomme das :
'If Not Intersect(Target, Range("NI4:NI199")) Is Nothing And Target.Count = 1 Then'
checkt das in Spalte NI eine Formel steht und nicht eine Zahl.
Bzw Habe ich das bisher fast gelöst in dem ich
Range("NJ4:NJ199") = Range("NI4:NI199")
eingefügt habe jetzt steht zumindest in der Spalte NJ eine zahl und keine Formel. Habe deine Formel umgestellt :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("NJ4:NJ199")) Is Nothing And Target.Count = 1 Then
Select Case Target
Case Is = 1
Target.Offset(1, -372) = "Text1"
Case Is = 2
Target.Offset(1, -372) = "Text2"
Case Is = 3
Target.Offset(1, -372) = "Text3"
'und hier bei Bedarf weitere Case-Anweisungen
End Select
End If
End Sub
leider klappt das nicht.
Application.Calculate hab ich auch schon eingefügt um das Worksheet zu aktualisieren nach dem ich den ok button geklickt habe.
Lösungsvorschläge ?
Anzeige
Nimm ne Schleife ...
18.01.2020 12:45:24
Matthias
Hi
Dann musst Du eine Schleife starten über Range("NJ4:NJ199")
Dim RnG As Range
For Each RnG In Range("NJ4:NJ199")
If RnG.HasFormula Then 'mach was
Next
HasFormula bedeutet es steht eine Formel in der Zelle
Gruß Matthias
AW: Nimm ne Schleife ...
18.01.2020 13:01:59
Volker
Dim Target As Range
Dim RnG As Range
For Each RnG In Range("NI4:NI199")
If RnG.HasFormula Then
If Not Intersect(Target, Range("NI5:NI199")) Is Nothing And Target.Count = 1 Then
Select Case Target
Case Is = 1
Target.Offset(1, -371) = "Text1"
Case Is = 2
Target.Offset(1, -371) = "Text2"
Case Is = 3
Target.Offset(1, -371) = "Text3"
'und hier bei Bedarf weitere Case-Anweisungen
End Select
End If
Next RnG
so etwa in dieser Richtung ?
immer schwer zu erklären :/ In allen zellen der spalte NI steht eine Formel das Ergebnis dieser formel beträgt entweder 1,2,3,4,5,6 oder 0.
Ich möchte also nicht nur schauen ob eine formel in NI ist sondern mich interessiert das Ergebnis dieser formel.
Aber wenn ich doch über range("NI").Value = range("NJ").value den Inhalte von NJ anpasse müsste dein code doch funktionieren da nur zahlen stehen keine Formeln aber das tut er nicht :( warum ? wo ist mein fehler ?
Anzeige
AW: Nimm ne Schleife ...
18.01.2020 13:13:30
Werner
Hallo,
der Code muss ins Calculate-Ereignis der Tabelle. Wurde aber schon mal angemerkt.
Gruß Werner
dann ohne Target nur mit der Variable RnG
18.01.2020 13:14:34
Matthias
ok dann so ...
Option Explicit
Private Sub Worksheet_Calculate()
Dim RnG As Range
For Each RnG In Range("NI4:NI199")
Select Case RnG
Case Is = 1
RnG.Offset(1, -371) = "Text1"
Case Is = 2
RnG.Offset(1, -371) = "Text2"
Case Is = 3
RnG.Offset(1, -371) = "Text3"
'und hier bei Bedarf weitere Case-Anweisungen
End Select
Next RnG
End Sub

AW: DANKE gelöst
18.01.2020 13:26:21
Volker
MEIN HELD !!!!!!!!
DANKE !!!!!!!
es funktioniert !!!!
vielen dank mein Wochenende ist gerettet !!!!!
vielen vielen dank
danke danke danke
Anzeige
als Bsp. so ...
18.01.2020 12:58:24
Matthias

Dim RnG As Range
For Each RnG In Range("NJ4:NJ199")
If RnG.HasFormula Then
MsgBox "Formel in " & RnG.Address
End If
Next

AW: als Bsp. so ...
18.01.2020 13:15:59
Volker
Sorry Matthias :(
lassen wir mal die formel aussen vor. Hab das jetzt anders gelöst mit
'Range("NJ5:NJ20").Value = Range("NI5:NI20").Value'
ich überprüfe jetzt NJ da sind keine Formeln nur zahlen.
benutze jetzt dein code von vorhin
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("NJ5:NJ199")) Is Nothing And Target.Count = 1 Then
Select Case Target
Case Is = 1
Target.Offset(1, -372) = "Text1"
Case Is = 2
Target.Offset(1, -372) = "Text2"
Case Is = 3
Target.Offset(1, -372) = "Text3"
'und hier bei Bedarf weitere Case-Anweisungen
End Select
End If
End Sub
warum hat das heute morgen geklappt wenn ich eine zahl von Hand eingebe und jetzt wenn eine zahl eingefügt wird über einen code nicht ?
ich bin echt zu blöd sorry
Anzeige
AW: als Bsp. so ...
18.01.2020 13:18:53
Werner
Hallo,
weil das Change-Ereignis nicht auf Formelberechnung reagiert, dafür gibt es das Calculate-Ereignis.
Das Calculate-Ereignis hat aber kein Target.
Also: Nimm den Code von Matthias von 13:14 h und pack den ins Calculate-Ereignis des Blattes.
Gruß Werner
AW: Excel VBA Werte ändern
18.01.2020 08:32:07
Volker
Hallo Nepomuk hallo Matthias
@Nepomuk leider nein die zellen B müssen leer sein sonst kommt meine Befüllung nicht klar
@Matthias danke teste ich gleich mal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige