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

Zellwertanpassung

Zellwertanpassung
Frank
Hallo miteinander,
ich benötige mal Euren Rat und hoffe dass ich mich verständlich ausdrücke. Ich möchte Werte von einem Tabellenblatt (Quelle) in mein Zieltabellenblatt (Ziel) mittels Zellwertfestlegung übertragen.
Sieht folgendermaßen aus.
Im Tabellenmodul (Ziel) steht wenn in A1 die Werte 1 bis 2 ausgewählt wurden - dann MakroA oder MakroB ausführen.
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address(0, 0) = "A1" Then
If .Value = "1" Then
Call MakroA
ElseIf .Value = "2" Then
Call MakroB
End If
End If
End With
End Sub

Im Modulblatt stehen nun die beiden Makros bezogen aber immer auf Zeile 1. Wie muss ich dass denn anstellen, wenn ich in A2 die selbe Auswahl vornehmen möchte und die Zieladresse demzufolge Zeile 2 wäre. Ich muss aber in 17 Zeilen die Abfrage starten - und dort humpelt der Hamster sonst würde ich einfach die beiden Makros nochmal kopieren und Z=1 mit Z=2 ersetzen.
Einfach gesagt - Wenn Zellwert in A2 eine 2 wäre dann bitte MakroB starten aber in Zeile 2 beginnen, wenn in A13 Zellwert eine 1 dann bitte MakroA ausführen aber in Zeile 13 beginnen usw.
https://www.herber.de/bbs/user/81389.xls
Vielleicht hat jemand einen tip.
Danke Gruß Frank
Sub MakroA()
Application.AskToUpdateLinks = False
Application.ScreenUpdating = False
Z = 1  ' übertragen in Zieltabelle - Zeile 1
For i = 4 To 7 Step 1   ' Beginn in Zeile 4 zu suchen bis Zeile 7
Sheets("Quelle").Select ' Ausgangstabelle
Worksheets("Quelle").Range(Cells(i, 7), Cells(i, 11)).Copy Destination:=Worksheets("Ziel"). _
Cells(Z, 5) ' Kopiere Zellen von Spalte 7 bis 11 in Zieltabelle nach Zeile 1, Spalte5
Z = Z + 5  ' gehe 5 Zeilen nach unten von ersten Zielwert
Next i
Sheets("Ziel").Select
Range("A4").Select
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
End Sub

Sub MakroB()
Application.AskToUpdateLinks = False
Application.ScreenUpdating = False
Z = 1  ' übertragen in Zieltabelle - Zeile 1
For i = 13 To 16 Step 1   ' Beginn in Zeile 13 zu suchen bis Zeile 16
Sheets("Quelle").Select ' Ausgangstabelle
Worksheets("Quelle").Range(Cells(i, 7), Cells(i, 11)).Copy Destination:=Worksheets("Ziel"). _
Cells(Z, 5) ' Kopiere Zellen von Spalte 7 bis 11
Z = Z + 5  ' gehe 5 Zeilen nach unten von ersten Zielwert
Next i
Sheets("Ziel").Select
Range("A4").Select
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
End Sub

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zellwertanpassung
12.08.2012 16:32:01
Hajo_Zi
Hallo Frank,
benutze Target.row
Dein Beitrag finde ich ein wwenig verwirrend. Darum habe ich keine Ahnung ob ich das richtige getroffen habe.

AW: Zellwertanpassung
12.08.2012 17:02:47
Frank
Hallo Hajo,
es ist in der Tat verwirrend!! Anders gesagt wenn ich z.B. in Zelle A17 eine 1 eintragen würde -- dann soll bitte MakroA loslaufen aber bitte in Z = 17 beginnen. Bei der Worksheet_Change Anweisung wird sich aber nur auf A1 bezogen das ist mein Problem.
Kann man da einen Bereich festlegen? Sagen wir - wenn im Bereich A1 bis A17 die Zellwerte 1 bzw. 2 stehen dann das jeweilige MakroA oder MakroB ausführen. Da wäre ich schon mal sehr weit. Dann ist dann noch die Z=1 Zuweisung zu meistern. Klappt eben nur mit A1 zur Zeit.
Danke Frank
Anzeige
AW: Zellwertanpassung
12.08.2012 17:07:56
Hajo_Zi
Hallo Frank,
'A1:A17 die Zellwerte 1 bzw. 2
Option Explicit                             ' Variablendefinition erforderlich
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As Range                  ' Variable für Bereich
Dim RaZelle As Range                    ' Variable für Zelle
' Bereich der Wirksamkeit
Set RaBereich = Range("A1:A17")
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
With RaZelle
If RaZelle = 1 Then
MsgBox "Mache dies " & Target.Row
ElseIf RaZelle = 2 Then
MsgBox "Mache das " & Target.Row
End If
End With
Next RaZelle
'ActiveSheet.protect ("Passwort")
End If
Set RaBereich = Nothing                 ' Variable leeren
End Sub
Gruß Hajo
Anzeige
AW: Zellwertanpassung
12.08.2012 17:54:11
Frank
Hajo, jetzt sind wir ja schon mal ein ganzes stück weiter.
Wie übergebe ich aber jetzt den wert in die jeweiligen Makros?
Versuche es mir gerade aufzumalen. Mach dies ist MakroA - Mach das ist MakroB und jeweils wenn ok betätigt wird muss das makro ausgeführt und der Variablen Z der Target.Row wert übergeben werden.
Kann man auf die MSGBOX verzichten und gleich Call MakroA oder B mit dem target.Row verbinden.
Sorry bei VBA brauch ich Unterstützung. :-)
Hajo ich geb mir die kugel!!
AW: Zellwertanpassung
12.08.2012 17:56:56
Hajo_Zi
Hallo Frank,
schreibe
Markro1 Target.Row
Im Makro mußt Du dann nur vorsehen das auch was übergeben wird.
Makro1(LoZeile as Long)
Gruß Hajo
Anzeige
AW: Zellwertanpassung
12.08.2012 18:46:07
Frank
Hallo Hajo - Danke erstmal für Deine Geduld. Darum geht es mir von Anfang an - wie übergebe ich den Makros den Zeilenanfang. Wie bekomme ich den Zahlenwert aus der Messagebox nach Z=...?
Schönen Abend noch
Gruß Frank
AW: Zellwertanpassung
16.08.2012 15:09:35
Frank
Hallo Hajo hallo all ihr anderen, habe mich jetzt 2 Tage beschäftigt mit Target.row und target.address - ich komme nicht klar. Ich habe mir eine Gültigkeitsliste von1 bis 7 angelegt. Der Zellbereich C1 bis C20 greift auf diese Liste zu.
Des weiteren gibt es 7 Makros welche im Modulblatt stehen
Dieses untenstehende Makro steht in einem Tabellenblatt -- ich muss nun hinbekommen, dass der Adresswert - hier G8 die Listenwerte bekommt. Wenn ich z.B.in Zelle C15 die 7 auswähle soll Makro7 loslaufen. Ich weiß nicht wie ich dies übergeben soll. Du hattest mir das mit ner MSgBox angeboten. Würde auch gehen wenn der Wert der mir angezeigt wird per OK Button dort eingetragen würde. Das wäre das erste von zwei Problemen. Das zweite brauche ich erst in Angriff zu nehmen wenn ich dies geschafft habe. Kannst Du noch mal drüber schauen. Danke
Frank

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address(0, 0) = "G8" Then
If .Value = "1" Then
Call Makro1
ElseIf .Value = "2" Then
Call Makro2
ElseIf .Value = "3" Then
Call Makro3
ElseIf .Value = "4" Then
Call Makro4
ElseIf .Value = "5" Then
Call Makro5
ElseIf .Value = "6" Then
Call Makro6
ElseIf .Value = "7" Then
Call Makro7
End If
End If
End With
End Sub

Anzeige
AW: Zellwertanpassung
16.08.2012 17:30:43
Hajo_Zi
das Makro sollte nicht in einem Tabelleblattt, sondern in dem in dem Du G8 überwachen willst.
Ich baue keine Datei nach, die Zeit hat schon jemand investiert. Ein Link zur Datei wäre nicht schlecht.
Gruß Hajo
AW: Zellwertanpassung
16.08.2012 21:18:32
Frank
Hallo und Guten Abend, ich habe jetzt mal versucht alles verwirrende wegzulassen und folgende Datei hochgeladen.
https://www.herber.de/bbs/user/81458.xls
Ich möchte aus 4 Makros auswählen - momentan verweist die Targetadresse in der Worksheet_Change Anweisung starr auf C4. Dort muss ich irgendwie das Target.Row hinbekommen um anschließend dem Makro1 bis 4 die Zielzeile zu übergeben.
Gruß Frank
Anzeige
AW: Zellwertanpassung
17.08.2012 05:55:00
Hajo_Zi
Hallo Frank,
Option Explicit
' C4:C11 Zellwerte 1-4
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column = 3 And .Row 

Gruß Hajo
AW: Zellwertanpassung
17.08.2012 14:07:21
Frank
Hallo Hajo,
genanau so... Danke
Gruß Frank
AW: Zellwertanpassung
16.08.2012 23:24:17
Frank
Problem gelöst - habe Zeile MsgBox... mit z.B. Range("A1") = Target.Row ersetzt und im Makro den Zeilenbezug auf A1 gesetzt.
Danke für die Hilfe
Gruß Frank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige