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

Wo ist der Fehler?

Wo ist der Fehler?
21.05.2009 14:51:53
Jay
Hallo,
ich bin noch nicht so bewandert mit Schleifen, habe vesucht ein Textfeld einzublenden, falls folgende Zellenwerte Null sind, das klappt aber leider nicht, ist da vielleicht ein Fehler drin?
If Worksheets("Tabelle1").Cells(10, 11) = "0" Then
If Worksheets("Tabelle1").Cells(11, 11) = "0" Then
If Worksheets("Tabelle1").Cells(10, 12) = "0" Then
If Worksheets("Tabelle1").Cells(11, 12) = "0" Then
If Worksheets("Tabelle1").Cells(10, 13) = "0" Then
If Worksheets("Tabelle1").Cells(11, 13) = "0" Then
If Worksheets("Tabelle1").Cells(10, 16) = "0" Then
If Worksheets("Tabelle1").Cells(11, 16) = "0" Then
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = True
Else
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = False
End If
End If
End If
End If
End If
End If
End If
End If

Grüße, Jay

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wo ist der Fehler?
21.05.2009 14:59:30
Hajo_Zi
Hallo Jay,
vielleicht solltest Du nich "0" schreiben sondern 0

If Then Or ....
21.05.2009 15:04:36
{Boris}
Hi Jay,
dafür gibt´s auch ODER (Or) (bzw. UND = And, wenn alle erfüllt sein müssen):

Option Explicit
Sub til()
With Worksheets("Tabelle1")
If .Cells(10, 11) = 0 Or _
.Cells(11, 11) = 0 Or _
.Cells(10, 12) = 0 Or _
.Cells(11, 12) = 0 Or _
.Cells(10, 13) = 0 Or _
.Cells(11, 13) = 0 Or _
.Cells(10, 16) = 0 Or _
.Cells(11, 16) = 0 Then
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = True
Else
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = False
End If
End With
End Sub


Hab den Code jetzt bewusst nicht noch weiter eingedampft, um Dich nicht mehr als nötig zu verwirren. ;-)
Grüße Boris

Anzeige
AW: If Then Or ....
21.05.2009 16:30:37
Gerd
Hallo Jay,
wenn 0 oder leere Zellen zum selben Ergebnis führen sollen:

Sub t()
With Worksheets("Tabelle1")
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = _
Application.WorksheetFunction.Product _
(Union(.Range(.Cells(10, 11), .Cells(11, 13)), _
.Range(.Cells(10, 16), .Cells(11, 16)))) = 0
End With
End Sub


Gruß Gerd

AW: Verwechlung Zahl-Zeichen oder Logik-Fehler
21.05.2009 15:32:20
Daniel
Hi
Ich würde auch mal sagen, es liegt daran, daß 0 (Zahl) nicht das gleich ist wie "0" (Zeichen)
allerdings ist mir die Logik noch nicht ganz klar, kannst du nochmal beschreiben, wann aus- und wann eingeblendet wird?
In deiner Logik wird der Hinweis eingeblendet, wenn alle Zellwerte = 0 sind.
Ausgeblendet wird, wenn die Zelle P11 0 UND alle anderen Zellen = 0 sind.
sollte eine der anderen Zellen einen Wert 0 haben passiert NICHTS, dh. die Textbox bleibt in dem Zustand, den sie momentan hat.
Ist das richtig so? Wenn nein solltest du deine Logik nochmal überdenken.
Gruß, Daniel
Anzeige
AW: Wo ist der Fehler?
21.05.2009 20:50:15
dan
Hallo,
das Problem liegt nicht im Zahl oder String, weil hier wird eigentlich ein Variant type vergleicht, weil was wir hier genau machen ist dies:
Cells(row, col).Value = 0 ... und Value ist eine Property, die gibt den Variant zurueck. Also ob Zahl oder string, in dem Vergleich wird eine implicit-conversion gemacht.
Laut Help: Value property as it applies to the Range object...Returns or sets the value of the specified range. Read/write Variant
Dein Code funzt nicht, weil es nicht komplett ist. Es fehlen die Else Teile. Aber besser waere es die einzelnen Bedingugen mit And zu verbinden. Siehe die Code-Samples unten ... nur als Beispiel gedacht. Gruss dan, cz.
Option Explicit

Public Sub SetTextboxVisibility()
If Worksheets("Tabelle1").Cells(10, 11) = "0" Then
If Worksheets("Tabelle1").Cells(11, 11) = "0" Then
If Worksheets("Tabelle1").Cells(10, 12) = "0" Then
If Worksheets("Tabelle1").Cells(11, 12) = "0" Then
If Worksheets("Tabelle1").Cells(10, 13) = "0" Then
If Worksheets("Tabelle1").Cells(11, 13) = "0" Then
If Worksheets("Tabelle1").Cells(10, 16) = "0" Then
If Worksheets("Tabelle1").Cells(11, 16) = "0" Then
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = True
Else
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = False
End If
Else
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = False
End If
Else
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = False
End If
' usw...
End If
End If
End If
End If
End If
End Sub



Public Sub SetTextboxVisibility2()
If (Worksheets("Tabelle1").Cells(10, 11) = "0" And _
Worksheets("Tabelle1").Cells(11, 11) = "0" And _
Worksheets("Tabelle1").Cells(10, 12) = "0" And _
Worksheets("Tabelle1").Cells(11, 12) = "0" And _
Worksheets("Tabelle1").Cells(10, 13) = "0" And _
Worksheets("Tabelle1").Cells(11, 13) = "0" And _
Worksheets("Tabelle1").Cells(10, 16) = "0" And _
Worksheets("Tabelle1").Cells(11, 16) = "0") Then
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = True
Else
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = False
End If
End Sub


Anzeige
AW: Andere Alternative
21.05.2009 21:55:15
Daniel
Hi
da es ja um den Wert 0 geht, könnte man auch einfacher die Summe der betroffenen Zellen prüfen:

if Worksheetfunction.Sum(Worksheets("Tabelle1").Range("K10:M11,P10:P11")) = 0 then
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = True
else
Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = True
end if 


oder kürzer:


Worksheets("Tabelle2").Shapes("Textfeld 1").Visible = (Worksheetfunction.Sum(Worksheets(" _
Tabelle1").Range("K10:M11,P10:P11")) = 0)


Gruß, Daniel

Anzeige
AW: -... .Sum(3 - 5 + 2) = Visible ? o.T.
21.05.2009 22:40:53
Gerd
Gruß Gerd
nixverstehn in Athen oT
21.05.2009 22:49:19
Daniel
Gruß, Daniel
AW: Bei positiven Zahlen, alles o.K. ,
21.05.2009 23:32:25
Gerd
bei negativen in den Bezugszellen, meistens auch, aber nicht immer.
Gruß Gerd
AW: ok, wenn die Summe zufällig 0
21.05.2009 23:50:47
Daniel
ergibt, wird der Hinweis falsch angezeigt.
dazu müssen allerdings positve und negative Werte eingegeben werden.
alternativ könnte man ja auch sowas abfragen:

If Worksheetfunction.CountIf(Range(...), 0) = Range().Cells.Count then
....Visible = true
else
....Visible = false
End if 


oder


If Worksheetfunction.Min(range()) = 0 and Worksheetfunction.Max(Range()) = 0 then


nur für jede einzelne Zelle ne Bedingungsprüfung würde ich bei dieser Anzahl von Zellen vermeiden, da verliert man ja total die Übersicht.
Gruß, Daniel

Anzeige
AW: ok, wenn die Summe zufällig 0
22.05.2009 21:35:23
Jay
Vielen lieben Dank an alle!
Grüße, Jay

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige