Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

2 Makros mit gleichem Namen

2 Makros mit gleichem Namen
27.02.2008 09:41:00
Alex
Guten Morgen Forum,
Dringendes Problem:
Kann ich diese beiden Makros irgendwie zusammenschreiben. Denn mit gleichem Namen funktionieren sie nicht.
Makro 1 erlaubt mir in bestimmten Spalten Werte einzutragen, worauf die Zellen mit einer bestimmten Formatierung reagieren.

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "red13"
Dim i As Integer
Dim Zahl As Integer
If Target.Count = 1 Then
If Target.Column = 33 Then
For i = 1 To Len(Target.Value)
On Error GoTo w1
Zahl = Zahl & Mid(Target.Value, i, 1)
Next i
w1:
If Zahl = 50 Then
Target.Offset(0, 1).NumberFormat = "0.0"" sec"""
ElseIf Zahl = 75 Then
Target.Offset(0, 1).NumberFormat = "0.0"" sec"""
ElseIf Zahl = 1000 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
ElseIf Zahl = 300 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
ElseIf Zahl = 500 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
End If
End If
If Target.Column = 34 Then
For i = 1 To Len(Target.Value)
On Error GoTo w2
Zahl = Zahl & Mid(Target.Offset(0, -1).Value, i, 1)
Next i
w2:
If Zahl = 1000 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
End If
End If
If Target.Column = 42 Then
For i = 1 To Len(Target.Value)
On Error GoTo w3
Zahl = Zahl & Mid(Target.Value, i, 1)
Next i
w3:
If Zahl = 100 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
ElseIf Zahl = Schlagball Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
ElseIf Zahl = Wurfball Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
ElseIf Zahl = Schleuderball Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
ElseIf Zahl = GeräteKombi Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
End If
End If
If Target.Column = 43 Then
For i = 1 To Len(Target.Value)
On Error GoTo w4
Zahl = Zahl & Mid(Target.Offset(0, -1).Value, i, 1)
Next i
w4:
If Zahl = 100 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
End If
End If
End If
ActiveSheet.Protect "red13", userinterfaceonly:=True
ActiveSheet.EnableAutoFilter = True
End Sub


Makro 2 geht es um einen Bearbeiternachweis auf einem weiteren Tabellenblatt nachdem in bestimmten Spalten auf dem 1. Tabellenblatt eingetragen wurde.
Option Explicit


Private Sub CommandButton1_Click()
UserForm1.Show
UserForm1.TextBox1.Text = Sheets("Bearbeiternachweis").Range(ActiveCell.Address).Value
End Sub



Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Column
Case 9, 14, 17, 20, 22, 24, 25, 29, 31, 33, 34, 38, 40, 42, 43, 47, 49, 51, 53, 55, 56
Sheets("Bearbeiternachweis").Range(Target.Address).Value = Application.UserName
Case Else
End Select
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If UserForm1.Visible = True Then UserForm1.TextBox1.Text = Sheets("Bearbeiternachweis").Range( _
ActiveCell.Address).Value
End Sub


Kann mir jemand sagen ob und wie ich das zusammenfügen kann?
Oder kann ich eines umbenennen?

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 Makros mit gleichem Namen
27.02.2008 09:48:13
J.
Hallo
hast du mal versucht das einfach unter das erste Makro zu schreiben?
Also quasi so?Denn das bezieht sich ja alles auf das Change-Ereignis des Arbeitsblattes, also sollte es eigentlich möglich sein es zusammen zu fassen.
ActiveSheet.Protect "red13", userinterfaceonly:=True
ActiveSheet.EnableAutoFilter = True
Select Case Target.Column
Case 9, 14, 17, 20, 22, 24, 25, 29, 31, 33, 34, 38, 40, 42, 43, 47, 49, 51, 53, 55, 56
Sheets("Bearbeiternachweis").Range(Target.Address).Value = Application.UserName
Case Else
End Select

AW: 2 Makros mit gleichem Namen
27.02.2008 09:55:32
Beverly
Hi Alex,
du brauchst nur die beiden Woksheet_Cange Ereignisse zusammenfassen - ich hoffe es ist richtig so

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim Zahl As Integer
If Target.Count > 1 Then Exit Sub
ActiveSheet.Unprotect "red13"
Select Case Target.Column
Case 9, 14, 17, 20, 22, 24, 25, 29, 31, 38, 40, 47, 49, 51, 53, 55, 56
Sheets("Bearbeiternachweis").Range(Target.Address).Value = Application.UserName
Case 33
For i = 1 To Len(Target.Value)
On Error GoTo w1
Zahl = Zahl & Mid(Target.Value, i, 1)
Next i
w1:
If Zahl = 50 Then
Target.Offset(0, 1).NumberFormat = "0.0"" sec"""
ElseIf Zahl = 75 Then
Target.Offset(0, 1).NumberFormat = "0.0"" sec"""
ElseIf Zahl = 1000 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
ElseIf Zahl = 300 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
ElseIf Zahl = 500 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
End If
Sheets("Bearbeiternachweis").Range(Target.Address).Value = Application.UserName
Case 34
For i = 1 To Len(Target.Value)
On Error GoTo w2
Zahl = Zahl & Mid(Target.Offset(0, -1).Value, i, 1)
Next i
w2:
If Zahl = 1000 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
End If
Case 42
For i = 1 To Len(Target.Value)
On Error GoTo w3
Zahl = Zahl & Mid(Target.Value, i, 1)
Next i
w3:
If Zahl = 100 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
ElseIf Zahl = Schlagball Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
ElseIf Zahl = Wurfball Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
ElseIf Zahl = Schleuderball Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
ElseIf Zahl = GeräteKombi Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
End If
Sheets("Bearbeiternachweis").Range(Target.Address).Value = Application.UserName
Case 43
For i = 1 To Len(Target.Value)
On Error GoTo w4
Zahl = Zahl & Mid(Target.Offset(0, -1).Value, i, 1)
Next i
w4:
If Zahl = 100 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
End If
Sheets("Bearbeiternachweis").Range(Target.Address).Value = Application.UserName
End Select
ActiveSheet.Protect "red13", userinterfaceonly:=True
ActiveSheet.EnableAutoFilter = True
End Sub




Anzeige
AW: 2 Makros mit gleichem Namen
27.02.2008 10:08:41
Alex
Hallo Ihr Beiden,
vielen dank erstmal.
Beverly, ich hab es so übernommen, dann kam Fehler beim Kompillieren Variable nicht definiert;
und zeigt mir im Makro Schlagball an.
gruß
alex

AW: 2 Makros mit gleichem Namen
27.02.2008 11:21:27
Beverly
Hi Alex,
ich habe an deinem Code nichts verändert, sondern 1:1 übernommen.
Dieser Fehler tritt bei dem Code auch bei mir auf, wenn ich das VBA-Projekt kompiliere. Das hängt aber damit zusammen, dass ich Option Explicit verwende. In diesem Fall müssen die Variablen auch deklariert sein. Das betrifft dann nicht nur "Schlagball", sondern auch alle anderen Variablen.


Anzeige
AW: 2 Makros mit gleichem Namen
27.02.2008 13:18:50
alex
Hi alle zusammen ich nochmal,
is mir echt wichtig, sorry.
ich möchte dieses Teil:
https://www.herber.de/bbs/user/50212.xls
mit meinem:

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "red13"
Dim i As Integer
Dim Zahl As Integer
If Target.Count = 1 Then
If Target.Column = 33 Then
For i = 1 To Len(Target.Value)
On Error GoTo w1
Zahl = Zahl & Mid(Target.Value, i, 1)
Next i
w1:
If Zahl = 50 Then
Target.Offset(0, 1).NumberFormat = "0.0"" sec"""
ElseIf Zahl = 75 Then
Target.Offset(0, 1).NumberFormat = "0.0"" sec"""
ElseIf Zahl = 1000 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
ElseIf Zahl = 300 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
ElseIf Zahl = 500 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
End If
End If
If Target.Column = 34 Then
For i = 1 To Len(Target.Value)
On Error GoTo w2
Zahl = Zahl & Mid(Target.Offset(0, -1).Value, i, 1)
Next i
w2:
If Zahl = 1000 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
End If
End If
If Target.Column = 42 Then
For i = 1 To Len(Target.Value)
On Error GoTo w3
Zahl = Zahl & Mid(Target.Value, i, 1)
Next i
w3:
If Zahl = 100 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
ElseIf Zahl = Schlagball Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
ElseIf Zahl = Wurfball Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
ElseIf Zahl = Schleuderball Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
ElseIf Zahl = GeräteKombi Then
Target.Offset(0, 1).NumberFormat = "0.0"" m"""
End If
End If
If Target.Column = 43 Then
For i = 1 To Len(Target.Value)
On Error GoTo w4
Zahl = Zahl & Mid(Target.Offset(0, -1).Value, i, 1)
Next i
w4:
If Zahl = 100 Then
Target.Offset(0, 1).NumberFormat = "[h]:mm"" min"""
End If
End If
End If
ActiveSheet.Protect "red13", userinterfaceonly:=True
ActiveSheet.EnableAutoFilter = True
End Sub


Besser gesagt muss das zusammen geschrieben werden, weil in beiden Makros die Anfangsbezeichnung


Private Sub Worksheet_Change(ByVal Target As Range) auftaucht.
Muss also in meiner Arbeitsmappe ein 2. Tabellenblatt erstellen, Userform einfügen usw. (wie  _
die verlinkte Datei oben).
Das Problem: ich brauch das dringend und bin offensichtlich zu ... für VBA
Vielleicht könnt ihr euch das jetzt besser vorstellen.
grüsse
alex

Anzeige
AW: 2 Makros mit gleichem Namen
27.02.2008 14:06:05
Beverly
Hi Alex,
und was ist an meinem zusammengefassten Code falsch? Welcher Fehler wird angezeigt und welche Zeile wird im Code markiert?
Ich kann den Code außerdem nicht in deiner Arbeitsmappe finden.


AW: 2 Makros mit gleichem Namen
27.02.2008 14:26:30
alex
Hi Beverly,
der Dateienlink ist mir aus dem Forum empfohlen worden. Ich konnte den Code dort anschauen.
2. Dein Code funktioniert jetzt nachdem ich Option explicit weggelassen habe.
Ist mir aber weiter oben im Forum davon abgeraten worden, weil das wichtig ist für Fehlererkennung etc.
"Es erzwingt die Variablendeklaration und hilft Fehler zu finden/ zu vermeiden".
Was denkst Du darüber?
Grüsse
alex

Anzeige
AW: 2 Makros mit gleichem Namen
27.02.2008 15:09:07
Beverly
Hi Alex,
genau der selben Meinung bin ich auch - siehe meinen Beitrag von 11:21:27.
Du musst nur am Anfang deines Codes alle Variablen deklarieren:

Dim Schlagball As Integer
Dim ....


Als was deklariert werden soll, hängt davon ab, welche Werte deine Variable aufnehmen soll - schau dazu auch mal in der VBA-Hilfe unter VarType-Konstanten.



AW: 2 Makros mit gleichem Namen
27.02.2008 15:26:51
alex
o.k., Danke erstmal, muss schluss machen, komme abends wieder

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige