Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1792to1796
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
VBA User Form Tastatur bauen
19.11.2020 09:22:24
Excelaner
Hi Leute,
ich habe hier schon erfahren, wie man die Bildschirmtastatur über VBA aktivieren kann.
Leider sind die Buchstaben darauf ziemlich klein, diese kann man auch nicht vergrößern. Und man kann hier auch die Windows-Taste usw. drücken, möchte ich auch nicht.
Ich habe zwar gelesen, dass manche ihre eigene Tastatur über ein Userform gebaut haben, leider habe ich gar keine Ahnung wie das gehen soll.
Es sind drei Textboxen die befüllt werden müssen, das heißt, je nachdem welche Textbox ich auswähle sollte die Tastatur sich automatisch öffnen und nur Buchstaben und Zahlen zur Verfügung stehen. Das was getippt wird, sollte dann nur in dem ausgewählten Textbox ersichtlich sein.
Hat jemand eine Idee?
Danke euch schmal im Voraus!

31
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA User Form Tastatur bauen
19.11.2020 10:28:36
Nepumuk
Hallo Excelaner,
bau bitte das Userform mit der Tastatur (nur du weißt wie sie aussehen soll) und lade sie hoch. Den Rest baue ich dir dann ein.
Gruß
Nepumuk
AW: VBA User Form Tastatur bauen
19.11.2020 15:47:10
Excelaner
Hi Nepumuk,
du schon wieder :) Danke dir!
Das heißt, du brauchst nur ein Userform von mir, aufgebaut als Tastatur? Oder die komplette Datei mit den anderen Textboxen?
AW: VBA User Form Tastatur bauen
19.11.2020 15:49:15
Nepumuk
Hallo Excelaner,
nein, nur die Tastatur.
Gruß
Nepumuk
AW: VBA User Form Tastatur bauen
19.11.2020 22:32:06
Excelaner
Hi Nepumuk,
ich habe mich am Beispiel von Daniel orientiert und die Tastatur als Vorlage genommen.
Layout kann ich ja jederzeit noch anpassen. Wichtig ist für mich nur, dass die Tastatur für unterschiedliche Textboxen verwendet werden kann, je nachdem welche Box man auswählt.
Danke dir im Voraus!!
https://www.herber.de/bbs/user/141719.xlsm
Anzeige
AW: VBA User Form Tastatur bauen
22.11.2020 16:03:33
Excelaner
Hi Nepumuk,
du bist einfach der Herr der Tastaturen :)
Vielen Dank!! Ist natürlich so schnell und einfach zu schreiben wie die "original" Bildschirmtastatur von Microfost, aber das habe ich auch nicht erwartet.
Nur eine Frage, ist die Eingabe auch in Containerboxen möglich?
VIELEN DANK NOCHMALS!!
Anzeige
AW: VBA User Form Tastatur bauen
22.11.2020 16:13:01
Nepumuk
Hallo Excelaner,
was soll ich mir unter "Containerboxen" vorstellen?
Gruß
Nepumuk
AW: VBA User Form Tastatur bauen
22.11.2020 16:50:35
Excelaner
Hi Nepumuk,
nennt man die nicht Containerboxen? :)
Die sind doch ähnlich wie Textbox nur mit einer Dropdown-Liste Funktion, wo man entweder etwas reinschreiben kann oder aus der Liste etwas auswählen kann.
Geht das auch mit dene?
AW: VBA User Form Tastatur bauen
22.11.2020 16:57:50
Nepumuk
Hallo Excelaner,
du meinst eine ComboBox. Ja das geht.
Gruß
Nepumuk
AW: VBA User Form Tastatur bauen
23.11.2020 13:22:47
Excelaner
Hi Nepumuk,
und was müsste ich dafür anpassen?
AW: VBA User Form Tastatur bauen
23.11.2020 14:05:27
Nepumuk
Hallo Excelaner,
Das Activate-Event des UserForms, sowie die CommandButton-Klasse und die TextBox-Klasse.
Gruß
Nepumuk
Anzeige
AW: VBA User Form Tastatur bauen
19.11.2020 10:28:49
Daniel
Hi
die Tastatur kann sich im unteren Bereich befinden.
Ob die Tastatur sichtbar ist, regelst du über die Höhe der Userform (Userform1.Height), indem du dieses zuerst so setzt, dass der Wert kleiner ist als die obere Top-Position der Tastatur, und wenn sie sichtbar sein soll, größer als die unteres Top-Postion + Höhe der Taste.
wie du die Tastatur gestaltest, hast du auch mehrere Möglichkeiten.
a) du kannst für jede Taste einen Button anlegen und in dessen Klick-Event den jeweiligen Buchstaben (die Caption der Userfom) in die zuletzt angewählte TextBox schreiben
damit du nicht für jeden Button ein Klick-Event-Makro erstellen musst, solltest du dich mit Klassenprogremmierung beschäftigen
b) du erstellst die gesamte Tastatur als eine Grafik und bindest diese in deine Userform ein.
über das MOUSEUP oder MOUSEDOWN-Event der Grafik kannst du die KLlick-Position über der Grafik bestimmen (X und Y) und daraus ermitteln, (z.B. über eine Tabelle) wo der Klick stattgefunden hat und welche Taste gemeint war.
Dabei ist es hilfreich, wenn die Tasten alle gleich groß und regelmäßig angeordnet sind.
Gruß Daniel
Anzeige
AW: VBA User Form Tastatur bauen
19.11.2020 10:55:56
Nepumuk
Hallo Daniel,
das Bild einer Tastatur halt ich für nicht handelbar. Alleine für 10 Nummerntasten brauchst du 40 hart kodierte Koordinaten.
Gruß
Nepumuk
AW: VBA User Form Tastatur bauen
19.11.2020 11:18:02
Daniel
je nach dem.
wenn die Tasten gleich groß sind regelmäßig angeordnet sind (Schokoladentafel), kann man auch einfach rechnen.
bei einer Telefontastatur (4x3) beispielsweise so
Int(X/Tastenbreite)+Int(Y/Tastenbreite)*3 ergibt je nach Klickposition eine Zahl von 0-11, dh du musst dann nur jedem auszugebenden Wert eine Zahl von 0-11 zuordnen, das geht dann relativ einfach über ein Array oder eine Exceltabelle.
dh mit einzelnen Koordinaten muss man sich - Regelmäßigkeit vorausgesetzt - nicht rumplagen.
anders siehts natürlich aus, wenn die Tastatur unregelmäßig sein sollen und nicht ins Schokoladentafelraster passen.
Allerdings, wenn man (so wie ich) die Klassenprogrammierung nicht kapiert, dann muss man sich halt was anderes Einfallen lassen, wenn man nicht für jede Taste ein Klick-Event-Makro schreiben will.
Gruß Daniel
Anzeige
AW: VBA User Form Tastatur bauen
19.11.2020 11:29:14
Nepumuk
Hallo Daniel,
dann musst du noch berücksichtigen ob der Benutzer als Auflösung 100%, 125% oder 150% gewählt hat. Es ist viel einfacher CommandButtons zu verwenden.
Gruß
Nepumuk
AW: VBA User Form Tastatur bauen
19.11.2020 11:58:40
Daniel
Wenn man fleißig ist, ja.
AW: Die Faulen....
19.11.2020 18:20:10
Daniel
hast du das mit der Anleitung zum Laufen gebracht?
hier mal ein Beispiel für eine individuell gestaltbare Tastatur mit minimalem Codeaufwand ohne Klassenprogrammierung.
von der Tastatur in Excel muss man einen Screenshot machen (möglichst genau ausschneiden) und ins Imagecontrol einfügen.
Gruß Daniel
Anzeige
Userform-Tastatur mit minimalem Aufwand
19.11.2020 19:07:58
Daniel
und minimalem notwendigen Wissen
sorry jetzt mit Datei
https://www.herber.de/bbs/user/141715.xlsm
Es wäre auch denkbar, das Bild per Buttons zu vergrößern oder zu verkleinern um es an die Bildschirmauflösung und den eigenen Bedarf anzupassen, die Zuordnung von Klickpunkt zu Taste sollte auch dann gegeben sein.
Gruß Daniel
AW: Die Faulen....
19.11.2020 19:22:11
Mullit
Hallo Daniel,
ja, easy, aber eigentl. braucht ich gar nix zum Laufen bringen ;-), einfach die letzte Bsp.-Datei runtergeladen, geöffnet und dann schwebt sie einem schon entgegen...;-)
Userbild
Gruß, Mullit
Anzeige
AW: Die Faulen....
19.11.2020 19:46:34
Daniel
ich dachte eigentlich, du meinst den ersten Beitrag des Codes.
Warum ausgerechnet die letzte beispieldatei?
ja klar, fertige Sachen kopieren ist immer einfach.
verstehst du den Code dahinter und kannst das selber programmieren wenn du es nicht irgendwo runterladen könntest?
könntest du mir erklären, wie das funktioniert bzw, wie lange bräuchtest du dazu?
Gruß Daniel
AW: Ja, kann ich alles....
19.11.2020 20:38:47
Mullit
...und noch viel mehr, aber nu dreh mal nich am Rad, ich hab hier nur spaßeshalber einen Bsp-Link eingestellt, gerade weil es einfach ist, freut sich der TO...kann schließlich jeder mit rumbasteln wie er lustig ist, ah ja, die letzte Datei natürlich, weil es die letzte Entw.-Version ist, sollte klar sein und steht ja im Thread...;-)
Gruß, Mullit
Anzeige
AW: Ja, kann ich alles....
19.11.2020 21:19:09
Daniel
ok fangen wir mal oben an:
was bedeutet das, warum muss man das programmieren und woher weiß man, was man da tun muss?
Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd  _
As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd  _
As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal  _
hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName  _
As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function GetActiveWindow Lib "user32.dll" () As Long
Private Declare PtrSafe Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As  _
Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hwnd As Long) As Long
klar ,solange man das irgenwo kopieren kann, ist alles easy, aber man will ja auch verstehen, was man da macht.
Anzeige
AW: Sorry Daniel, aber....
19.11.2020 21:59:40
Mullit
...für Api-Nachhilfe isses mir heut zu spät, aber klick mal auf den Min-Button der Form, dann siehst Du den Effekt der Funktionen, Du kannst ja mal als erste Übungseinheit versuchen, die LongPtr Deklarationen für den 64-bit Part zu ergänzen, die fehlt nämlich noch...Nebenbei, die Erklärung steht auch in den Kommentaren im Code, mußt halt lesen...;-)
Private Sub UserForm_Activate()
AddIcon    'Add an icon on the titlebar
AddMinimiseButton   'Add a Minimize button to Userform
AppTasklist Me    'Add this userform into the Task bar
End Sub

Gruß, Mullit
AW: Sorry Mullit aber "API" was ist das?
19.11.2020 22:03:55
Daniel
Ich hab da keine Ahnung von, das müsstest du mir schon genauer erklären.
Danke für deine Bemühungen.
Gruß Daniel
AW: ...danichfür...Gruß, Mullit owT
19.11.2020 22:09:29
Mullit
AW: ...danichfür...Gruß, Mullit owT
19.11.2020 23:03:31
Daniel
OK, dann erklärst du mir (und allen anderen Mitlesern) das ohne dass ich mich dafür bedanken muss?
Ts, ts, ts, oft hier genannt u.gezeigt, ...
20.11.2020 02:21:19
Luc:?
…Daniel;
lies wenigstens selbst, wenn du schon nicht googeln willst…
https://de.wikipedia.org/wiki/Programmierschnittstelle
Mit Declare macht man die API-Fktt des BS/OS (Windows) bzw ggf auch anderer Software mit dgl nutzbar.
Morhn, Luc :-?
AW: Ts, ts, ts, oft hier genannt u.gezeigt, ...
20.11.2020 10:27:25
Daniel
wie hoch schätzt du den Zeitaufwand ein, den man aufwenden muss wenn man von API keine Ahnung hat, bis man brauch um sowas selber programmieren zu können?
ist sowas wirklich "einfach", wenn man kein ausgebildeter Programmierer ist sondern Laie und Autodikakt (also die Menschen, die hier fragen?)
Die Herren, die so etwas zeigen, ...
21.11.2020 04:14:47
Luc:?
…Daniel,
bieten idR FertigLösungen an, weil sie das können. Ich wollte meine Pgmm bisher nicht zusätzlich von so etwas abhängig machen, obwohl damit sicher interessante Möglichkeiten gegeben sind, die allerdings wohl mehr auf eher technisch-gestalterischem Gebiet liegen. Normale VBA-Möglichkeiten (mit wenigen Ergänzungen) reichen mir völlig, denn ob das, was man auf Fktsgebiet nicht vollständig mit VBA nachgestalten kann, mit API-Nutzung gelingen würde, ist doch sehr fraglich. Insofern hatte mich das auch nicht sonderlich interessiert, aber deshalb weiß ich doch, worum's hierbei geht und muss mich nicht ahnungslos stellen.
Was das Erlernen betrifft, dürfte das auch nicht schwerer sein als VBA generell. Es geht ja in 1.Linie darum, wie man Fktt aus einer solchen Bibliothek nutzbar macht, also eine Art Pendant zu Include-Anweisungen anderer Sprachen, nur etwas aufwendiger.
Morhn, Luc :-?

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige