Alarm im Excel 97

  • #1
L

le duc

Guest
hallo zusammen

ich habe ein excel arbeitsmappe, in welcher verknüpfungen zu einem anderen programm eingebaut sind. soviel ich weiss, wurden diese über ein plug-in und nicht über ein makro erstellt.

ist es möglich im excel ne art alarm einzubauen, wenn der wert eines dieser felder ein limit überschreitet?
z.b. alert wenn feld a1 wert grösser als 1.40 oder so?

besten dank für allfällige beiträge.

mfg
 
  • #2
Ola,

kommt drauf an, ob ich es richtig verstanden habe:

1. kannst Du in der Spalte daneben eine Wennformel einbauen: Die reagiert dann auf die Zelle daneben.
2. Du kannst auf Veränderungen in einer Tablle reagieren: (Code ist nur ne Idee, nicht vollständig)

Private Sub Worksheet_Change(ByVal Target As Range)
Hier kommen dann die gewünschten Teile rein:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then 'Wenn eine Zelle in Spalte 1
If Target.Row = 7 ' Also A7 Then
If HIer käme jetzt Deine Prüfung Then
MsgBox
End If
End If
End If
End Sub
 
  • #3
uffa!

guter hinweis! thx. also wenn
If HIer käme jetzt Deine Prüfung Then was müsste bei hier käme jetzt.... stehen wenn das feld zahlen enthält? z.b. zahl jetzt bei 1.40 bei 1.50 muss der alarm los. würde es heissen

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then 'Wenn eine Zelle in Spalte 1
If Target.Row = 7 ' Also A7 Then
If 1.50 Then
MsgBox
End If
End If
End If
End Sub


so plump?¿ ;D
der code müsste einfach z.b bei feld a5 eingegeben werden?? also auf das feld klicken und den code eingeben? hmm..... ratter ratter.

thx auf jeden fall für den heissen tipp!!

machs gut und bis dann.
 
  • #4
Ola,

ich hatt einfach nur ne Idee ...
der Code muss natürlich nicht in die Zelle, sondern ins Blatt ... Blattregister mit Rechts anklicken Code anzeigen wählen ... dort kommt der Code hin.

Wenn nur die Veränderung in A7 getestet werden soll, dann heißt der Code korrekt:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then 'Wenn eine Zelle in Spalte 1
  If Target.Row = 7 Then ' Also A7
    If Range(A7).Value >= 1.5 Then
    a = MsgBox(A7 ist zu groß, vbOKOnly, Meine Meldung)
    End If
  End If
End If
End Sub

Mit einer Konstuktion wie
If Target.Row > 1 And Target.Row <= 65536  anstelle der oberen Zeile kannst Du bsp. die Veränderung auf Spalte 1, Zeile 2 bis ende der Spalte abfangen.

Probiers aus: Der Quelltext oben liefert einen Meldung, sobald A7 größer oder gleich 1.5 ist.
 
  • #5
vielen dank! ich geh gleich mal testen!

bis nachher
 
  • #6
pft. liegt ev. daran dass ich keine ahnung von vb habe. ;D

der code scheint mir korrekt, ich öffne also das blatt, das form erscheint, ich lösche alle vorgegebenen codes, füge den code ein. wenn ich das makro abspielen will, kommt die maske makro, wo ich nen namen eingeben muss, wenn ich das mache und erstellen klicke, kommt ein neues, leeres sheet. wenn ich das sheet speichere und wieder ins excel gehe passiert nix, obwohl der wert höher als z.b. 1.50 ist.

sorry, langsam wirds peinlich, aber ich schnalls wirklich nich =(

mfg
 
  • #7
Ola,

macht ja nix ... also: Fang erst mal mit einer leeren Mappe an, damit Du den Zusammenhang hinkriegst. Mit der rechten Maustaste auf das Blattregister der Tabelle1, Code anzeigen. Dann hast Du recht, die Vorgabezeilen in Excel 97 müssen raus und der Code dafür rein.

Nun kommt dein Irrtum: Das ist kein Makro, sondern sofort aktiver Code. Wenn Du einen Wert in A7 der Tabelle einträgts und bestätigst, dann erscheint bei Werten größer als 1,5 die Meldung. Worksheet_Change ist eine Ereignis, auf das Excel automatiscvh reagiert.

Bis hier her ...
 
  • #8
ah ;)

also aktiver code, kein makro. alles klar. ich guck mal ob ich es noch hinkriege. trotzdem vielen dank für die hilfe.


mfg
 
  • #9
Ola,

ich hoffe, Du gibst nicht auf ... wir kriegen das zusammen schon hin ...
 
  • #10
Ola,

ich denke , wir sind nach auf dem falschen Weg. Das, was wir bisher unternommen haben setzt voraus, dass die Zelle bei geöffneter Tabelle verändert wird. Mir scheint aber, dass Du die Überschreitung gleich beim Öffnen der Tabelle signalisiert haben möchtest...

lass mal von Dir hören

@all: ich könnte ein wenig Unterstüzung brauchen, ich bin kein VBA-Profi.
 
  • #11
ok. ich definiere das problem mal ganz genau.

das ist ein fremdsystem, welches laufend zahlen ins feld
b2 und b3 importiert. dies geschieht über ein add-in.

zeile b2 geteilt in b3 ergibt ein resultat. gegewärtig 3.52

ich brauche einen code, der mich benachrichtigt, wenn der wert des feldes b11 (dort ist das ergebnis) 3.60 überschreitet und 3.43 unterschreitet.
die zahl aktualisiert sich laufend selber, so ca. alle 2 sekunden. jedoch kommt das ergebnis selten an diese grenzen. wenn dies jedoch der fall ist, muss ich was unternehmen. da ich leider weder zeit noch lust habe, alle 2 minuten auf die zahl zu achten, brauche ich eine hilfe.

thx, falls ihr euch die mühe macht mir zu helfen ;D

mfg
 
  • #12
Ola,

das sieht doch gut aus:

Wenn nur die Veränderung in B11 getestet werden soll, dann heißt der Code korrekt:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then 'Wenn eine Zelle in Spalte 2
If Target.Row = 11 Then ' in Zeile 11, also b11, ändert sich ja ...
If Range(B11).Value > 3.60 Then
a = MsgBox(3.60 überschritten, vbOKOnly, Duke spricht: )
End If
If Range(B11).Value < 3.43 Then
a = MsgBox(3.43 unterschritten, vbOKOnly, Duke spricht: )
End If
End If
End If
End Sub

das sollte eigentlich klappen, falls die Aktualisierung den Code nicht unterdrückt ...
 
  • #13
z.B.:

Private Sub Worksheet_Change()
 od.
Private Sub Worksheet_Calculate()

Select Case Worksheets(Tabelle1).Range(B11).Value
Case Is < 3.43, Is > 3.6
   MsgBox HOPPLA!
End Select

End Sub
 
  • #14
ola ... jetzt bin ich aber deprimiert  ;)

Aber vorausgesetzt, es kommt in diese Arbeitsmappe ... bei mir tut sich nix.

Nach meinem geringen Verständnis sollte doch nun die db erscheinen wenn überhaupt etwas in der Mappe verändert wird ???
 
  • #15
8) hehe, aber warum denn ???  ::)  ;D

Hab noch vergessen zu erwähnen, dass bei obigem Beispiel Tabelle1 natürlich mit dem entsprechenden Namen des Excel-Sheets zu ersetzen ist...  :p


EDIT: Hmmm, ja, sollte es eigentlich...

Vielleicht hast Du die deutsche VBA-Version, dann musst Du glaub ich Worksheet mit dem deutschen Äquivalent (wow, geiles Wort ;D ) ersetzen...
 
  • #16
Ola, nein, das war es nicht  ;D

Private Sub Objekt_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Tritt ein, wenn ein beliebiges Arbeitsblatt durch den Benutzer oder durch eine externe Verknüpfung geändert wird.

Korrekt ist also

Private Sub Workbook_SheetChange(ByVal Sh As Object, _
       ByVal Source As Range)

Select Case Worksheets(Tabelle1).Range(B11).Value
Case Is < 3.43, Is > 3.6
   MsgBox HOPPLA!
End Select

End Sub
 
  • #17
hoppla, jetzt gehn die cracks ran. ;)
also wenn ich den code mit

Private Sub Worksheet_Calculate()
verwende kommt immer laufzeitfehler 9 index nicht gefunden. k.a. was das heisst.

gucke gerade, ob es mit dem anderen code klappt.....
 
  • #18
Hehe, ich sollte öfter mal Pause machen... :D

Haddu gut gemacht PCDjoe */hug*

8)
 
  • #19
Hallo Ihr lieben hier habe ich ein Problem das ich irgendwie nicht gelöst bekomme.
Ich habe mir vor 4 Wochen einen neuen PC gegönnt (AMD-FX(tm)-4100 Quadcore Prozessor
Habe einen älteren Drucker Deskjet 815C.Win7 nutze ich schon gute 3 Jahre ??
Der hat aber zusätzlich einen USB anschluss.
Nun mein Problem.
Nachdem ich endlich den passenden Treiber gefunden habe , wird bei jedem Neustart des Pc`s der Drucker nicht erkannt.
muss den Drucker dann erst ein paar mal ausschalten dann USB kabel ziehen und dann erst wird er wohl erkannt und ich kann Drucken.:confused:
Sorry für meine vieleicht teilweise unverständliche erklärung,aber bis jetzt habe ich meine Probleme immer allein gelöst bekommen.
Viele Grüsse Jürgen
 
  • #20
Hallo,

kann an dem Kabel liegen. Ist es anders verlegt oder ausgetauscht oder länger als 5m?

Gruß
 
Thema:

Alarm im Excel 97

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben