berndvorwerk
Goto Top

Excel: freie Zelle suchen und Wert einfügen

Noch einmal Hallo an alle,
dieses Script:

Private Sub Worksheet_Activate()
If Sheets("Versuchsauftrag").Range("A40").Value = 0 Then
Dim c As Range
If Sheets("Bewertungsübersicht").Range("B22") = "X" Then
With Sheets("Versuchsauftrag").Range("A40:Y41")
Set c = .Find("", LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByColumns)
If Not c Is Nothing Then
c.Value = Sheets("Bewertungsübersicht").Range("A23").Value
End If
End With
End If
End If
End Sub

...soll folgendes tun: Wenn Zelle A40 vom Blatt Versuchsauftrag leer ist, soll wenn B22 aus Bewertungsübersicht X ist, der entsprechende Wert aus A22 im ersten freien Feld des Bereiches A40-Y41 eingefügt werden.
(Bitte nicht wundern: natürlich ist A40 dann immer frei und es macht eigentlich keinen Sinn, aber es sollen noch weitere Abfragen hinterher folgen. A40=0 soll nur dazu dienen, dass das Skript nur beim ersten mal auswählen des Arbeitsblattes ausgeführt wird)
Das ganze funktioniert eigentlich auch, nur wird der erste Wert (hier A22) nicht in die freie Zelle A40 eingetragen sondern in A41.... wieso?
Danke und Gruß,
Bernd

Content-ID: 245330

Url: https://administrator.de/contentid/245330

Ausgedruckt am: 17.11.2024 um 03:11 Uhr

Pjordorf
Pjordorf 01.08.2014 um 14:21:33 Uhr
Goto Top
Hallo,

Zitat von @BerndVorwerk:
Private Sub Worksheet_Activate()
If Sheets("Versuchsauftrag").Range("A40").Value = 0 Then  
    Dim c As Rang
If Sheets("Bewertungsübersicht").Range("B22") = "X" Then  
With Sheets("Versuchsauftrag").Range("A40:Y41")  
    Set c = .Find("", LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByColumns)  
    If Not c Is Nothing Then
        c.Value = Sheets("Bewertungsübersicht").Range("A23").Value  
    End If
End With
End If
End If
End Sub

In Zeile 02 prüfst du ob dort eine Wert gleich 0 (Ziffer NULL) eigetragen ist. 0 <> leer; leer <> Leerzeichen; NUL <> leer; NICHTS <> 0

...soll folgendes tun: Wenn Zelle A40 vom Blatt Versuchsauftrag leer ist,
Wird nur erfüllt wenn dort wirklich NICHTS drin steht face-smile

Das ganze funktioniert eigentlich auch, nur wird der erste Wert (hier A22) nicht in die freie Zelle A40 eingetragen sondern in A41.... wieso?
Weil in A40 eben kein NICHTS drin steht, wird die nächste genommen. Deine Zeile 7 sucht nach NICHTS. NICHTS <> 0 face-smile

Und code Tags in der Formatierung tun dir auch nicht weh um dein Quellcode hier vernünftig darzustellen.

Gruß,
Peter
colinardo
Lösung colinardo 01.08.2014 aktualisiert um 23:45:04 Uhr
Goto Top
Das ganze funktioniert eigentlich auch, nur wird der erste Wert (hier A22) nicht in die freie Zelle A40 eingetragen sondern in A41.... wieso?
weil Range.Find beim Durchlauf die erste Zelle im Bereich immer ganz zum Schluss prüft.
Du müsstest hier den Bereich oben um eine Zelle vergrößern, oder du nimmst die Schleifen-Methode dich ich dir im letzen Post geschrieben habe.

Grüße Uwe
BerndVorwerk
BerndVorwerk 01.08.2014 um 14:38:38 Uhr
Goto Top
Hallo Peter,
danke für die schnelle Antwort!
ich hatte das Ganze auch schon probiert mit:

If Sheets("Versuchsauftrag").Range("A40").Value = "" Then

"" ist doch dann "nichts", oder?
Ich hatte die Zelle A40 vorher auf jeden Fall leer gemacht.

Dann wird das Ganze auch ausgeführt, aber trotzdem in A41 eingefügt.

code Tags? Wo finde ich hier eine Übesicht über Formatierungsmöglichkeiten? Bin noch ziemlich neu, sorry face-wink

Danke und Gruß,
Bernd
colinardo
colinardo 01.08.2014 um 14:40:02 Uhr
Goto Top
Zitat von @BerndVorwerk:
code Tags? Wo finde ich hier eine Übesicht über Formatierungsmöglichkeiten? Bin noch ziemlich neu, sorry face-wink
Formatierungen in den Beiträgen
Pjordorf
Pjordorf 01.08.2014 um 14:52:44 Uhr
Goto Top
Hallo,

Zitat von @BerndVorwerk:
"" ist doch dann "nichts", oder?
Unter Excel eher ISTLEER
"" ist eher ein Leerer String

Gruß,
Peter
BerndVorwerk
BerndVorwerk 01.08.2014 um 23:45:38 Uhr
Goto Top
Super,
damit hat es funktioniert!
Einmal mehr vielen Dank!