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

VBA Programmierung

VBA Programmierung
Mirko
Hallo hatte weiter unten schon mal einen Beitrag eingestellt hoffe es findet sich noch jemand der mir einen Einstieg ermöglicht in VBA
Habe ein Userform erstellt siehe Datei -- noch geht es nur per Klick auf Start -- es soll aber wenn fertig ist (und ich es hinbekomme) automatisch gestartet werden, passieren soll bei Klick auf 1-7 eigentlich nur eine Anzahl gezählt werden (bei Klick 1, 1+1, 1+1+1 ......) wo Zeiten hinterlegt sein sollen die als Gesamtzeit in dem Leeren Textfeld oder so angezeigt werden soll.
weiterhin sollte bei Klick auf Start so eine Art Stop Uhr laufen d.h es könnte auch ein Timer sein -- die gebrauchte Zeit für den Vorgang soll in dem oberen leeren Feld angezeigt werden und mit Clear soll der Timer wieder gelöscht werden
ist das alles möglich wenn ja wo kann ich Hilfen dazu finden und vielleicht kann mir jemand Hilfestellung geben wie ich das Projekt anfangen soll wäre es so möglich wie es jetzt aussieht oder verlangt das Projekt hervorragende Kenntnisse in VBA voraus .... will das auch lernen
Danke und Gruss Mirko

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Programmierung
11.10.2009 23:25:17
Thomas
Hallo Mirko,
ich denke für dieses Projekt brauchst Du keine riesigen VBA-Kenntnisse. Ich bin auch kein VBA-Profi und habe Dir trotzdem hier mal eine Lösung dargestellt. Ich denke Du kannst die einzelnen Schritte nachvollziehen, natürlich benötigst Du trotzdem eine gewisses Grundwissen über den VBA-Syntax.
Wenn Du eine mitlaufende Stopuhr möchtest findest Du in diesem Forum einige Lösungen, jedoch wird das Projekt dadurch um einiges komplizierter. Meine Lösung stellt lediglich die Differenz zwischen Start und Stop dar, ist aber dadurch auch sehr einfach nachzuvollziehen.
https://www.herber.de/bbs/user/65036.xls
Je nach nach deinen Anforderungen kann man auf diesem Makro noch einiges mehr aufbauen.
Gruß
Thomas
Anzeige
AW: VBA Programmierung
12.10.2009 21:23:11
Mirko
Hallo Thomas
super super super ich habe es eben mal schnell gestartet ist so wie ich mir vorgestellt habe ich schaue mir mal gleich die VBA`s an um es ggf noch zu optimieren
Glech noch eine Frage dazu was muss ich tun damit nur das Formular startet und nicht die Tabelle im Hintergrund
Vielen Dank Gruss Mirko
AW: VBA Programmierung
13.10.2009 21:02:14
Thomas
Hallo Mirko,
wenn Du die Tabelle nicht anzeigen willst mußt Du in der Arbeitsmappe vor den Aufruf der Userform
den Befehl Application.Visible = False eingeben.
Private Sub Workbook_Open()
Application.Visible = False             ' Macht Excel unsichtbar
UserForm1.Show
End Sub
Da hierdurch Excel unsichtbar wird hast Du den Effekt, dass wenn Du die Userform schließt, Du Excel nicht siehst, es aber noch läuft --> Wenn Du die Datei neu aufrufts bekommst Du mitteileung, dass Sie schon geöffnet ist.
Daher mußt Du, wenn Du die Userform schließt auch gleichzeitig Excel schließen. Hierfür mußt Du im Userform-Menu folgendes Sub einfügen:
Private Sub UserForm_Terminate()
Application.DisplayAlerts = False            Verhindert die Abfrage "Änderungen speichern"
Application.Quit                                      Schließt Excel
End Sub
Dies bewirkt natürlich nun, dass Du Deine Datei nicht mehr siehst und auf diese nicht mehr zugreifen kannst. Wenn du dies möchtest mußt Du beim Aufruf der Datei in Deinen Sicherheitseinstellungen Makros unterbinden.
Mein Makro löscht derzeit immer die Tabelle , wenn Du über Deinen 'Start'-Button die Userform neu startest. Da Du nun diesen Button nicht mehr sieht schlage ich Dir vor einen neuen Command-Button 'Neustart' in der userform hunzuzufügen, der bei Click die Userform neu startet: userform_initialize und damit auch Deine Tabelle wieder löscht.
Gruß
Thomas
Anzeige
AW: VBA Programmierung
14.10.2009 19:46:39
Mirko
Hallo Thomas
dies werde ich auch noch probieren, jetzt habe ich mir erstmal die Button aus der Userform in die Tabelle eingebettet mit den gleichen Sub`s und ein bischen erweitert, gleich noch eine Frage dazu --siehe Datei --
kann ich (über diese Button 1-7 im Hintergrund eine vorher mit Strg C kopierte Nummer einfügen in eine Tabelle mit Spalte 1-7 (wenn diese Nummer nicht 10 stellig ist muss eine Fehlermeldung kommen und es darf dann auch nicht die Zeit und Anzahl gezählt werden) ist sowas machbar und natürlich diese gespeicherte Tabelle dann auch ausdruckbar (aber unsichtbar)
DANKE und Gruss Mirko
Anzeige
AW: VBA Programmierung
14.10.2009 21:38:22
Mirko
sorry Datei vergessen es soll in Tabelle 2 geschrieben werden die 10 stellige Zahl und ein Button muss noch dazu das die Tabelle 2 ausdruckbar ist und dann zurück gesetzt werden kann und die Tabelle 2 muss unsichtbar sein
Gruss Mirko
AW: VBA Programmierung
17.10.2009 08:15:21
Thomas
Hallo Mirko,
Jetzt forderst Du auch meine begrenzten VBA-Kenntnisse. Die Geschichte mit der Üernahme des Zwischenspeichers habe ich hier im Forum mal etwas recherchiert. und habe es auch ausprobiert:
Um Daten aus der Zwischenablage zu übernehmen mußt du erst einen Verweis auf die Microsoft Forms 2.0 Object Libraray setzten.
Hier ein Makro das von Nepomuk hier im Forum zur Verfügung gestellt wurde:
Public Sub prcCheckReverence()
Dim intIndex As Integer
Dim blnFound As Boolean
With ThisWorkbook.VBProject.References
For intIndex = 1 To .Count
If .Item(intIndex).GUID = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}" Then
blnFound = True
If .Item(intIndex).IsBroken Then
.Remove .Item(intIndex)
.AddFromGuid GUID:="{0D452EE1-E08F-101A-852E-02608C4D0BB4}", _
Major:=2, Minor:=0
End If
End If
Next
If Not blnFound Then _
.AddFromGuid GUID:="{0D452EE1-E08F-101A-852E-02608C4D0BB4}", _
Major:=2, Minor:=0
End With
End Sub
Um diese Makro zum Laufen zu bringen mußt Du jedoch Deine Sicherheitseinstellungen ändern:
Unter Excel 2003 : "Extras - Makros - Sicherheit - Vertrauenswürdige Herausgeber - Zugriff auf VB-Projekt vertrauen"
Unter Excel 2007 : "Office-Logo - Excel-Optionen - Vertrauensstellungscenter - Einstellungen für das Vert. - Einstellungen für Makros - Zgriff auf das VB-Projektmodell vertrauen"
(von NoNet aus einem Forumsbeitrag vom 06.11.08)
Danach kannst Du nun die Zwischenablage übernehmen:
(von Lutz Schnalke ausForums Beitrag vom 14.12.2002)
Sub einfügen()
' Dim KdNrText As String ' Habe ich als Public herausgezogen um weiter famit arbieten zu können
Dim KdNr As DataObject
Set KdNr = New DataObject
'Kd.Nr. aus Zwischenablage in DataObject und von dort
'im Variable KdNrText übernehmen
KdNr.GetFromClipboard
KdNrText = KdNr.GetText()
'Kd.Nr. aus Variable in DataObject
'und von dort in Zwischenablage
KdNr.SetText KdNrText
KdNr.PutInClipboard
nummer
End Sub
Sub nummer() 'wandelt den string KdNr in eine Zahl
' Dim zahl As Long
' Dim stellen As Boolean ' als Public vorgezogen, damit in userform verwendet werden kann
stellen = False ' wird gesetzt damit auch bei anderem Fehler (siehe nächste Zeile) das Programm
' nicht gestartet wird
On Error Resume Next 'verhindert Fehlermeldung wenn Zwischspeicher kein Zahl war
zahl = CLng(KdNrText) 'wandelt String in Zahl
If 1000000000 'Nummer nicht mit 0 beginnt
stellen = True
End If
End Sub
Nun hast Du die Variable 'stellen' mit der Du deine Userform steuern kannst:
in userform_initialize einfügen
If stellen = False THEN
Msgbox "Fehlermeldung"
CommandButton1.Enabled = False
CommandButton2.Enabled = False
CommandButton3.Enabled = False
.......
ELSE
CommandButton1.Enabled = True
........
End If
Um nun die Nummer in Tabelle einzufügen mußt du deine CommandButton_Clicks entsprechend erweitern
Private Sub CommandButton1_Click()
Worksheets("Tabelle1").Cells(5, 9) = Cells(5, 9) + 1
Worksheets("Tabelle2")Cells(2,1) = zahl
aktualisieren
End Sub

....
Wenn Du eine Tabelle ausblenden willst muß Du an den Beginn Deines Codes einfach
Worksheets("Tabelle2").Visible = False einfügen zum wieder einblenden entsprechend ..=true
Dies ist natürlich viele einfacher als das komplette ausblenden von Excel überdas wir vorher geschrieben haben.
Zum Ausdrucken mußt du Tabelle2 wieder aktivieren, Du kannst die Ansicht jedoch unterdrücken. Siehe folgendes Sub
Sub drucken()
Dim lauf As Integer
Application.ScreenUpdating = False ' schaltet Bildschirmaktualiserung aus
Worksheets("Tabelle2").Visible = True ' macht Tabelle 2 sichtbar (sicht man jedoch nicht wegen Zeile vorher)
Worksheets("Tabelle2").PrintOut ' druckt tabelle aus
For lauf = 1 To 7 ' setzt Tabelle 2 zurück
Worksheets("Tabelle2").Cells(2, lauf) = ""
Next lauf
Worksheets("Tabelle2").Visible = False ' macht Tabelle2 wieder unsichtbar
Application.ScreenUpdating = True ' schaltet Bildschirmaktualisierung wieder ein
End Sub
Ich hoffe ich konnte Dir hiermit etwas helfen.
Gruß
Thomas
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige