Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1248to1252
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
Inhaltsverzeichnis

Hajo, CallByName, CountLarge ?

Hajo, CallByName, CountLarge ?
Reinhard
Hallo Wissende,
Hajo hat als Antwort zu einer Anfrage folgenden Code gezeigt:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If CallByName(Selection, IIf(Val(Application.Version) > 11, "CountLarge", "Count") _
, VbGet) = 1 Then
If Target  "Überschrift" Then
Range(Cells(AlteZeile, 1), Cells(AlteZeile, 2)).Interior.ColorIndex = xlColorIndexNone
End If
End If
End Sub

Frage1 zu CountLarge:
Was ist der Unterschied zwischen Count und CountLarge?
Bei ZellBereich.Count und ZellBereich.CountLarge sah ich keinen.
Frage2 zu CallByName:
Wählt man Count so steht ja da die Codezeile:
If CallByName(Selection, "Count", VbGet) = 1 Then
Und in der Hilfe sieht man Beispiele wie
CallByName Text1, "MousePointer", vbLet, vbCrosshair
CallByName Text1, "Move", vbMethod, 100, 100
Ich habe das jetzt schon soweit durchblickt daß ich sehr annehm daß diese drei Codezeilen auch so ausführbar wären im Pseudocode:
If Selection.Count = 1 Then
Text1.Mousepointer=vbCrosshair
Text1.Move 100, 100
Wenn dem so ist, welchen Vorteil hat denn da CallByname?
Und woher bekomme ich eine Liste was es da so alles gibt außer vbLet, vbMethod, vbGet?
PS: Wenn ich in meinem XL 2007 VB-Editor den Cursor auf CountLarge stelle und F1 drücke, so kommt Hilfe zu Chart.ApplyLayout-Methode. Bringt das eigentlich das geringste wenn ich das an MS maile?
Oder ein MVP?
Danke ^ Gruß
Reinhard
AW: Hajo, CallByName, CountLarge ?
27.01.2012 17:52:46
Hajo_Zi
Hallo Reinhard,
ab Excel 2007 reicht Count nicht, falls die gesamte Tabelle markiert wird.

Danke, Frage1 geklärt
27.01.2012 18:17:54
Reinhard
Hallo Hajo,
sehr schön, danke dir.
Jetzt wo ich weiß warum, ist das irgendwie naheliegend, theoretisch hätte ich darauf kommen können.
Aber irgendwie dachte ich wieder mal viel zu kompliziert *seufz*
Gruß
Reinhard
CallByName habe ich schon mal in einem ...
27.01.2012 18:17:58
Luc:-?
…gewissen, sicherheitsrelevanten Zusammenhang erwähnt, Reinhard;
viell erinnerst du dich. Gedacht war es sicher für Fälle, in denen man den Namen der Objekteigenschaft bzw -methode zwingend als Text übergeben muss oder aber will (Wiki-Stichwort Obfuszierung).
Gruß Luc :-?
PS: Wenn du darauf Lust hast, kann ich dir ja mal einen obfuszierten BspCode einstellen und du sagst mir, was der macht! ;-)
Anzeige
Frage2 und PS noch offen
27.01.2012 18:33:52
Reinhard
Hallo Luc,
"""gewissen, sicherheitsrelevanten Zusammenhang erwähnt, Reinhard,viell erinnerst du dich"""
sorry nein. Beim Schreiben der Anfrage hatte/habe ich schon im Hinterkopf daß ich ...Byname
schon kenne, von Open Office bzw. StarBasic.
Da bezieht man sich auf z.B. Zellen mit GetByName()
In Beziehung zu Vba bzw. Hans bzw. Dir klingelte da nix.
"sicherheitsrelevant"? Sicherheit vor wem, was, warum?
"""Gedacht war es sicher für Fälle, in denen man den Namen der Objekteigenschaft bzw -methode zwingend als Text übergeben muss oder aber will (Wiki-Stichwort Obfuszierung)"""
Nie gehört. Klingt irgendwie als ob Konfuzius obduziert hätte :-))
PS: Wenn du darauf Lust hast, kann ich dir ja mal einen obfuszierten BspCode einstellen und du sagst mir, was der macht! ;-)
Gerne, ich bin es ja hier schon jahrelang gewöhnt mit meiner Null Ahnung Vba-Rätsel zu lösen *gg*
Gruß
Reinhard
Anzeige
VBA-Rätsel zum WE: Abgesehen mal ...
27.01.2012 20:18:51
Luc:-?
…davon, Reinhard,
dass in deinem Bsp (von Hajo) durchaus Selection durch Target ersetzt wdn könnte, denn beides repräsentiert hier letztlich ein Range-Objekt, funktioniert es doch. Warum Hajo nun gerade die Variante mit vbFkt IIf, der das letztl wohl geschuldet ist, und nicht die „klassische” Form gewählt hat, musst du ihn fragen — viell hatte er sich ja gerade mit CallByName auseinandergesetzt, dessen Parameter3-Möglichkeiten du selbstverständlich alle per VBE-Objektmanager finden kannst, wozu dann auch vbSet gehört, für das ich allerdings keine fktionable Anwendung finden konnte, weshalb ich u.a. dafür CallMyName geschrieben hatte, was neben CallByName auch im versprochenen und nun folgenden CodeBsp verwendet wird.
Function DecNova(ByVal vglZN As String, ByVal vglFN As String, ByVal KVs) As Boolean
Dim i As Long, n As Long, s As Long, shz() As Long, plc As Object
On Error Resume Next
CallMyName Me.Parent, Krypt("RcUMFneSFdVoAB%s", KVs(3), 3, 2, 1), 8, plc
If IsError(CallByName(plc, Join(VPart(Evaluate("transpose(char(code(Sprite(""" & Inlet & _
""",""""))-" & AnzAMBxAnim & "))"), 0, 0), ""), 2)) Then DecNova = vglZN  vglFN
If DecNova Then
n = CallMyName(Me.Parent, Krypt("h[oYhRhQVnxkoExs", KVs(1), 3, 2, 1), 2, _
Krypt("5]EoNb7olb187", KVs(1), 3, 2))
s = CallByName(plc, Krypt("csQ}Or22Lrj3", KVs(3), 3, 2), 2, n, lOrBlIdx)
CallByName plc, Krypt("y[ng^GvxZKdgd", KVs(1), 3, 1, 1), 4, 0
CallByName plc, Krypt("bVsXWhXjQJoXaR", KVs(2), 3, 1, 1), 4, 0
CallByName plc, Krypt("ygLM`QsqN_jg", KVs(3), 3, 1, 1), 4, 0
Set plc = Nothing
ReDim shz(1 To s)
For i = 1 To s
shz(i) = i
CallMyName Me.Parent, Krypt("tbU`2Y3Xmu%rgEn4", KVs(2), 3, 2, 1), 4, i, _
Krypt("OUp[lnQYUJ+]VNZ:8", KVs(1), 3, 2, 1), -1
Next i
If n 
Natürl sind hierin noch einige andere Dinge enthalten, die sich dem uneingeweihten Betrachter kaum erschließen, aber das ist ja so gewollt. ;-)
Deshalb habe ich auch nicht die natürl vorhandenen Enumerationsnamen bestimmter Argumente der Fkt Krypt verwendet, das schon wäre ggf zu verräterisch.
Ansonsten hatte ich ja angedeutet, dass du den einen Grund unter dem von mir genannten Stichwort auf Wikipedia findest. Konfuzius hat damit gar nichts zu tun, eher die alten Römer. Man könnte das aber auch Camouflage oder CrunchCode (der sieht aber idR viel wüster aus → Spaghetti und möglichst viele Befehle in einer Zeile) nennen — viell sind dir diese Begriffe vertrauter. ;-)
Na, dann knobel mal! ;-))
Gruß + schöWE, Luc :-?
PS: Übrigens ließe sich der Code noch ein klein wenig mehr „obfuszieren”, wie ich soeben feststellen konnte. Wer den Code ausprobieren will → keine Gefahr, er läuft nicht. Aber in passender Umgebung schon…
Anzeige
arrgs, *jammeraber ich bin selbst schuld, denn ...
27.01.2012 21:06:57
Reinhard
...ich hab ja nachgefragt :-)
Hallo Luc,
um Zeit zu schinden sag ich mal keck, ich habe den Code nur kurz überflogen.
Da der Code von CallMyname unbekannt ist beginne ich erst gar nicht diese Knobelaufgabe zu lösen.
Liegt der Code vor so erkläre ich dir 5 Minuten später wie da was abläuft, kein Akt.
Okay, ich erahne voraus dann beginnt ggfs. eine Diskussion was eine Minute ist. Duwirst sicher kleinbürgerlich von Erd-Minuten ausgehen. Ich sehe sowas global galaktisch und werd schon einen Planeten oder sonstwas was da rumschwirrt finden wo eine dortige Minute 20 Erdjahre lang ist *lächel*
Gruß
Reinhard
Anzeige
OT@Reinhard : Gute Antwort ;-) _oT
27.01.2012 21:11:50
NoNet
_oT
Warum so klein-klein, Reinhard, stürz ...
27.01.2012 22:00:05
Luc:-?
…dich in die dunkle Strömung und erkunde das Multiversum! Warum denn auch nur in unserer Universumsblase verharren, wo sie doch anscheinend viele Geschwister hat? Zeit wird dann sowas von relativ - das glaubst du gar nicht… ;-))
Übrigens fkt CallMyName im Prinzip fast genauso wie CallByName, das es intern auch enthält, nur eben auch mit vbSet. Das Problem dürfte hier doch wohl eher die Fkt Krypt sein!
Ansonsten habe ich dem Sascha-Thread, zu dem du ja auch was sehr Langes geschrieben hast (mit CP undso), mal ein reguläres CallByName-Bsp zugesellt, denn das wäre nach seiner ursprgl Intention ein Anwendungsfall dafür.
Ein (natürl frdl) lachender Luc :-?
Anzeige
AW: Hajo, CallByName, CountLarge ?
27.01.2012 18:42:59
Hajo_Zi
Hallo Reinhard,
frage 2 ist beantwortet da Selection.Count ein Fehler bringt falls gesamte Tabelle markiert.
Gruß Hajo
AW: Hajo, CallByName, CountLarge ?
27.01.2012 18:49:16
Reinhard
Hallo Hajo,
bitte ersetze in Frage2 Count durch CountLarge.
Aber so oder so sehe ich Frage2 noch nicht als beantwortet an.
Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige