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

Makro mittels Makro ändern

Makro mittels Makro ändern
07.01.2013 11:22:37
Albert
Hallo VBA Experten,
vorerst einmal alles Gute für das neue Jahr und nochmals vielen Dank für die Unterstützung die ich in diesem Forum erfahren habe.
Ich möchte mittels Makro ein paar Begriffe in einem Worksheet_Change Makro ändern.
So soll zB der Begriff "an" in "to" abgeändert werden.
Ich hoffe, es kann mir da jemand behilflich sein.
Ich bedanke mich im Voraus, Albert

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro mittels Makro ändern
07.01.2013 11:59:40
Mäxl
Hi,
lege eine globale Variable an?
und ändere dies mit deinem Makro...
Wobei mir sich jetzt der Sinn davon entzieht.., warum nicht gleich im Change Bedingungen einbauen.
Option Explicit
Dim anOderTo As String
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If anOderTo = "" Then anOderTo = "an"
MsgBox anOderTo
End If
End Sub
Sub tilto()
anOderTo = "to"
End Sub
Sub tilan()
anOderTo = "an"
End Sub
Sub wechselmichstaendig()
If anOderTo = "" Then
anOderTo = "an"
ElseIf anOderTo = "an" Then
anOderTo = "to"
Else
anOderTo = "an"
End If
End Sub
oder trennen... Klassenmodul des jeweiligen Blattes nur das Change
und die Subs inkl. der globalen variablen in ein allgemeines Modul.
Was du von den Subs verwenden willst bleibt Dir überlassen.
Das Change Ereignis musst Du selbst anpassen da ich deinen Code nicht kenne.
gruß
Mäxl

Anzeige
Danke
07.01.2013 13:50:21
Albert
Hallo Mäxl,
danke für den Tipp, ich werde versuchen es heute Abend umzusetzen.
Der Sinn liegt darin, dass ich schon so viele Argumente miteinander verknüpft habe, dass ich umbenennen muss um zum gewünschten Ergebnis zu gelangen.
Danke vorerst, Albert

AW:Hilfe
07.01.2013 16:18:03
Albert
Hallo Mäxl,
leider kann ich Deinen Vorschlag nicht umsetzen, ich denke da wahrscheinlich zu umständlich oder bin einfach zu ungeschickt. Ich schicke Dir einen Auszug aus meiner "Worksheet_Change" damit hoffentlich Einiges verständlicher wird.
Case 10:
If Cells(Target.Row + 2, 9) = "Betrag S" Then
E = 8
F = -8
ElseIf Cells(Target.Row + 4, 9) = "Betrag S" Then
E = 5
F = -8
ElseIf (Cells(Target.Row + 0, 8) = 2500 And Cells(Target.Row - 2, 9) = "Betrag S") Then
E = 6
F = -8
ElseIf (Cells(Target.Row - 2, 9) = "Betrag S" And Cells(Target.Row + 0, 8) = 2700 And Cells(Target.Row - 1, 3) <> "GS" _
Or (Cells(Target.Row + 0, 8) = 2800 And Cells(Target.Row - 2, 9) = "Betrag S" And Cells(Target.Row - 1, 9).Value = Cells(Target.Row + 0, 10).Value) _
Or (Cells(Target.Row + 0, 8) = 3230 _
And Cells(Target.Row - 2, 9) = "Betrag S")) Or (Cells(Target.Row - 2, 9) = "Betrag S" And Cells(Target.Row + 0, 8) = 9100) _
Or (Cells(Target.Row - 2, 9) = "Betrag S" And Cells(Target.Row + 0, 8) = 9400) Then
E = 7
F = -8
ElseIf Cells(Target.Row - 1, 9).Value <> Cells(Target.Row + 0, 10).Value And Cells(Target.Row - 3, 10) <> "Betrag H" Then
E = 1
F = -2
ElseIf Cells(Target.Row - 1, 9).Value > 0 And Cells(Target.Row - 1, 9).Value <> Cells(Target.Row + 0, 10).Value And Cells(Target.Row - 4, 10) _
<> "Betrag H" And Cells(Target.Row - 1, 9).Value + Cells(Target.Row - 2, 9).Value <> Cells(Target.Row + 0, 10).Value Then
E = 1
F = -2
ElseIf Cells(Target.Row - 1, 9).Value > 0 And Cells(Target.Row - 2, 9).Value > 0 And Cells(Target.Row - 3, 9).Value > 0 _
And Cells(Target.Row - 3, 9).Value <> "Betrag S" Then
E = 5
F = -8
ElseIf Cells(Target.Row + 0, 8).Value = 3290 Or Cells(Target.Row - 1, 3) = "GS" Then
E = 1
F = -2
ElseIf Cells(Target.Row - 1, 7) > 1999 And Cells(Target.Row + 0, 8) > 3999 And Cells(Target.Row + 0, 8) < 5000 And Range("o3") = 1 Then
E = 1
F = -4
ElseIf Cells(Target.Row - 1, 7) > 1999 And Cells(Target.Row + 0, 8) > 3999 And Cells(Target.Row + 0, 8) < 5000 And Range("o3") = 2 Then
E = 1
F = -2
ElseIf (Cells(Target.Row - 2, 9) = "Betrag S" And Cells(Target.Row - 1, 3) <> "GS") And Cells(Target.Row - 1, 9).Value = Cells(Target.Row + 0, 10).Value Then
E = 7
F = -8
ElseIf Cells(Target.Row - 3, 7) > 0 And Cells(Target.Row - 3, 9) <> "Betrag S" And Cells(Target.Row - 2, 7) > 0 And Cells(Target.Row - 1, 7) > 0 _
And Cells(Target.Row + 0, 8) > 0 And Cells(Target.Row + 0, 8) <> 2500 Then
E = 5
F = -8
Else
E = 6
F = -8
End If
Target.Offset(E, F).Select
In diesem Falle (Case 10:) müsste ich die Begriffe "Betrag S", "Betrag H" und "GS" in "Value D", "Value C" und "CN" umtaufen. Ich will in dem dahinterliegenden Tabellenblatt die Benutzersprache umschalten und somit habe ich wechselnde Begriffe die ich zur Cursorsteuerung benötige.
Das Makro dafür habe ich mir zusammengebastelt mit Ausnahme der "automatischen" Änderungen in der Worksheet_Change, das muss ich zur Zeit noch mit Strg+h händisch durchführen.
(Tabelle1.Range("AJ3").Value = 1 Deutsch, Wert 2 = Englisch) Ich wollte diese Werte, die vom bereits existierenden Makro gesetzt werden für die Anpassung in der Woksheet_Change verwenden - leider erfolglos.
Ich hoffe ich falle nicht lästig und Du kannst mir sagen wo ich welchen Teil Deines Codes einzusetzen habe.
Vielen Dank, Albert

Anzeige
AW: AW:Hilfe
07.01.2013 17:02:44
Rudi
Hallo,
ganz schön gruselig ;-) Das geht besser.
teste mal:
Sub aaa()
Dim vbc
Dim iStart, iAnzahl, sText
Const sProc As String = "Worksheet_change"
Set vbc = ThisWorkbook.VBProject.VBComponents("Tabelle1") 'Codename!!! der Tabelle
With vbc.codemodule
iStart = .ProcStartLine(sProc, vbext_pk_Proc)
iAnzahl = .ProcCountLines(sProc, vbext_pk_Proc)
sText = .Lines(iStart, iAnzahl)
sText = Replace(sText, "GS", "CN")
sText = Replace(sText, "Betrag S", "Value D")
sText = Replace(sText, "Betrag H", "Value C")
.DeleteLines iStart, iAnzahl
.AddFromString sText
End With
End Sub

Gruß
Rudi

Anzeige
AW: AW:Vielen herzlichen Dank
07.01.2013 20:10:23
Albert
Hallo Rudi,
ein herzliches Dankeschön. Seit dem letzten Posting bin ich in einem Formelproblem stecken geblieben, deshalb die späte Antwort.
Ich habe Deinen Code gerade ausprobiert und er funktioniert wunderbar, damit ist mir wirklich sehr geholfen. Ich habe in VBA leider nur fragmentarische Kenntnisse, Deine Version beeindruckt mich durch Ihre Kürze und Prägnanz.
Nochmals Danke und einen schönen Abend, Albert

Recherche nenutzt?
07.01.2013 12:16:36
Rudi
Hallo,
anscheinend nicht.
Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige