Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
752to756
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
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hilfe bei Code

Hilfe bei Code
08.04.2006 21:55:34
Marco
Hallo Leute,
habe folgenden Codeausschnitt, aber irgendwie will er nicht. Ich möchte den Wert aus TextBox1 mit den Werten der Spalte L vergleichen und wenn dieser schon mal da ist (also doppelt) soll das Sub verlassen werden. Leider funktioniert das nicht so, wie ich es hier beschrieben habe:
If TextBox1.Text = Range("L:L").Value Then
MsgBox "doppelt"
Exit Sub
End If
Habt Ihr Rat?
Danke
Marco

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe bei Code
08.04.2006 22:09:13
Rocky
Hallo,
das ist als ob du fisch mit Hose vergleichen willst! Duch vergleichst nen Wort mit ner spalte.
entweder alle zellen einzeln oder gar nicht.
dann nicht .Text sondern Value
versuchs doch mit Find(schaffst du über Recorder - Suchfunktion) oder mit ner Schleife doch das dauert meist ne weile!
Gruß Rocky
"Wenn unter den Blinden der Einäugige König ist, dann findet man hier die Herren der Ringe"

Anzeige
AW: Hilfe bei Code
08.04.2006 23:27:56
Yal

Sub Test
For Each Zelle in Range(Range("L1"), Range("L65536").End(xlUp)).cells
if LCase(Zelle) = LCase(TextBox1) Then
Msgbox "doppelt in " & Zelle.Address
Exit Sub
End If
Next
End Sub

Die "Value"- und "Text"-Eigenschaft von Zelle, bzw. TextBox sind Default-Eigenschaft und können gespart werden.
LCase macht von alles Kleinbuchstaben, um den Vergleich zwischen "JA" un "ja" gelten zu lassen.
Viel Erfolg
Yal
AW: Hilfe bei Code
08.04.2006 23:53:43
Marco
Danke Yal, hat super geklappt (habe zelle noch als Variant deklariert!)
Nimm besser die Find-Methode...
09.04.2006 12:43:57
{Boris}
Hi Marco,
...wie von Rocky bereits vorgeschlagen. Die ist um Lichtjahre schneller als ne For-Next-Schleife (zumindest, wenn der Datenbereich groß ist).
Option Explicit

Private Sub CommandButton1_Click()
Dim C As Range
Dim rngSearch As Range
Set rngSearch = Worksheets(1).Range("L:L")
Set C = rngSearch.Find(what:=TextBox1, lookat:=xlWhole, MatchCase:=False)
If Not C Is Nothing Then
MsgBox "Schon vorhanden", , "Gebe bekannt..."
Else
MsgBox "Noch nicht da", , "Gebe bekannt..."
End If
End Sub

Grüße Boris
Anzeige
AW: Hilfe bei Code
09.04.2006 09:16:50
Luschi
Hallo Yal,
Dein Tipp, bei Verwendung von Default-Eigenschaften diese nicht im Code zu schreiben, finde ich nicht gut. Wenn M$ in Office12 diese Einstellungen ändert, dann suchst Du die Fehlerquellen im Code ewig.
Genauso diese Zeile:
Range(Range("L1"), Range("L65536").End(xlUp)).cells
Von welchem Range aus welchem WorkSheet ist hier die Rede. Man sollte die Tabelle, die man meint, auch dazuschreiben; also
ActiveSheet.Range(Range("L1"), ActiveSheet.Range("L65536").End(xlUp)).Cells
oder:
WorkSheets("abc").Range(Range("L1"), WorkSheets("abc").Range("L65536").End(xlUp)).Cells
Gerade in der VB/VBA-Programmierung sollte man sich eine korrekte und volle Schreibweise angewöhnen und den luschigen Code-Script des Excel-Makrorekorders nicht nachahmen.
Die 1. Ariane-V Trägerrakete ist nur deshalb abgestürzt, weil man einen Code-Schnipsel aus der Vorgängerversion einfach kopiert hat und nicht dran dachte, den Datentyp Integer in Long umzuwandeln.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Hilfe bei Code
09.04.2006 13:58:08
Hubert
"Dein Tipp, bei Verwendung von Default-Eigenschaften diese nicht im Code zu schreiben, finde ich nicht gut. Wenn M$ in Office12 diese Einstellungen ändert, dann suchst Du die Fehlerquellen im Code ewig."
Humbug, die defaults wurden in der Excelgeschichte noch nie geändert, warum sollte das
in der kommenden Version so sein?
mfg Hubert
AW: Hilfe bei Code
09.04.2006 16:28:00
Luschi
Hallo Hubert,
bei Microsoft ist nur Eines stetig und das ist die Veränderung. Mit Office 12 wird Vba.Net Einzug halten und dann ist das Wirrwarr noch größer. Du scheinst vergessen zu haben, wie man mit Excel4/5 programmiert hat. Ich kann nur Jedem raten, daß, was man meint, auch im Vba-Code hinzuschreiben.
Ich verdiene mein Geld mit Excel-/Access-/VB-Programmierung, und da ist es wichtig, daß man den Code auch nach längerer Zeit noch flüssig lesen/korrigieren kann und nicht jedesmal überlegen muß, welche Eigenschaft ist bei welchem Steuerelement nun mal gerade DEFAULT.
Zudem muß beim Datenzugriff auf Tabellenzellen klar sein: welches Workbook, welches Worksheet gemeint ist, wenn man Range und Cells benutzt.
Schau Dir die Fragen hier bei Herber oder Spotlight (www.spotlight.de) doch an. Viele laufen doch darauf hinaus: mein Code läuft nicht, das Ergebnis ist falsch, Error 1004 bzw 424 - Objekt erforderlich). Immer wieder die selben Probleme und immer wieder die gleichen Rezepte. Wenn jemand seine privaten Exceltabellen pflegt und es so lax nimmt wie Du, dann ist das nicht mein Problem. Meine Programme laufen aber bei Kunden wie Steuerberater, Versicherungen und Banken. Da kann ich mir "Humbug" nicht leisten und auf Bill Gates vertrauen. Denk mal drüber nach!
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Hilfe bei Code
09.04.2006 21:56:02
PeterW
Hallo Luschi,
warum so inkonsequent? Weißt du, ob MS nicht vielleicht schon bald die Anzahl der möglichen Zeilen erhöht? ;-)
Gruß
Peter
AW: Hilfe bei Code
09.04.2006 22:24:22
Hubert
Hi,
Excel 12 hat definitiv über 1 Mio. Zeilen und über 1000 Spalten.
mfg Hubert
Warum so ungenau?
09.04.2006 23:18:52
{Boris}
Hi Hubert,
2^14 Spalten und 2^20 Zeilen = 16.384 * 1.048.576 = 17.179.869.184 Zellen
Der pure Wahnsinn - es lebe For Each Zelle In Selection ;-))
Grüße Boris
AW: Hilfe bei Code
09.04.2006 23:53:46
PeterW
Hallo Hubert,
das war mir schon bekannt. :-)
Mir ging es eher darum, dass genaue Referenzierung der Tabellen und Angabe der Defaults Makkulatur sind, wenn man die 65536 derzeit möglichen Zeilen im Code-Beispiel nicht mit Rows.Count oder sonstwie verallgemeinert und damit vielleicht für den Absturz des Warp-Generators verantwortlich wird.
Gruß
Peter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige