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

Bereich prüfen

Bereich prüfen
07.01.2021 21:33:33
Eberhard
Guten Abend
Ich habe im Tabellenblatt unterstehender Code eingetragen.
Dieser sollte den Bereich "A8:A38" überprüfen, ist dieser voll, soll der Bereich "H9:H38" überprüft werden.
Doch funktioniert dies nicht ganz richtig! Kann mir jemand behilflich sein?
Besten Dank.
Gruss Daniel
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A8:A38"), Target) Is Nothing Then
If WorksheetFunction.CountIf(Range("A8:A38"), "") > 0 Then
MsgBox "Seite 1 noch frei!"
Application.EnableEvents = False
ElseIf Not Intersect(Range("H9:H38"), Target) Is Nothing Then
Application.EnableEvents = True
If WorksheetFunction.CountIf(Range("H9:H38"), "") > 0 Then
MsgBox "Seite 2 voll!"
Else
MsgBox "Seite 2 noch frei!"
End If
End If
End If
End Sub

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich prüfen
07.01.2021 21:42:33
onur
und warum steht der Code in Sub Worksheet_Change ? Was hat der Code mit der geänderten Zelle zu tun?
AW: Bereich prüfen
07.01.2021 21:47:32
Eberhard
Hallo onur
Da ich nicht grosse Kenntnisse habe, habe ich einfach mal was versucht! Es soll einfach überprüfen, wenn Bereich "A8:A38" voll ist, so soll der Bereich "H9:H38" überprüft werden!
AW: Bereich prüfen
07.01.2021 21:48:58
onur
Wann soll denn das ganze überprüft werden und wozu gernau?
AW: Bereich prüfen
07.01.2021 22:15:01
onur
Das beantwortet NICHT meine Fragen.
Was soll ich mit einer leeren Datei?
Anzeige
AW: Bereich prüfen
07.01.2021 22:18:10
Eberhard
Die sollte nicht leer sein! Entwicklertools, Visual Basic, dann sollte dort eine UserForm sein! Dort habe ich beschrieben, wie ich das gerne möchte!
AW: Bereich prüfen
07.01.2021 22:43:49
ralf_b
so bitteschön
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Hier soll im Bereich "A8:A38" ....
Dim x As Range
If Range("H38")  "" Then
MsgBox "kein Platz mehr"
Unload Me
End If
For Each x In Range("A8:A38, H9:H38")
If x = "" Then
'alle werte in die eine Zelle!
x = TextBox1 & TextBox2 & TextBox3 & TextBox4
Exit For
End If
Next
Cancel = False
UFBGOQ.TextBox1.SetFocus
End Sub
gruß
rb
Anzeige
AW: Bereich prüfen
07.01.2021 23:01:46
Eberhard
Hallo rb
Danke für Deinen Vorschlag. Ist aber nicht ganz was ich wollte! Es sollte nur eine freie Zelle befüllen. Also wenn im ersten Bereich noch eine Zelle frei ist, so soll der Wert dort eingetragen werden. Ansonsten im zweiten Bereich in eine frei Zelle.
Gruss und eine gute Nacht! Daniel
und tut es das etwa nicht? owt
07.01.2021 23:03:18
ralf_b
AW: und tut es das etwa nicht? owt
07.01.2021 23:31:40
Eberhard
Leider nein! Wir haben uns falsch verstanden. Es soll die Werte nicht alle in eine Zelle schreiben.
Sondern jeder Wert der TextBoxen in eine Zelle aber hintereinander und nicht untereinander!
Also zum Beispiel so: Textbox1 = A1, Textbox2 = B1 usw....
Dazu kommt, dass sich die Werte gleich zwei mal untereinander einfügen!
Hoffe Du verstehst in etwa was ich meine?
Gruss Daniel
Anzeige
AW: und tut es das etwa nicht? owt
08.01.2021 01:41:08
ralf_b
ja ich verstehe, habe mich schon gewundert.
das eine ist leicht zu korrigieren,das Andere, die doppelte Einfügung kommt daher das exit zweimal durchlaufen wird.
Ich habe versucht mittels einer Prüfung dies zu unterbinden. Ich gehe davon aus das es keine identischen Wertekombinationen geben kann.
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim x As Range, cnt As Long
Dim loletzte As Double
Static mblnQueryClose As Boolean
Dim sBereich As String
sBereich = "A8:A38, H9:H38"
If Not mblnQueryClose Then
mblnQueryClose = True
loletzte = WorksheetFunction.CountA(Range(sBereich))
If loletzte 

Anzeige
AW: und tut es das etwa nicht? owt
08.01.2021 07:01:08
Eberhard
Guten Morgen RB
Fast geschafft. Doch lösche ich im Bereich 1 eine oder mehrere Zellen, so funktioniert das ganze wieder nicht! :-(
Gruss und einen schönen Freitag!
AW: und tut es das etwa nicht? owt
08.01.2021 09:08:44
Eberhard
Hallo zusammen
Ich habe mal einen Code zusammengestellt, wie ich mir das in etwa vorstelle. Doch beim zweiten Bereich fügt er mir die Werte immer in die gleichen Zellen. Was ist an diesem Code falsch?
Hoffe anhand diesen Zeilen kann mir jemand behilflich sein?
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim ErsterBereich As Range
Dim ZweiterBereich As Range
If NoEX Then Exit Sub 'Für das vorzeitige Abbrechen
With Worksheets("Tabelle1").Range("A8:A38")
Set ErsterBereich = .Find(What:="", After:=.Cells(.Cells.Count), LookIn:=xlFormulas, LookAt:=xlWhole)
End With
If Not ErsterBereich Is Nothing Then
Worksheets("Tabelle1").Cells(ErsterBereich.Row, 1) = TextBox1.Value
Worksheets("Tabelle1").Cells(ErsterBereich.Row, 2) = TextBox4.Value
Cancel = False
Set TextBox = TextBox1
Call Application.OnTime(EarliestTime:=Now, Procedure:="SetFocus_TextBox")
Else
With Worksheets("Tabelle1").Range("H9:H38")
Set ZweiterBereich = .Find(What:="", After:=.Cells(.Cells.Count), LookIn:=xlFormulas, LookAt:=xlWhole)
End With
If Not ZweiterBereich Is Nothing Then
Worksheets("Tabelle1").Cells(ZweiterBereich.Row, 10) = TextBox1.Value
Worksheets("Tabelle1").Cells(ZweiterBereich.Row, 11) = TextBox4.Value
Else
MsgBox "Keine freie Zelle im Bereich gefunden!"
NoEX = True 'Für das vorzeitige Abbrechen
Unload Me
End If
End If
Gruss Daniel
Anzeige
ich bin dann raus . ...
08.01.2021 10:01:54
ralf_b
Moin,
diese Information(zwischendurch löschen) fehlte in deiner Fragestellung.
Aber wie ich sehe hast du dir schon alternativ geholfen.
gruß
rb
AW: ich bin dann raus . ...
08.01.2021 10:27:59
Eberhard
Hallo rb
Mit diesen Zeilen bin ich schon lange am Testen. Dieser Code verstehe ich auch einigermassen als Anfänger.
Stimmt! Dies wegen dem (zwischen durch) löschen habe ich nicht erwähnt. Sollte eigentlich auch in der Praxis nicht vorkommen. Aber man weis ja nie!
Also nichts gegen Deine Hilfe! Hoffe Du verstehst mich?
Gruss Daniel
AW: ich bin dann raus . ...
08.01.2021 12:49:42
ralf_b
eigentlich bin ich ja noch ein bissel sauer, aber ich denke nun auch deine neuen Anforderungen untergebracht zu haben. Sogar mit Kommentaren. Vielleicht nimmste ja das.
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim x As Range, i As Long, aArea As Range
Dim sBereich As String
Static mblnQueryClose As Boolean
Dim arrTmp
Dim sGibtsschon As String
sBereich = "A8:A38, H9:H38"
If Not mblnQueryClose Then
mblnQueryClose = True
'forschleife zur Prüfung ob schon vorhanden
'Aufteilung in die beiden Areas wegen dem Array
For Each aArea In Range(sBereich).Areas
' bereich vergrößern damit alle Spaltenwerte des einen Bereiches verglichen werden
arrTmp = aArea.Resize(, 4)
'untere Schleifengrenze festlegen
i = LBound(arrTmp, 1)
Do While i 
gruß
rb
Anzeige
AW: ich bin dann raus . ...
09.01.2021 10:17:26
Eberhard
Guten Tag rb
Hatte gestern keine Zeit mehr. Vielen Dank für Deine Bemühungen. Dieser Code passt und funktioniert so wie ich mir das vorgestellt habe.
Da muss doch auch niemand Sauer sein, wenn ich da herumlese & sehe was es da alles gibt, dann führen viele Wege zu einer Lösung!
Gruss Daniel
danke für die rückmeldung owt
09.01.2021 10:32:10
ralf_b
AW: Bereich prüfen
08.01.2021 18:59:09
GerdL
Moin Daniel,
bei deinem Code solltest du die Spalten H = 8 und I= 9 nehmen.
Gruß Gerd

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige