Verständnis- und erweiterungshilfe gesucht
lima-city → Forum → Programmiersprachen → Basic
adresse
ausnahme
beginnen
cell
eintrag
fragen
hinweis
inhalt
not
null
nchste eintrag
nchsten eintrag
pascal
preserve
set
sinnen
spalten
speicher
variable
vergleich
-
Guten Morgen!
also erstmal vorweg: ich habe heute mit VBA angefangen und verstehe den syntax noch nicht so ganz.
ich möchte in einem Excelsheet nach einer Zelle mit einem Wert suchen und dann alle werte darunter in ein Array schreiben.
Dazzu habe ich mir das Beispiel zu Find kopiert und angepasst:
Sub suche() With Worksheets("S12").Range("a1:k10") Set c = .Find("Hostname", LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then firstAddress = c.Address Do MsgBox (c.Address) Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With End Sub
Nun die Frage, auf was prüft dieses Nothing ab? ist das mit NULL in php zu vergleichen?
welchen sinn hat die Variable firstAddress?
warum kann ich die adresse nicht per: hostzelle = c.Address der variablen hostzelle zuweisen?
und die wohl wichtiogste frage: wie kann ich nun alle werte unter der Zelle in ein Array speichern? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi,
hier ist der Code von dir mit ein paar Kommentaren.
Es ist außerdem hilfreich eindeutige Variablennamen zu verwenden statt einfach nur "c". (Ausnahme bei Zählschleifen...)
Sub Suche() Dim SearchRange As Range Dim FirstAdress As String Dim ListCells() As String ReDim ListCells(0) With Worksheets("Tabelle1").Range("A1:K10") 'Den ersten Eintrag suchen Set SearchRange = .Find("Hostname", LookIn:=xlValues, LookAt:=xlWhole) If Not SearchRange Is Nothing Then FirstAdress = SearchRange.Address Do 'In das Array eintragen, dabei das Array vergrößern If ListCells(0) = "" Then 'Hinweis: Hier wird die Adresse der Zelle gespeichert, ' also z.B. "$A$1". Um den Inhalt der Zelle zu ' speichern, muss nur "SearchRange" abgefragt ' werden statt "SearchRange.Address" ListCells(0) = SearchRange.Address Else 'Array vergrößern, wobei alte Werte erhalten werden sollen ReDim Preserve ListCells(UBound(ListCells) + 1) 'Hinweis: Hier wird die Adresse der Zelle gespeichert, ' also z.B. "$A$1". Um den Inhalt der Zelle zu ' speichern, muss nur "SearchRange" abgefragt ' werden statt "SearchRange.Address" ListCells(UBound(ListCells)) = SearchRange.Address End If 'Den nächsten Eintrag suchen Set SearchRange = .FindNext(SearchRange) 'Falls der nächste Eintrag nicht leer ist und 'der nächste Eintrag nicht dem ersten Eintrag entspricht, 'dann wird die Suche fortgesetzt. 'Denn wenn die Suche fertig ist, würde sie von vorne nochmals beginnen. Loop While Not SearchRange Is Nothing And SearchRange.Address <> FirstAdress End If End With 'Daten aus dem Array in die erste Spalte schreiben... Dim i As Integer For i = 0 To UBound(ListCells) Cells(i + 1, 1) = ListCells(i) Next End Sub
cbhp -
Nun die Frage, auf was prüft dieses Nothing ab? ist das mit NULL in php zu vergleichen?
Hm, gute Frage. Wie's in PHP richtig heißt, weiß ich nicht, aber in Pascal (Delphi) wäre das Äquivalent, um den Inhalt einer Variable vom Typ Variant (oder OLEVariant) zu überprüfen varEmpty. In VB heißt das eben Nothing. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage