Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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

Objekterstellung zur Textersparniss

Objekterstellung zur Textersparniss
12.02.2015 17:08:52
Alex

Hallo zusammen, habe ein Problem bezüglich VBA. Und zwar versuche ich einiges an Text zu sparen und habe folgenden Ausdruck sehr häufig in meinem Code drin:
ThisWorkbook.Worksheets(a).Cells(b,c).Value = ...
a,b,c sind beliebige Integervariablen.
Gibt es eine Möglichkeit irgendein Objekt (oder Klasse) anzulegen, das folgende darstellung zulässt:
Zelle(a,b,c).Value = ...
Was Objekterstellung anget bin ich noch nicht ganz so fit... Vielen Dank im Voraus

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objekterstellung zur Textersparniss
12.02.2015 17:20:57
Daniel
Hi
nimm ne einfache Public Function:
Public Function Zelle(a As Long, b As Long, c As Long) As Range
Set Zelle = ThisWorkbook.Worksheets(a).Cells(b, c)
End Function
und dann im Code
Sub test()
Zelle(1, 1, 1).Value = "Hallo Welt"
End Sub

Gruß Daniel

oder mit With?
12.02.2015 18:04:44
Erich
Hi Alex,
wäre die Nutzung der With-Klammer nicht naheliegender? Schau dir mal diese Beispiele an:

Sub mitWith()
'Statt
ThisWorkbook.Worksheets(a).Cells(b, c).Value = 4711
' besser
With ThisWorkbook
.Worksheets(a).Cells(b, c) = 4711
End With
' oder
With ThisWorkbook
With .Worksheets(a)
.Cells(b, c) = 4711
End With
End With
' oder
With ThisWorkbook.Worksheets(a)
.Cells(b, c) = 4711
End With
End Sub
Natürlich ist die Nutzung von With effektiver, wenn das "With-Objekt" mehrfach verwendet wird.
".Value" kannst du weglassen, da Value die Standardeigenschaft von Range ist.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
Erichs Vorschlag ist DER Standard, ...
12.02.2015 18:44:27
Luc:-?
…Alex,
allerdings kannst du auch Objekte setzen, was oft günstiger ist:
Dim relWs As Worksheet
Set relWs = ActiveWorkbook.Worksheets(a)
relWs.Cells(b, c) = …
Set relWs = Nothing
Alternativ könnte es auch mit Range("'" & a & "'!" & Cells(b, c).Address) klappen.
Gruß, Luc :-?
Besser informiert mit …

AW: das klappt nur dann...
12.02.2015 19:03:30
Daniel
wenn die Tabellenblätter mit ihren Indexnummern benannt sind, da a laut Vorgabe eine Ganzzahl ist.
Sind die Tabellenblätter jedoch mit normalen Texten benannt, müsste man:
Range("'" & Worksheets(a).Name & "'!" & Cells(b, c).Address)
schreiben.
ist jetzt aber auch nicht kürzer oder einfacher oder universeller als
Worksheets(a).Cells(b, c)
Gruß Daniel

Anzeige
Alex hat nicht mitgeteilt, wie er a deklariert ...
12.02.2015 19:30:09
Luc:-?
…hat, Daniel,
und a könnte auch ein BlattName sein, wie du unschwer herausfinden kannst, denn der hier angebbare Index kann beides sein, lfdNr oder Name.
Gruß, Luc :-?

AW: Alex hat nicht mitgeteilt, wie er a deklariert ...
12.02.2015 20:08:53
Daniel
Hi
naja, sein 4. Satz war:
"a,b,c sind beliebige Integervariablen."
damit hat er uns ganz klar mitgeteilt, wie er a deklariert hat.
mit meiner Lösung könnte man beide Möglichkeiten abdecken, indem man den ersten Parameter der Funktion als Variant deklariert.
Public Function Zelle(a As Variant, b As Long, c As Long) As Range

Dann wird, wenn hier ein Text übergeben wird, das Blatt über den Namen angesprochen, wird eine Zahl angegeben über die Indexnummer.
gruß Daniel

Anzeige
Danach habe ich eigentl Ausschau gehalten ...
13.02.2015 01:48:13
Luc:-?
…(im Nachhinein) und dann trotzdem nicht gesehen, Daniel;
allerdings ist das, was wir zeigen, wie du weißt trotzdem die übliche Methode, die du in der UDF quasi auch angewendet hast. Was nicht fktionieren würde, ist mein AlternativVorschlag, der dann wie von dir vorgeschlagen ergänzt wdn müsste. Der war mir aber eigentl nicht so wichtig, denn der fällt eigentl auch unter das, was ich zum Schluss schreibe.
Deine FktsProz ist ja 'ne nette Idee, aber bei voller Nutzung der VBA-Möglichkeiten eigentl nicht erforderlich. Und die muss er wohl zuerst erlernen…
Morrn, Luc :-?

Anzeige
AW: Danach habe ich eigentl Ausschau gehalten ...
13.02.2015 07:38:27
Daniel
nichts destotrotz ist es so, dass Alex mit Hilfe meiner Lösung genau so arbeiten kann, wie er sich das vorstellt.
Und wenn du in einer so kurzen und eigenglich deutlich formulierten Fragestellung die vorhandenen Informationen nicht herauslesen kannst, dass will ich jetzt nicht weiter kommentieren, das spricht für sich.
gruß Daniel

AW: Danach habe ich eigentl Ausschau gehalten ...
13.02.2015 10:21:30
Alex
also die lösung von daniel ist ziemlich genau das, was ich gebraucht habe.ich war anscheinend auch schonmal mal nah dran-.-
"with" funktioniert in meinem fall nicht da sich der zu kürzende ausdruck bereits in einem anderweitig genutzten with-block befindet.
trotzdem danke für alle vorschläge!!!! :-).

Anzeige
Weißt du, ich bin wohl etliche ...
13.02.2015 19:34:31
Luc:-?
…Jährchen älter als du, da kann so etwas schon mal passieren,
aber das zeigt mal wieder recht deutlich, dass du deine, idR kleinteiligen Lösungen durchsetzen willst, egal wie sinnvoll sie sind. Dass die hier von dir gezeigte auch eine nette Möglichkeit wäre, hatte ich dir ja bestätigt. Aber das hätte Alex auch mit Set lösen können, da muss man keine Sprache in der Sprache neu erfinden!
Damit hast du es nun wohl endgültig auf meine virtuelle NegativListe geschafft… Gratuliere! :->
Luc :-?

AW: Weißt du, ich bin wohl etliche ...
13.02.2015 20:12:39
Daniel
Luc, ich erfinde die Sprache nicht neu, ich nutze die Möglichkeiten, die sie mir bietet.
In einer modularen Sprache ist es eigentlich Standard, dass man sich Subroutinen erstellt, die man vom Hauptpogramm immer wieder aufruft, damit das Hauptprogramm klein und schlank bleibt.
Wenn VBA diese Möglichkeit hat, warum sollte man sie nicht nutzen?
Nur weil diese eine Subroutine nicht 1000 sonderen nur eine Zeile hat?
Oder passt diese Programmiertechnik nicht in dein Denkschema, bist du für sowas schon zu alt?
Gruß Daniel

Anzeige
Typisch, ihr denkt, eure Generation hätte das ...
19.02.2015 05:14:40
Luc:-?
…erfunden, Daniel,
aber das ist mitnichten so, sondern wird schon mindestens seit den 80ern des vorigen Jahrhunderts praktiziert (auch dieses vermeintlich progressive VorwärtsDenken ist nicht neu, das gibt's schon mindestens seit dem 19.Jhdt bzw der industriellen Revolution).
Naja, modular, welch hochtrabender Begriff für solche, noch dazu überflüssige Kleinigkeit… ;->
Übrigens, falls du es schaffen solltest, mit deutlich weniger PgmCode und solchen kleinen Bausteinen den LeistungsUmfang des im Thread von Bernd von mir erwähnten Tools zu erreichen, hast du meinen Glückwunsch! Letztlich muss man in 1.Linie Zusammenhänge begreifen und umsetzen, wenn man dem Endnutzer nicht einen Baukasten anbieten will (der würde sich vermutlich bedanken). Was bei der Pgmierung sinnvoll sein mag, kann doch nicht die Lösung für universelle FertigTools in EndNutzerHand sein! Die hier und anderswo zumeist angebotenen KleinCodes, können beim Lernenden einen falschen Eindruck von Pgmierung erwecken. Darunter verstehe ich jedenfalls nicht das Auflisten von PgmBibliotheken, was iaR nur ein Teil des Ganzen, nicht die alleinige Lösung sein kann.
Sicher kann man wie ggf auch MS beim Pgmieren von UDFs mit Klassen und Property-Prozeduren arbeiten, aber möglicherweise geht dadurch nicht nur die Komplexität, sondern auch der Sinn­Zusammenhang (das größere Übel) verloren.
Das erwähnte Tool kann ich im Original auch deshalb hier nicht einstellen, weil es in ein AddIn eingebunden ist und dessen Angebot auch selber nutzt. Also genau das, für das du mich für zu alt befindest… :->
Dir dürfte, da du es ja selber befürwortest, klar sein, dass man derartige Pgmm hier wohl kaum einstellen kann. Allerdings habe ich in diesem speziellen Fall eine erweiterte Version des Pgms geschrieben, deren Test noch nicht ganz abgeschlossen ist.
Für Interessenten an diesem Tool (TextAround):
Ich werde es nach Abschluss der Tests ins CodeProjekt-TeilForum des Online-Excel-Forums, wenn dieses wieder zugänglich und das TeilForum noch vorhanden ist, einstellen. Anderenfalls muss auf meine WebSite gewartet wdn.
Luc :-?

Anzeige
blah blah blah
19.02.2015 09:19:08
Daniel
Hallo Luc
Willkommen zurück.
Schöne Faschingsferien gehabt?
Gruß Daniel

Mit diesem Betreff hast du dich nun endgültig ...
20.02.2015 04:05:44
Luc:-?
…disqualifiziert, Daniel,
solche Typen wie dich kann man einfach nicht ernst nehmen! :->
Wenn du dir darin gefällst, überwiegend nur lästig zu sein, bitte sehr, das sind Mücken auch. Aber dagg gibt's bekanntlich Mittel.
Letztlich amüsiert's mich doch mitunter wie du mit deinen TrivialPgmm, wie gerade erst wieder, gg meine anzustinken versuchst. Wenn es nach Leuten wie dir ginge, würde sich Xl in einen einzigen Heu(-Müll-)haufen verwandeln, in dem die sprichwörtliche Nadel kaum mehr zu finden wäre…
Was den Fasching betrifft, ich bin Preuße! Ich habe in dieser Zeit ernsthaft pgmiert, während du dich an schnell dahingeschriebenen Sächelchen ergötzt, wohl nur um dein allzugroßes Ego zu befriedigen.
Ich korrigiere mich, du benötigst doch Unterstützer, aber wohl viel eher noch professionelle (Sucht-)Hilfe…
Luc :-?

Anzeige
AW: Mit diesem Betreff hast du dich nun endgültig
20.02.2015 11:16:43
Daniel
Hi Luc
warum?
er Betreff ist absolut passend.
Mein Beitrag enthält ja nur ein bisschen gesellschaftlichen Smalltalk und keine hochwissenschaftlichen Inhalte wie deine Beiträge.
Von daher der Betreff als kurze Zusammenfassung des Inhalts doch ok.
Du schreibst:
Wenn du dir darin gefällst, überwiegend nur lästig zu sein, bitte sehr, das sind Mücken auch. Aber dagg gibt's bekanntlich Mittel

was für Mittel meinst du? Mückenspray (Giftgas), oder Klatschen?
ich fasse das mal als Androhung körperlicher Gewalt auf und damit hast du du ich als Mensch disqualifiziert, das ist leider unterste Schublade. Und diesbezüglich nehme ich dich sehr ernst.
Hier hast du eine Grenze überschritten.

Anzeige
Ach Gottchen, nee, wie albern! Du hast doch ...
20.02.2015 12:56:23
Luc:-?
…lt Teilnehmerliste gar nicht vor, zum XlTreffen in Dresden zu kommen! Aber auch in diesem Fall könnte ich dich beruhigen, ich bin zu diesem Zeitpkt in einer anderen europäischen Hauptstadt…
Als eine, sagen wir mal sehr spezielle Art von menschlichem Zeitgenossen hast du dich ja schon längst entpuppt. Für derlei grenzüberschreitende Ehrgeizlinge habe ich gar keine Schublade, die fallen einfach durchs Raster für Ernstzunehmende… :->>
Luc :-?

AW: Ach Gottchen, nee, wie albern! Du hast doch ...
20.02.2015 13:06:02
Daniel
Luc, du weichst immer vom Thema ab (ist auch so eine Taktik von dir)
Was hat Dresden jetzt damit zu tun?
Deine Äusserung ist eine Gewaltandrohung von dir an mich.
aber seis drum, der Geltungssüchtige ist hier doch derjenige, der ständig erwähnen muss, in welchen hohen Excel- und Programmierligen er spielt und was für tolle und vielzeilige Makros er schon geschrieben hat.
Der Geltungssüchtige ist derjenige, der meint ständig in einer Fachsprache reden zu müssen, obwohl er sich mit Laien unterhält.

Ach, du bist Laie, ...
21.02.2015 03:54:56
Luc:-?
…Daniel?!
Dann hab ich dich entweder überschätzt oder mit einem anderen Daniel verwechselt. Warum könnt bzw wollt ihr euch auch keinen eindeutigen NickName zulegen. Unter Daniel firmieren hier wohl mindestens 2 Leute und beide scheint das nicht zu stören. Das ist schon mal sehr verdächtig…
Zu den Mücken: Die waren natürlich virtuell gemeint. Aber offensichtlich bist du schon so sehr mit der Virtualität verwachsen, dass sie dir wie Realität vorkommt. Ich stelle mir gerade vor, wie die Mücke Daniel mit ihrem Saugrüssel eifrig die Tastatur eines liegen gebliebenen Handys bearbeitet. Zumindest würde das so Manches erklären… ;-]
Aber auch in der Realität gibt's passive Schutzmittel. Mir ist da voriges Jahr eine ganze Dose übriggeblieben, die ich in Scotland wider Erwarten doch nicht benötigt hatte… :-]
Wie man dann daraus eine körperliche GewaltAndrohung ableiten will, ist mir schleierhaft. Deshalb auch mein Verweis aufs XlTreffen, denn das wäre wohl die einzige Gelegenheit für so etwas. Naja, inzwischen ist ja wohl ziemlich klar, dass derartige Überlegungen von dir zu erwarten, zuviel verlangt ist. Und wahrscheinlich hältst du auch diese Ausführungen für FachChinesisch… :LOL
Mannomann, Leute gibt's…
Übrigens, willst du (oder der jeweils Andere) mir ständig was „am Zeug flicken“! Das steht dir nicht zu, solange du nicht ebenbürtige Leistungen nachweisen kannst. Sachlich kann man mit mir durchaus diskutieren, aber dazu scheinst du ja wohl nicht in der Lage zu sein — als Laie…!
Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige