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

Ist meine Frage realisierbar?

Ist meine Frage realisierbar?
01.05.2018 16:00:07
Holger
Hallo lieber Helfer,
läßt sich ein Add-in erstellen, dass mir eine Form als Rechteck anzeigt, welches stets schwebend und verschiebbar über jedem Arbeitsblatt und jeder Arbeitsmappe erscheint und wie erstellt man ein Add-in. bzw. wo kann ich mich darüber schlau machen?
Schönen Feiertag und herzlichen Dank für Antworten.
Gruß - Holger

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ist meine Frage realisierbar?
01.05.2018 17:35:13
Nepumuk
Hallo Holger,
benutze einfach ein ungebundenes UserForm.
Gruß
Nepumuk
Ja ist machbar.
01.05.2018 19:32:55
Peter(silie)
Hallo,
ja ist möglich und relativ einfach zu machen.
Für Add-In würde ich dir VisualStudio von Microsoft empfehlen.
Dort kannst du dann mit wenigen klicks, ganz einfach ein Add-In erstellen.
Das kannst du dann in C# oder VB .Net programmieren.
AW: Ja ist machbar.
01.05.2018 19:54:38
Nepumuk
Hallo,
wozu Visual Studio für über 650€ kaufen? Ein Addin kann ich auch in Excel erstellen. Bei VBA nur mit Rekorder glaube ich auch nicht dass VB.net oder C# für Holger einfacher wäre.
Gruß
Nepumuk
Anzeige
VS Community ist kostenlos und...
02.05.2018 08:20:41
Peter(silie)
hat alle Funktionen.
Man zahlt nur für die Team Features.
Ich persönlich schreibe ein Add-In lieber in C# als in VBA.
Man erziehlt einfach eine bessere performance damit.
Natürlich ist gegen eure Variante nichts einzusetzen.
Wie schon gesagt, ist nur meine persönliche Prä­fe­renz :)
Anzeige
AW: VS Community ist kostenlos und...
02.05.2018 19:58:56
Nepumuk
Hallo Peter,
ich zweifle stark daran, dass ein externes Addin in C# schneller ist als ein gut geschriebenes Addin in VBA.
Gruß
Nepumuk
AW: VS Community ist kostenlos und...
02.05.2018 21:18:13
Peter(silie)
Hallo,
stimmt und stimmt nicht.
Durch das Interop Layer, welches C# braucht, ist es überall dann signifikant langsamer,
wo stinknormale simple operationen durchgeführt werden.
Beispiele unten.
Der VBA Code unten ist wesentlich schneller und er macht auch noch mehr!
Er holt, sortiert und fügt ein.
Der C# Code holt nur.
Differenz: 0,415 Sekunden
Der Mini-Test unten erfolgte nur mit 150 Tausend Daten.
Bei Interesse kann ich auch noch einen mit 1-10 Mio. Daten machen,
allerdings kann ich da bereits jetzt versichern, dass VBA der verlierer ist.
(Habe vor kurzem erst so einen Test gemacht)
Allgemein kann man sagen, je komplexer und größer die Aufgabe, desto schlechter ist VBA.
Dennoch, bei überschaubarer Datenmenge und simplen Operationen ist VBA dem neuen C# gnadenlos überlegen, solange die Operationen lediglich in Excel Dateien ausgeführt werden.
(bei Datenverbindungen o.ä. verliert VBA wieder)
VBA 150 Tausend Daten ohne Duplikate sortiert in Combobox listen:
(0.276 Sekunden)
PS: ist nicht der Vollständige VBA Code... da kommen noch 4 kleine Subs dazu,
mehr vom Code möchte ich aber nicht zeigen.

Public Sub GetData()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Auftragsbuch")
'Bericht-Nr. ComboBox
GetComboboxValues ws, frm_BoO.cb_DatensatzRef, DBxy.ReportNumber, True, True
'Auftragsart ComboBox
GetComboboxValues ws, frm_BoO.cb_Auftragsart, DBxy.TypeOfOrder, True
'Kunde ComboBox
GetComboboxValues ws, frm_BoO.cb_Kunde, DBxy.Client, True
'Probennummer ComboBox
GetComboboxValues ws, frm_BoO.cb_Probennummer, DBxy.ProbeNumber, True
'Referenzen ComboBox
GetComboboxValues ws, frm_BoO.cb_Ref1, DBxy.Reference1, True
GetComboboxValues ws, frm_BoO.cb_Ref2, DBxy.Reference2, True
'Werkstoff ComboBox
GetComboboxValues ws, frm_BoO.cb_Werkstoff, DBxy.Material, True
'Charge/ Schmelze...
GetComboboxValues ws, frm_BoO.cb_CSE, DBxy.BatchMeltProduct, True
'Abmessung ComboBox
GetComboboxValues ws, frm_BoO.cb_Abmessung, DBxy.Dimension, True
'Artikel ComboBox
GetComboboxValues ws, frm_BoO.cb_Artikel, DBxy.ArticleDescription, True
'Bemerkung ComboBox
GetComboboxValues ws, frm_BoO.cb_Bemerkung, DBxy.Comments, True
'WPS ComboBox
GetComboboxValues ws, frm_BoO.cb_WPS, DBxy.WeldingProcessSpecification, True
'Schweiß ComboBoxen
GetComboboxValues ws, frm_BoO.cb_Schweißverfahren, DBxy.WeldingTechnique, True
GetComboboxValues ws, frm_BoO.cb_Schweißposition, DBxy.WeldingPosition, True
GetComboboxValues ws, frm_BoO.cb_Schweißer, DBxy.Welder, True
End Sub
'intermediate step for getting the Combobox data
Public Sub GetComboboxValues(ByRef OfTable As Worksheet, _
ByRef Combo As MSForms.ComboBox, _
ByVal KeyCol As Long, _
Optional ByVal bSort As Boolean = False, _
Optional ByVal bDescending As Boolean = False)
Dim cData As Variant
'Put Column Data into Array
cData = GetColumn(OfTable, KeyCol)
'If the Array needs to be sorted
If bSort Then
SortValues cData, bDescending: End If
'Pass Array to Combobox
Combo.list = cData
End Sub
'Returns the values of a Column
'Returns them with no Duplicates
Private Function GetColumn(ByRef ShData As Worksheet, _
ByVal KeyCol As Long) As Variant
Dim dict    As Object   'Latebind Dictionary
Dim lRow    As Long     'Last Row of Column xy
Dim vKey    As Variant  'Dictionary Key Variable for Loop
Dim vItem   As Variant  'Dictionary Item Variable for Loop
Dim tmp     As Variant  'temporary Array holding the Column Data
'Create a new Dictionary Object
Set dict = CreateObject("Scripting.Dictionary")
With ShData
'Get Last Row
lRow = .Cells(.Rows.Count, KeyCol).End(xlUp).Row
'Get Column Values
tmp = .Range(.Cells(2, KeyCol), .Cells(lRow, KeyCol)).value2
'Loop through the Items in tmp
For Each vKey In tmp
'remove empty spaces
vItem = LTrim(RTrim(vKey))
'Check if this Value is Valid
If vItem  vbNullString Then
dict(vItem) = vbNull: End If
Next vKey
End With
'Pass the Keys
GetColumn = dict.Keys
End Function
'Decides which Quicksort should be used
Private Sub SortValues(ByRef src As Variant, ByVal SortOrderDescending As Boolean)
'If the Values need to be in Descending Order
If SortOrderDescending Then
Quicksort_Descending src, LBound(src), UBound(src)
Else
Quicksort_Ascending src, LBound(src), UBound(src): End If
End Sub
'Quicksort for Ascending Order
'I wont explain this Code
Private Sub Quicksort_Ascending(ByRef src As Variant, _
ByVal low As Variant, _
ByVal high As Variant)
Dim i As Long: i = low
Dim j As Long: j = high
Dim tmp As String
Dim ref As String: ref = src((low + high) / 2)
Do
While (src(i)  ref): j = j - 1: Wend
If (i  j)
If (low  ref): i = i + 1: Wend
While (src(j)  j)
If (low 

C# 150 Tausend Daten unsortiert (gleiche Daten wie bei VBA!):
(0,691 Sekunden)

for (int i=1; i().ToList().ConvertAll(x => Convert.ToString(x)).ToArray();
}

Anzeige
Was kein Mensch braucht.
02.05.2018 19:43:42
Nepumuk
Hallo Luc,
fabuliere weiter an deinen, was war's schon wieder? Ich hab's vergessen, denn es ist wieder mal etwas was niemand brauch.
Deine Erklärung eines Addins ist typischerweise nur für Professoren geschrieben, deren Anzahl macht aber nur 0,00001 Prozent der Forenteilnehmer aus.
Lass dich bitte endlich gegen deinen kommunikativen Narzissmus behandeln.
LG
Nepumuk
OT: Ich frage mich ernsthaft, was dein höchst …
02.05.2018 21:49:52
Luc:-?
…unsachlicher Kommentar mit dem Inhalt unter meinem Link zu tun hat? Dass du den nicht brauchst, steht ja wohl außer Frage. :->
Aber wer, allzu menschlich, gewohnt ist, stets von eigenen Befindlichkeiten auch auf die aller Anderen zu schließen, kann dann sicher auch derartige und letztlich beleidigende Schlüsse ziehen wie du. Warst du nicht derjenige, der sich mit komplizierteren Pgm-Konstruktionen geschmückt hatte, weil's, nach seinem eigenen Bekunden, mehr hermacht als eine ebenfalls mögliche einfachere Konstruktion…‽ :->
Wenn dir weder mein Stil noch meine Herangehensweise an Xl-/VBA-Probleme passen, ist das ganz allein dein Bier! Zu den spe­ziel­len Dingen, mit denen ich mich in Xl/VBA bisher öffentlich befasste (auch hier), hattest du ja offensichtlich nichts beizutragen. Folg­lich ist es ein deutliches Zeichen zumindest ganz schlechten Stils, das nun über abwertende Kommentare ausgleichen zu wollen. Zu Vergleichbarem hatte ich mich dir ggüber bisher nicht hinreißen lassen, denn so etwas fällt letztlich oft auf einen selbst zurück!
Übrigens, wer sich tagtäglich mit PraxisPgmmierung befassen muss, dürfte kaum Zeit dafür haben, sich intensiver mit den „Abgrün­den“ von Xl und seines Zusammenspiels mit VBA zu befassen. Denn als Pgmmierer muss man ja wohl von allem (Normalen) aus­rei­chend Ahnung haben und sich deshalb kaum auf spezielle Gebiete einschränken können, um sich damit intensiver zu befassen. Ich kann es mir dagg (noch) leisten, auf ersteres zu verzichten und letzteres zu favorisieren.
Wenn sich die GrundlagenForschung auch immer danach gerichtet hätte, was zZ gerade gebraucht wurde, wäre uns evtl manches erspart geblieben, aber auf vieles würden wir heute wohl verzichten müssen…
Und ja, ich habe eine akademische Ausbildung und weiß deshalb auch, was für eine TheorieFindung wichtig ist und was zu wissen­schaft­licher Arbeit gehört und was dabei zu beachten ist — was mir in meinem längst vergangenen Berufsleben ent­spre­chen­den Respekt (auch weit­sich­ti­ger Chefs) eingebracht hatte (die Praktiker sahen mich als Theoretiker und die Theoretiker als Prak­ti­ker an - das Leben eines Borkenkäfers → was will man mehr ;-] ). Würde ich das hier immer alles berücksichtigen, würden meine Beiträge wohl noch ganz anders aussehen… :->
Und was das „Behandeln“ betrifft, habe ich zZ ganz andere Med-Probleme, die ich auch dir nicht wünsche, obwohl du deinen „Vor­schlag“ auch gern selbst aufgreifen könntest…
(Ohne LG, die dur dir bei dem Inhalt auch hättest sparen können!) Luc :-?
Anzeige
FFA: Mehrere Anzeichen sprechen dafür, ...
06.05.2018 02:10:59
Luc:-?
…dass es sich beim obigen Text um eine False-Flag-Aktion und nicht um Nepumuk, sondern eher ein Nepumukl handelt, also einen Troll, dem es gefällt, in Foren, in denen das möglich ist, Unfrieden zu stiften. Ich werde die entsprechenden Schritte unternehmen, um das unterbinden zu lassen. Ggf hat derjenige, der hinter diesem und anderen Angriffen steckt, eine Klage zu erwarten.
Luc :-?
wogegen möchtest du eigentlich klagen Luc...
06.05.2018 19:04:10
Daniel
dagegen, dass man dich als Narzissten bezeichnet?
oder dagegen dass jemand hier vielleicht einen bereits verwendeten Namen benutzt?
Gruß Daniel
Es gibt 3 Beleidigungs-§§ im BGB! owT
07.05.2018 14:10:33
Luc:-?
:-?
Auch ein unnötiger Beitrag von Daniel !
07.05.2018 18:34:09
Daniel
Sicher, aber er hatte sich ja in letzter Zeit ...
07.05.2018 23:59:20
Luc:-?
…(bis auf die „~tümer“-Diskussion, falls er das tatsächlich war) zurückgehalten, robert; ;-]
viell auch, weil ich seltener zu finden war. Aber, wenn hier ein derart hinterhältiger Troll tatsächlich sein Unwesen treiben sollte - es gab in der Vergangenheit deutliche(re) Anzeichen dafür - sollte hier jeder daran interessiert sein, dass sein Nickname, quasi seine Kennmarke, eindeutig ist und nicht missbraucht wird. Das INet ist nunmal kein rechtsfreier Raum und es gibt auch darauf speziali­sierte Anwälte und ~innen.
Mich erinnert der unintelligente Stil des hiesigen Kommentars jedenfalls stark an einen (unmotivierten) Wutausbruch und frühere anonyme bzw pseudonyme Vorkommnisse dieser Art (schon und auch im OL-Forum). Deshalb ist das wohl eher kein Gelegen­heits­Troll, sondern einer, der gezielt versucht, bestimmte Leute aufeinander zu hetzen bzw speziell mich zu provozieren, was ggf eine RacheAktion eines AllerweltsDödels sein könnte - wofür auch immer. Aber das lässt sich ja feststellen…
Viele Grüße, Luc :-?
Anzeige
NickNames
08.05.2018 10:12:40
Luc:-¿
Luc schrieb:
  • sollte hier jeder daran interessiert sein, dass sein Nickname, quasi seine Kennmarke, eindeutig ist und nicht missbraucht wird.

  • gute Idee, aber hast du einen Vorschlag, wie man in diesem Forum sicherstellen kann, dass sein Nickname eindeutig ist und bleibt?
    ...Und was soll das überhaupt sein - ...
    08.05.2018 00:42:28
    Luc:-?
    …„kommunikativer Narzissmus“? Schon der allgemeine Narzissmus-Begriff ist uneindeutig und umstritten; Zitat Wikipedia:
    So kann einerseits ein geradezu inflationärer Gebrauch des Begriffs in Alltag und Wissenschaft bemerkt werden, während andererseits keine Einigkeit über dessen konzeptionelle Grundlage besteht. Tatsächlich wird die wissenschaftliche Verwendbarkeit des Begriffs auf­grund seiner Vagheit gelegentlich in Frage gestellt.
    Der kruden Logik des Prägers dieses Begriffs zu folgen, würde bedeuten, dass jeder, der sich bemüht, Sachverhalte umfassend so zu erklären, dass dem zumindest Leute folgen können, die vom Gegenstand des Textes eine gewisse Ahnung haben, und sich dabei um Fehlerfreiheit bemüht, an jener Persön­lichkeits­störung leiden bzw diese CharakterEigenschaft besitzen würde! Darunter würden dann nahezu alle Autoren guter Literatur und auch die Verfasser wissenschaftlicher Veröffentlichungen und besonders die populär­wis­sen­schaft­li­cher Schriften fallen. So etwas gut zu können, ist eher ein Talent und keine Störung. Jemand, der das nicht kann, ist damit per sé nicht normaler, sondern hat nur dieses Talent nicht, was aber nicht ehrenrührig ist. Er (oder sie) kann trotz­dem wichtige Dinge tun u/o Bedeutendes leisten. Damit habe und hatte ich auch nie ein Problem. Umgekehrt scheint aber der Troll ein Problem zu haben! Und so mancher psychopathische Egoist oder Egozentriker kann an führender Position großen Schaden ver­ursachen, ohne deshalb irgendwie landläufig-narzisstisch in Erscheinung zu treten. Im Gegenteil, solch Verhalten wird allzuoft mit Füh­rungs­stärke und Kompetenz verwechselt und die Gesellschaft fördert und belohnt solch Verhalten auch noch, ja bildet es sogar erst heraus…
    Luc :-?
    Anzeige
    AW: Dank euch allen ... mT
    01.05.2018 22:00:42
    Holger
    ... dann hab ich eine schöne Beschäftigung meine Idee zu verwirklichen. Mal schauen wie weit ich komme. Bis bald,
    LG, Holger
    AW: Vorschlag von Nepumuk mit Userform
    02.05.2018 11:42:32
    Nepumuk
    Hallo Holger,
    hier ist eine Musterdatei, wie von Nepumuk vorgeschlagen (am 01.05.18), mit einer Userform, in der ein Label mit Textinhalt, eingebunden ist. Wenn die Userform aktiviert wird (rotem Knopf in Tabelle1klicken), erscheint sie. Du kannst das 2. Tabellenblatt aktivieren und die Userform bleibt dennoch sichtbar und du kannst natürlich in Zellen etwas eingeben, obwohl die Userform nicht geschlossen ist.
    Gruß, Dieter(Drummer)
    Musterdatei: https://www.herber.de/bbs/user/121393.xlsm
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige