# Excel Makro Problem



## zodiak (2. Oktober 2003)

Hallo @all !

hab ein Problem mit einem Excel Makro, es sieht folgendermaßen aus:

Sub Makro1()
'
' Makro1 Makro

Range("A2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
"http://get.casedata?$casenumber$=" & Range("A2") _
, TextToDisplay:="" & Range("A2")

End If
End Sub

In diesem Makro wird der Zelle A2 ein Hyperlink hinzugefügt. Angezeigt wird der Text der in Zelle A2 steht.
Wie mache ich es das dieses Makro in der ganzen A-Spalte angewendet wird.
Bsp:

Spalte A

1234  Hyperlink: http://get.casedata?$casenumber$=1234
2346  Hyperlink: http://get.casedata?$casenumber$=2346
3456  Hyperlink: http://get.casedata?$casenumber$=3456
3462  Hyperlink: http://get.casedata?$casenumber$=3462
6782  Hyperlink: http://get.casedata?$casenumber$=6782


Ist dies irgendwie möglich mit einem do until od. so

Vielen Dank für eure Hilfe !


----------



## Retlaw (2. Oktober 2003)

```
Sub Makro1()

Dim i As Integer
Dim Zelle As String
For i = 1 To 20
    Zelle = "A" & CStr(i)
    Range(Zelle).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
    "http://get.casedata?$casenumber$=" & Range(Zelle) _
    , TextToDisplay:="" & Range(Zelle)
Next

End Sub
```
In der Zeile For i = 1 To 20 kannst du anstatt 20 einstellen wie weit er zählen soll.
In dem Beispiel macht er Links für die Zeilen 1 bis 20.


----------



## zodiak (2. Oktober 2003)

Perfekt 

Danke Retlaw 
Aber ein Problemchen hab ich da noch, und zwar:
In der Tabelle sind immer unterschiedlich viele Datensätze
ich habs versucht so zu lösen:

If Range(Zelle) <> "" then

Makro ausführen

end if

es funtkioniert auch aber wenn ich es so mache dann wird die Excel Tabelle sehr in die länge gezogen. Verstehst du was ich meine?
Gibts da auch eine andere lösung? Er soll einfach alle Datensätze bearbeiten die da sind u. dann aufhören. Funktioniert das irgendwie ?

VIELEN DANK NOCHMAL !


----------



## Retlaw (2. Oktober 2003)

```
Sub Makro1()

Dim i As Integer
Dim Zelle As String
For i = 1 To getRows()
    Zelle = "A" & CStr(i)
    Range(Zelle).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
    "http://get.casedata?$casenumber$=" & Range(Zelle) _
    , TextToDisplay:="" & Range(Zelle)
Next

End Sub

Function getRows()
    Dim j As Integer
    j = 1
    Do While Range("A" & CStr(j)) <> ""
        DoEvents
        j = j + 1
    Loop
    getRows = j - 1
End Function
```
Jetzt sucht er sich selber wieviel Zeilen gefüllt sind.


----------



## tuxracer (2. Oktober 2003)

Ich frag mich wieso Ihr überhaupt mit den Buchstaben der Spalten arbeitet, ich finde es in Makros viel einfacher alles einfach mit 

Range(Cells(ZeilenNr,SpaltenNr),-Cells(ZeilenNr,SpaltenNr)).select

zu definieren, dann ist es möglich mit ein und dem selben Befehl entweder nur ne einzelne Zelle, ne Spalte oder einen ganzen Bereich anzuwählen, und zudem fällt die Dimensionierung weg

Sorry die Syntax stimmt sicher nicht 100%ig

falls ich immer nur ne Zelle will, verwende ich 
Cells(ZeilenNr,SpaltenNr).select


----------



## Retlaw (2. Oktober 2003)

Natürlich gehts so auch, aber ob Nummer oder Buchstabe ist hier egal.
Und mehrere gleichzeitig markieren und dann Link setzten ist nicht möglich da jeder Link ja ein anderes Ziel hat, das wiederum ergibt sich aus dem Inhalt der einzelnen Zellen.


----------



## zodiak (2. Oktober 2003)

Hallo 

ich bekomme einen Fehler im Makro wenn ich es auto_open() nenne.
In der Fett geschriebenen Zeile triff folgender Fehler auf:

Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen

Warum das 

Function getRows()
    Dim j As Integer
    j = 1
*Do While Range("A" & CStr(j)) <> ""* 
        DoEvents
        j = j + 1
    Loop
    getRows = j - 1
End Function 


Vielen DANK FÜR DIE HILFE


----------

