If Bedingung

Bild

Betrifft: If Bedingung
von: Lexenlewax
Geschrieben am: 09.06.2015 12:57:13

Hallo,
ich habe folgendes Problem:
In Spalte N in Tabelle Process soll nach dem Wert der Zelle B6 aus Tabelle Druck gesucht werden.
Wird der Wert aus B6 gefunden, soll die Zahl links von dem Wert in das Feld B20 in Tabelle Druck geschrieben werden. Wird der Wert nicht gefunden, dann soll stattdessen der Wert aus einer fixen Zelle (A1 in Tabelle Process) in B20 eingetragen und der Wert der Zelle A1 um eins erhöht werden.
Mit Hilfe des Recorders habe ich schon den ersten Teil aufgenommen:

Option Explicit
Private mastrVariable(1 To 4) As String
Private Sub Worksheet_Calculate()
  
  Dim Charge As Integer
  Dim Partie As Integer
  
  
  If mastrVariable(3) <> Cells(2, 2).Text Then
    Union(Cells(20, 6), Cells(22, 2)).ClearContents
    mastrVariable(3) = Cells(2, 2).Text
  End If
  
  If mastrVariable(4) <> Cells(6, 2).Text Then
    Union(Cells(20, 6), Cells(22, 2)).ClearContents
    ActiveSheet.Unprotect
    Charge = Worksheets("Druck").Range("B6").Value
    Sheets("Process").Select
    Columns("N:N").Select
    Selection.Find(What:=Charge, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Offset(0, -1).Select
    Selection.Copy
    Sheets("Druck").Select
    Range("B20").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B22").Select
    mastrVariable(4) = Cells(6, 2).Text
  End If
End Sub

Was mir fehlt, ist der zweite Teil:

Wird der Wert nicht gefunden, dann soll stattdessen der Wert aus einer fixen Zelle (A1 in Tabelle Process) in B20 eingetragen und der Wert der Zelle A1 um eins erhöht werden.
Wer kann mir hier weiterhelfen?
Danke und Gruß,
Lexenlewax
PS: Schade, dass ich in meinem Informatikkurs vor 10 Jahren statt VBA Hyperturtle lernen musste....

Bild

Betrifft: AW: If Bedingung
von: Lexenlewax
Geschrieben am: 09.06.2015 13:03:40
Nachtrag,
wenn ich den Code ausführe, dann kommt folgende Fehlermeldung:

Laufzeitfehler '-2147417848 (80010108)'
Die Methode 'Range' für das Objekt' _Worksheet' ist fehlgeschlagen
Bei Debuggen wird folgende Zeile markiert:
Charge = Worksheets("Druck").Range("B6").Value


Bild

Betrifft: AW: If Bedingung
von: Rudi Maintaire
Geschrieben am: 09.06.2015 13:10:57
dann gibt es kein Blatt "Druck" in der aktiven Mappe.

Bild

Betrifft: AW: If Bedingung
von: Lexenlewax
Geschrieben am: 09.06.2015 13:49:14
Hallo Rudi,
die Tabelle Druck gibt es definitiv. In BA sehe ich sie auch: Tabelle5 (Druck)
Gruß Lexenlewax

Bild

Betrifft: AW: If Bedingung
von: Rudi Maintaire
Geschrieben am: 09.06.2015 13:08:24
Hallo,
teste mal:

Private Sub Worksheet_Calculate()
  
  Dim Charge As Integer
  Dim Partie As Integer
  Dim rngF As Range
  
  If mastrVariable(3) <> Cells(2, 2).Text Then
    Union(Cells(20, 6), Cells(22, 2)).ClearContents
    mastrVariable(3) = Cells(2, 2).Text
  End If
  
  If mastrVariable(4) <> Cells(6, 2).Text Then
    Union(Cells(20, 6), Cells(22, 2)).ClearContents
    ActiveSheet.Unprotect
    Charge = Worksheets("Druck").Range("B6").Value
    With Sheets("Process")
    Set rngF = Columns("N:N").Find(What:=Charge, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
      If rngF Is Nothing Then
        .Range("A1").Copy
      Else
        rngF.Offset(, -1).Copy
      End If
      End With
    Sheets("Druck").Activate
    Range("B20").PasteSpecial _
      Paste:=xlPasteValues, Operation:=xlNone, _
      SkipBlanks:=False, Transpose:=False
    mastrVariable(4) = Cells(6, 2).Text
  End If
End Sub

Gruß
Rudi

Bild

Betrifft: AW: If Bedingung
von: Lexenlewax
Geschrieben am: 09.06.2015 14:04:38
Hallo Rudi,
danke für deine schnelle Hilfe.
Abgesehen davon, dass er immer bei


Charge = Worksheets("Druck").Range("B6").Value
hängenbleibt, ist mir noch etwas aufgefallen:
Anstatt von

.Range("A1").Copy
soll folgendes geschehen: Die größte Zahl aus Spalte M (Tabelle Process) soll ermittelt und um 1 erhöht werden. Diese Zahl soll dann in B20 eingefügt werden.
Danke sehr

Bild

Betrifft: AW: If Bedingung
von: Lexenlewax
Geschrieben am: 10.06.2015 15:51:10
Hallo,
kann hier keiner weiterhelfen?
Ich trau mich auch nicht, in einem anderen Forum nachzufragen, weil ich letztens dann überhaupt keine Hilfe wegen Doppelpost bekommen habe.
Gruß Lexenlewax

Bild

Betrifft: AW: If Bedingung
von: Rudi Maintaire
Geschrieben am: 10.06.2015 16:32:40
Hallo,
den Fehler kann ich ohne die Mappe nicht nachvollziehen.
Range("B20")=worksheetfunction.max(Sheets("Process").columns(13))+1
Gruß
Rudi

Bild

Betrifft: AW: If Bedingung
von: Lexenlewax
Geschrieben am: 11.06.2015 08:34:08
Hallo,
anbei die Mappe:
https://www.herber.de/bbs/user/98136.xlsm
Danke sehr.

Bild

Betrifft: ich mach nicht mehr mit
von: Rudi Maintaire
Geschrieben am: 11.06.2015 20:04:59
Hallo,
jetzt ist mir Excel 3x weggeflogen.
Gruß
Rudi

Bild

Betrifft: AW: ich mach nicht mehr mit
von: Lexenlewax
Geschrieben am: 12.06.2015 11:59:20
Was bedeutet das? Abgestürzt? Man kann es ja ohne Makros starten und dann Teile auskommentieren. Aber das weißt du bestimmt.
Gruß Lexenlewax

 Bild

Beiträge aus den Excel-Beispielen zum Thema "If Bedingung"