Clever-Excel-Forum

Normale Version: Automatisch Hyperlinks vergeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Hallo,


Zitat:die Formel funktioniert, sie gibt die gesuchten Dokumente mit Hyperlink wieder.

Die Formel gibt immer einen Hyperlink wieder, außer in Tabelle1!W2 stehen weniger als vier Zeichen! Hier mal vereinfacht durch x statt einem Hyperlink:

[html]
Arbeitsblatt mit dem Namen 'Tabelle1'
 EFGH
14a#WERT!Fehlerx
15abc#WERT!Fehlerx
1612345WAHR1x
17123,45WAHR1x
1812,3WAHR1x
19123FALSCH00

ZelleFormel
F14=ODER(LÄNGE(E14)>3;REST(E14;1)>0)
G14=WENNFEHLER(WENN(ODER(LÄNGE(E14)>3;REST(E14;1)>0);1;0);"Fehler")
H14=WENNFEHLER(WENN(ODER(LÄNGE(E14)>3;REST(E14;1)>0);"x";0);"x")
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
[/html]
Das kann gut sein, wie gesagt Redundanzen sind nicht ausgeschlossen. Aber wenn falsche Ergebnisse, gekennzeichnet durch die 0, sowieso aussortiert werden, ist es doch völlig egal ob die nen Hyperlink, Rot, Grün oder sonst was sind.

Ich hab mal meine Formel ein wenig überarbeitet, diese muss ich nur noch in verständliche Form für Excel bringen. In der Syntax hab ich oft noch Probleme. Diese möchte ich nun über meine große Formelspalte in Tabelle2 drübergehen lassen, dafür aber den Hyperlink Teil selbst aus der Formel entfernen.


Application.Calculation = xlCalculationManual

For count = 0 To 50000

If Worksheets("Tabelle2").Cells(5, 5 + count).Value <> 0 Then

 With Worksheets("Tabelle2")
   .Hyperlinks.Add Anchor:=Worksheets("Tabelle2").Cells(6, 5+count),_
   Address:="www.test.de/ & Worksheets("Tabelle1").Cells(O, 1 + count) & " ;
   TextToDisplay:=Worksheets("Tabelle2").Cells(5, 5 + count).Value
   Next count
   
   Else: Next count
End Sub
 End With

Application.Calculation = xlCalculationAutomatic

Gedacht ist, dass er das Formelübergebnis überprüft. Steht etwas anderes als 0 drin, so soll er in der Zeile Rechts daneben den Namen als Freundlicher Name nutzen und einen festen Anfangslink + die Objekt ID aus Tabelle1 zu dem dazugehörigen Link machen. Leider hab ich wohl noch Fehler drin, da alles ab .hyperlinks bis next Count rot eingefärbt ist.
Hallo,


Zitat:In der Syntax hab ich oft noch Probleme

nicht nur! :20:

Du willst also in 50000Spalten diesen Hyperlink eintragen?

Zitat:Cells(O, 1 + x)

Was ist das für eine Bezeichnung?


Das: 
Zitat:Else: Next count
führt zu einem Fehler, also lass es weg!


Zitat:Aber wenn falsche Ergebnisse, gekennzeichnet durch die 0, sowieso aussortiert werden,

falsche Ergebnisse werden nicht durch 0 gekennzeichnet! Nur Zahlen mit weniger als 4 Zeichen (inkl. Komma!), alles andere erhält einen Hyperlink. Sieh Dir mal mein Beispiel an!!!

Zitat:Redundanzen sind nicht ausgeschlossen
Das hat wohl nichts mit Redundanzen zu tun!!
Hallo


Du willst also in 50000Spalten diesen Hyperlink eintragen? <- Welchen meinst du genau? Die Formel? Wenn ja, warum nicht? Bitte vernachlässigt alles, was nicht das ursprüngliche Problem angeht.




Cells(O, 1 + x) <- Habs geändert, steht nun auch count.

Else: Next count führt zu einem Fehler, also lass es weg! <- Warum? Es muss doch der Zähler auch erhöht werden, falls "else" zutrifft.



falsche Ergebnisse werden nicht durch 0 gekennzeichnet! Nur Zahlen mit weniger als 4 Zeichen (inkl. Komma!), alles andere erhält einen Hyperlink. Sieh Dir mal mein Beispiel an!!! <- Welche negative Auswirkung hat das grade auf das Grundproblem? Zudem ist die Ausgangsformel längst ohne Hyperlink, wie in den Postings dadrüber ersichtlich. Mir geht es vor allem darum:

"Application.Calculation = xlCalculationManual

For count = 0 To 50000

If Worksheets("Tabelle2").Cells(5, 5 + count).Value <> 0 Then

 With Worksheets("Tabelle2")
   .Hyperlinks.Add Anchor:=Worksheets("Tabelle2").Cells(6, 5+count),_
   Address:="www.test.de/ & Worksheets("Tabelle1").Cells(O, 1 + count) & " ;
   TextToDisplay:=Worksheets("Tabelle2").Cells(5, 5 + count).Value
   Next count
   
   Else: Next count
End Sub
 End With

Application.Calculation = xlCalculationAutomatic

"

Hier die Synatx zu verbessern um zu gucken, ob es auf diese Weise funktioniert.
Moin!
Zitat:Du willst also in 50000Spalten diesen Hyperlink eintragen? <- Welchen meinst du genau? Die Formel? Wenn ja, warum nicht?

Zum Beispiel deshalb, weil Excel "nur" 2^14 aka 16.384 Spalten hat.
Dein Makro schmiert also vorsätzlich ab.

Zitat:Bitte vernachlässigt alles, was nicht das ursprüngliche Problem angeht.

Dein Code wird noch nicht mal kompilieren, so viele Fehler wie er enthält.

Gruß Ralf
Ich meine Zeilen, nicht Spalten. Wenn ich das wirklich gemeint hätte, würde auch der ganze Rest vom Programm gar nicht erst laufen und ich hätte dieses Problem natürlich bemerkt.

Hier noch mal die Formel mit Spalte/Zeile vertauscht

Ich würde mich sehr freuen, wenn jemand über den angegebenen Code draufschaut und guckt, wo die Syntax hier fehlschlägt. Der Bereich zwischen With Works... und Next count ist rot, der rest immerhin schwarz im VBA Editor.

Mein Code:

For count = 0 To 50000

If Worksheets("Tabelle2").Cells(5 + count, 5).Value <> 0 Then

With Worksheets("Tabelle2")
.Hyperlinks.Add Anchor:=Worksheets("Tabelle2").Cells(5+count, 6),_
Address:="www.test.de/ & Worksheets("Tabelle1").Cells(1 + count, 15) & ",_
TextToDisplay:=Worksheets("Tabelle2").Cells(5 + count, 5).Value
End With
Next count

Else: Next count

End If


Beispielcode von Microsoft:

With Worksheets(1)
.Hyperlinks.Add Anchor:=.Range("a5"), _
Address:="http://example.microsoft.com", _
ScreenTip:="Microsoft Web Site", _
TextToDisplay:="Microsoft"
End With


Ich sehe da keinen Unterschied mehr :/
Wenn Du Dir die Mühe machen würdest, hier nicht irgendwelchen Pseudocode in die Tastatur zu hämmern, sondern vernünftig im VBA-Editor arbeiten würdest, hättest Du auch eine Chance selbst auf die zahllosen Fehler zu kommen.
Überschlagsmäßig sind dies mindestens 10 gravierende Fehler!
Du würdest sehen, dass Dein Code im Editor überwiegend rot dargestellt wird, weil VBA damit nichts anfangen kann.
Ungetestet:
Code:
Sub RPP()
Dim Count As Long
For Count = 0 To 50000
  With Worksheets("Tabelle2")
     If .Cells(5 + Count, 5).Value <> 0 Then
        .Hyperlinks.Add Anchor:=.Cells(5 + Count, 6), _
           Address:="www.test.de/" & Worksheets("Tabelle1").Cells(1 + Count, 15), _
           TextToDisplay:=.Cells(5 + Count, 5).Value
     End If
  End With
Next Count
End Sub

Aber Achtung!
Bevor Du Ihn testest, mache Count kleiner, sonst läuft das Makro morgen noch.
Du solltest Count auch eher dynamisch errechnen und nicht try and error versuchen.

Gruß Ralf
Ich habe Deine Editierung erst jetzt gesehen, immerhin hast Du ja den Editor bemüht.
Hallo,

ungetestet:


Code:
With Worksheets("Tabelle2")
For Count = 0 To 50000
   If .Cells(5 + Count, 5) <> 0 Then
       .Hyperlinks.Add .Range("F" & 5 + Count), "www.test.de/" & Worksheets("Tabelle1").Cells(1 + Count, 15), , , CStr(.Cells(5 + Count, 5))
   End If
Next

End With
Vielen Dank erstmal!

Es stimmt, dass ich das ganze sehr schludrig mache was den Code angeht. Das liegt daran, dass es noch so viele offene Wege gibt über die ich einfach nicht bescheid weiß, das ich erst das Grobe ausklammern will bis ich mich wirklich ans programmieren mache.

z.B. weiß ich immer noch nicht, und dies hab ich hier bereits erfragt, ob es überhaupt Sinnvoll ist eine VBA Schleife über 50.000 Einträge laufen zu lassen oder ob das viel zu lange dauert. Zudem weiß ich auch noch nicht, ob direkte Formelbezüge in Excel "schneller" arbeiten als Formeln über VBA. Das ganze basiert bei mir auf gefährlichen Halbwissen, habe aber auch keine Literatur oder Quellen die mir da weiterhelfen können, nutze also das Internet und wie du schon sagtest, Trial and Error.

Was meinst du mit "dynamischer" Count? Das die Größe des Count nur so hoch ist, wie es auch wirklich Zeilen gibt? Das habe ich an anderer Stelle schon getan, nur hier geht es mir wirklich nur um das Testen ob diese Art von Weg überhaupt eine Möglichkeit ist. Die tatsächliche größe liegt bei 37.500 . Ich werd das ganze mal kleiner machen und ausführen. Falls das aber per se viel zu lange braucht, war das ganze von vornherein keine Möglichkeit :/



Ich habe den Counter mal auf 100 gesetzt, zum Testen reicht das. Es kommt aber leider der Laufzeitfehler 5, Ungültiger Prozeduraufruf oder ungültiges Argument, wenn er in der Formel Ausgabe <> 0, also einen Hyperlink setzen soll.

Ich glaub ich konnte das Problem beheben, bei euren Formeln fehlte noch ein & "

.Hyperlinks.Add .Cells(5 + Count, 6), "www.test.de/" & Worksheets("Tabelle1").Cells(1 + Count, 15) & " , .Cells(5 + Count, 5)

Jetz fällt mir auf, dass hier der freundliche Name fehlt. Ich nutze mal die andere Formel, bringe das ganze mal in Ruhe weiter und melde mich dann.

Vielen Dank!



So, ich hab es endlich geschafft dank passender Formatierung, Kleinigkeiten und dem Code von RPP63!! Es funktioniert! Und sogar über 50.000 Zeilen, ich hab keinerlei Unterschied bemerkt (1 Sekunde Rechenzeit ca). Jetzt kann es richtig losgehen =)

Vielen, vielen Dank dafür!
Seiten: 1 2 3 4