VisualBasic VBA in Excel

V

VirusDeluXe

Gast
Hallo zusammen,

leider habe ich keine Erfahrung mit VB in Excel. Nun bräuchte ich jemanden, der mir etwas bei der Umsetzung eines kleineren Codes hilft.

Ich möchte eine Do-While-Schleife realisieren die folgendes macht:

~~~
Do

Selektiere(Spalte A / Zeile x)
Zeile x + 1

While(x ist kleiner als 55.000)
~~~

Fragt bitte nicht nach dem Sinn, ich bräuchte es im Moment wirklich so und keine Alternative. Ich bin in der Hoffnung, dass der Rest bisher stimmt nur ich habe keine Ahnung wie man die Zeile in VBA hochzählt. Ansonsten möchte ich ja selber auch noch etwas knobeln um dazu zu lernen :)

Ich danke jetzt schon vielmals!
Grüße, Dennis
 
Code:
x = 1
Do While x < 55000
    Range("A" & x).Select
    x = x + 1
Loop
oder
Code:
For x = 1 To 54999
    Range("A" & x).Select
Next x
Allerdings ist das Selektieren sehr inperformant. Wenn du also Werte in die Zellen schreiben willst, dann solltest du diese nicht zusätzlich auch auswählen.
 
Dankeschön! Das passt so schon. Da das nicht all zu oft vorkommt, ist die Performance(Gott sei dank) eher zweitrangig.

Eventuell bräuchte ich noch ein Schnippsel zu einem weiteren Fall, den ich dann erweitern kann und dann müsste ich volle Fahrt den Rest alleine packen. Vieleicht fällt dir oder jemand anderem dazu auch etwas ein.

Folgende Situation:

In jeder Zeile ist der Text oder String anders dargestellt. z.B.:

(es gibt vieleicht ingesamt 15 unterschiedliche Kombinationen)

A1 --> FordKombi.20101108.DAT
A2 --> 2010.Porsche.0101.GT.DAT

Ich hätte nun gerne eine Maskenfunkion in der ich z.B. sage (# = steht für jedes Zeichen):

----------------------

WENN( MASKE(#########.########.DAT) = zutreffend)
{
... mache irgendwas
}
WENN( MASKE(####.#######.####.##.DAT) = zutreffend)
{
... mache irgendwas
}
usw.

----------------------

Dabei würde die erste Maske auf den Ford-Text zutreffen und die zweite Maske auf den Porsche-Text zutreffen.

Ich möchte also immer wenn er in einer Zeile ist, dass er auf diese 15 Möglichkeiten durchprüft. Was er dann macht, das mache ich dann noch voll fertig.

Wenn ihr mir das sagen könnt, dann seid ihr absolut top! :)
 
Das Selektieren einer Zelle um irgendeine Aktion per Makro durchzuführen brauchst du nie (behaupte ich :D) - also denk drüber nach, was du machen willst.

Code:
For x = 1 To 54999

If Range("A" & x) Like "?????????.????????.DAT" Then
    [COLOR="Green"]'anweisung[/COLOR]
ElseIf Range("A" & x) Like "????.???????.????.??.DAT" Then
    [COLOR="green"]'anweisung
'ElseIf ...
    'anweisung[/COLOR]
End If

Next x
Das funktioniert für deine Beispiele. Aber die erste Abfrage würde z.B. auch für "??.??????.???.????.DAT zutreffen.

Wenn es also solche Überschneidungen geben kann, dann müsstest du das in der Reihenfolge, in der die If-Anweisungen erfolgen, überdenken. Ansonsten könnte man noch mit
Code:
..??.DAT" And instr(Range("A" & x), ".") = 2 bzw. = 4 Then
prüfen, ob der '.' bspw. zweimal oder viermal vorkommt.
 
Zuletzt bearbeitet:
Zurück
Oben