Makro ausführen, wenn....

Bild

Betrifft: Makro ausführen, wenn.... von: Josef
Geschrieben am: 18.03.2005 07:38:24

Guten Morgen!

Gäbe es bitte mittels VBA folgende Lösung: ?

Wenn in Spalte A (Markierung A2-A10) die ersten zwei Zeichen die Zahl 18 sind, dann führe Makro1 aus, sind die ersten 2 Zeichenin Spalte A (Markierung A11-A20) eine 19 dann führe Makro2 aus usw.


Danke


Josef

Bild


Betrifft: AW: Makro ausführen, wenn.... von: Hajo_Zi
Geschrieben am: 18.03.2005 07:52:36

Hallo Josef,

handelt es sich um Eingaben?


Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.




Bild


Betrifft: AW: Makro ausführen, wenn.... von: Josef
Geschrieben am: 18.03.2005 08:10:05

Hallo Hajo!

Danke für Deine Antwort.

Eingaben direkt nicht. Das Makro würde eine Formel in der entsprechenden Zelle einfügen und der richtige Wert würde eingetragen werden.


Josef


Bild


Betrifft: AW: Makro ausführen, wenn.... von: Volker
Geschrieben am: 18.03.2005 08:06:11

Hallo Josef,

das hier sollte es tun:

Sub Makro1()
Dim bereich As Range
Dim test18, test19 As Boolean
test18 = True
test19 = True
Set bereich = Range("a2:a10")
For Each zelle In bereich
    test18 = test18 And (Left(zelle, 2) = 18)
Next
If test18 Then
    dein_makro1
    Exit Sub
End If
Set bereich = Range("a11:a20")
For Each zelle In bereich
    test19 = test19 And (Left(zelle, 2) = 19)
Next
If test19 Then
    dein_makro2
End If
End Sub


Gruß
Volker


Bild


Betrifft: AW: Makro ausführen, wenn.... von: Josef
Geschrieben am: 18.03.2005 08:19:53

Hallo Volker!

Danke für Deine Antwort.

Die Markierung müßte ich immer händisch durchführen.

Etwa so:

Ich markiere den entsprechenden Bereich und das Makro wird durchgeführt.


Josef


Bild


Betrifft: AW: Makro ausführen, wenn.... von: Volker
Geschrieben am: 18.03.2005 08:26:34

Hallo Josef,

Du mußt Dich schon etwas klarer ausdrücken

Ist der Bereich nun variabel, oder fix?
Was tust Du und was soll passieren?

Gruß
Volker


Bild


Betrifft: AW: Makro ausführen, wenn.... von: Josef
Geschrieben am: 18.03.2005 08:48:45

Hallo Volker!
Ich habe es befürchtet, dass ich mich nicht klar ausgedrückt habe.

Ich habe bei mir folgendes Makro gefunden:

Sub Markier_E()
Dim C As Range, ErgBereich As Range
Dim laR As Long
    laR = Cells(Rows.Count, 1).End(xlUp).Row
    For Each C In Range("E1:E" & laR)
      If C.Offset(0, -1).Value <> "" Then
        Set ErgBereich = C
        Exit For
      End If
    Next C
    If ErgBereich Is Nothing Then
      Exit Sub
    Else
      For Each C In Range("E1:E" & laR)
        If C.Offset(0, -1).Value <> "" Then
          Set ErgBereich = Application.Union(ErgBereich, C)
        End If
      Next C
      ErgBereich.Select
      Set ErgBereich = Nothing
    End If
End Sub



Mit diesem Makro erfolgt in Spalte E eine Markierung an jenen Stellen wie auch Werte in spalte A vorhanden sind. Danach möchte ich z.B. folgendes Makro durchführen lassen:

Sub past()
Dim rngCell As Range
For Each rngCell In Selection
    rngCell.FormulaR1C1 = _
        "=IF(ISNA(VLOOKUP(R[-22]C[5],'H:\SVA_Import\[SUBKAPITEL.xls]SUBKAPITEL'!R3C1:R2501C9,9,)),"""",VLOOKUP(R[-22]C[5],'H:\SVA_Import\[SUBKAPITEL.xls]SUBKAPITEL'!R3C8:R2501C9,2,))"Next
End Sub


Man müßte, glaube ich, das Makro Markier_E insoweit ändern, dass eine Markierung in Spalte e an jenen Stellen erfolgt, wo z.B. in Spalte A die ersten 2 Zeichen einer 7 stelligen Zahl eine 19 ergeben. Oder 18.

Josef


Bild


Betrifft: AW: Makro ausführen, wenn.... von: Volker
Geschrieben am: 18.03.2005 08:54:24

Hallo Josef,

wie soll ich einen Code, den Du irgendwo ausgegraben hast, auf Deine Bedürfnisse anpassen, wenn Du mir nicht sagst, was Du machen willst.
Also jetzt mal ohne Code in dem Sinne:
Ich markiere diesen oder jenen Bereich
Dann soll Bedingung xyz auf Knopfdruck/automatisch geprüft werden und
dann dieses und jenes gemacht werden.

Gruß
Volker


Bild


Betrifft: AW: Makro ausführen, wenn.... von: Josef
Geschrieben am: 18.03.2005 11:17:26

Hallo Volker!

Wieder alles falsch gemacht. Tut mir leid.

In Spalte A gibt es z.B. folgende Werte:

1819411
1819422
1819433
1819444
1819455
1819466
1919411
1919422
1919433
1919444
1919455
1919466
Wenn jetzt z.B. in der Spalte A die ersten zwei Stellen eine 18 sind dann soll z. B. die Spalte AE (in diesem Beispiel A1-A6 wäre AE1-AE6) markiert werden und folgendes Makro ausgeführt werden:
Sub past()
Dim rngCell As Range
For Each rngCell In Selection
    rngCell.FormulaR1C1 = _
        "=IF(ISNA(VLOOKUP(R[-22]C[5],'H:\SVA_Import\[SUBKAPITEL.xls]SUBKAPITEL'!R3C1:R2501C9,9,)),"""",VLOOKUP(R[-22]C[5],'H:\SVA_Import\[SUBKAPITEL.xls]SUBKAPITEL'!R3C8:R2501C9,2,))"Next
End Sub


Es könne jedoch auch mehr 18er Nr. oder weniger 18er Nr. vorkommen.


Bild


Betrifft: AW: Makro ausführen, wenn.... von: Volker
Geschrieben am: 21.03.2005 12:23:11

Hallo Josef,

sorry, war am Wochenende nicht online. Und keine Sorge, wir kommen uns schon näher;-) Wenn's nochnicht zu spät ist versuch mal folgendes:
Ich fange ab A1 abwärts nach der "18" zu suchen.

sub such_die_zahl()
dim i as integer
i=1
while left(cells(i,1),2)="18"
i=i+1
wend
Range("AE1:AE" & i).select
past 'Aufruf Deiner Sub
endsub

Oder, wenn in A1 ev. noch keine 18 steht:

sub such_die_zahl()
dim i,j as integer
i=1
while left(cells(i,1),2)<>"18"
i=i+1
wend
j=i+1
while left(cells(j,1),2)="18"
j=j+1
wend
Range("AE" & i & ":AE" & j).select
past 'Aufruf Deiner Sub
endsub

Aber wenn Du nur in Abhängigkeit von den Werten in Spalte A in Spalte AE eine Formel stehen haben willst, kannst Du das auch mit einer TabellenFunktion machen
In der Art:
=WENN(links("A1";2)=18;;"")

Gruß
Volker


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Ergebnis Aufrunden"