![]() |
Anzeige:
|
|
|||||||
| Visual Basic, Visual Basic.NET Alles zum Thema - Visual Basic und Visual Basic.NET
Fragen zu VBA bitte in das Forum Office-Anwendungen posten! |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 24.11.2006
Beiträge: 9
|
Guten Tag
Situation Ich habe einen simplen Command1 ( Button ) wenn ich den doppel klicke geht das cod fenster auf und ich kan codieren. wenn ich jetzt zum Beispiel codiere, dass wenn ich auf den button klicke die Caption des buttons um +1 erhöht werden soll, und dies bei jedem klick, dann geht dies bei mir nicht und zwar aus folgendem grund. Wenn die Subroutine am ende ist, und eigendlich wieder auf den nächsten klick warten sollte geht sie ins nirvana, ich habe noch kein While (1) würde man in der Programmiersprache C sagen. Meine Frage nun: Wieso geht das Programm nach der subroutine nicht wieder dor hin zurück und wartet auf die nächste aktion? |
|
|
|
|
|
|
#2 (Direktlink) | |
|
Weiß worum´s geht
![]() Registriert seit: 09.08.2004
Ort: München
Beiträge: 243
|
Ich versteh nicht so ganz was du meinst . Ich nehm mal an du willst dass bei jedem klick die command button caption erhöht wird ?
Zitat:
|
|
|
|
|
|
|
#3 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 24.11.2006
Beiträge: 9
|
ja genau das meine ich
danke für die Prägnanz |
|
|
|
|
|
#4 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 24.11.2006
Beiträge: 9
|
aber eben genau das funktioniert bei mir nicht, weil das programm die funktion nur nach dem ersten cklick ausführt und die weiteren einfach nicht mehr beachtet.
|
|
|
|
|
|
#5 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 17.08.2005
Beiträge: 104
|
Hi !!
Setz mal einen Haltepunkt um zu sehen was passiert !! mfg ARCUS_L
__________________
Schweigen ist die unerträglichste Erwiderung. Gilbert K. Chesterton |
|
|
|
|
|
|
#6 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 24.11.2006
Beiträge: 9
|
nun den halte punkt in der subroutine habe ich schon gesetzt und musste feststellen das die subroutine korrekt abgearbeitet wird.
das problem ist wo kann ich einen halte punkt nach der subroutine, also nach END SUB setzen |
|
|
|
|
|
#7 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 17.08.2005
Beiträge: 104
|
Hi !!
Wenn du einen Haltepunkt hast kannst mit F8 Einzelschritte ausführen , also immer eine Befehlszeile nach der anderen, so solltest DU feststellen können wo dein Fehler liegt, oder poste einfach deinen Code. So ist es etwas schwierig den Fehler zu finden !! mfg ARCUS_L
__________________
Schweigen ist die unerträglichste Erwiderung. Gilbert K. Chesterton |
|
|
|
|
|
#8 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 24.11.2006
Beiträge: 9
|
Ich habe mir gedacht das mein anliegen etwas schwierig wird.
also das problem ist nicht mein cod sonder, dass nachdem die Subroutine ausgeführt wurde der cursor ins nirvana geht. debugen funz nicht weil ich dort gar kein cod habe im nirvana. aber hier mein Cod Private Sub BTNStart_Click() Summe = Timer1 + 1 Timer1 = Summe BTNStart.Caption = Timer1 End Sub |
|
|
|
|
|
#9 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 28.11.2006
Beiträge: 19
|
Ich versteh nicht so ganz wofür der Timer da sein soll.
Wenn ich das richtig verstehe soll der Wert den der Timer hat bei Klick auf dem Button erscheinen. Ich habe deinen Code mal so ausprobiert wie er dort steht. erstmal die Frage ist das dein vollständiger Code? Bei mir erscheint auf klick auf den Button immer entweder "True" oder "False", immer im wechsel. Wenn noch etwas fehlt bitte posten. Ich versuche derweil der Lösung etwas näher zu kommen edit: Wenn du möchstest das sich pro Klick das Caption (also meinetwegen "1" bei Klick auf "2" erhöht dann emfehle ich dir folgenden Code: Code:
Private Sub cmd1_Click() 'cmd1 ist bei mir was bei dir was bei dir der BTNstart ist cmd1.Caption = cmd1.Caption + 1 End Sub Ich hoffe ich habe deine Problematik getroffen Gruß Merkur! |
|
|
|
|
|
#10 (Direktlink) | |
|
Weiß worum´s geht
![]() Registriert seit: 17.08.2005
Beiträge: 104
|
Zitat:
Dein Code wird nur funktionieren wenn "Option Explicit" (Variablendklaration erfoderlich ) nicht eingeschaltet ist. Sonst hättest du sofort die Fehlermeldung "Variable nicht definiert " das solltest Du eigentlich wissen nachdem du im ersten Beitrag schon "C" zitiert hast. "C" ist da nicht so nachsichtig wie VB. So nun zum Code : Da keine Variable deklariert ist ist der inhalt von Timer1 und Summe Nothing also Leer. Nach dem Klick zählst du Zu nichts(Timer1) 1 dazu und schreibst es in Summe dadurch ist der Wert von Summe 1. Nun schreibst du Summe in Timer1 dadurch sind die Werte von Summe und Timer1 1. nun noch Timer1 auf die Caption Eigenschaft des Command Buttons womit dort auch 1 steht. Und genau das wird bei jedem Klick auf den Button passieren, es wird immer 1 in der Capition Eigenschaft stehen egal wie oft du drauf klickst. Das wäre dir sicher aufgefallen hättest du einen Haltepunkt bei "Private Sub BTNStart_Click() " gesetzt und mit "F8" einzelschritte ausgeführt !! Solltest du aber doch die Variablen deklariert haben wird genau das eintreten was Merkur schon geschrieben hat ein wechsel zwischen True und False. mfg ARCUS_L
__________________
Schweigen ist die unerträglichste Erwiderung. Gilbert K. Chesterton |
|
|
|
|
|
|
|
#11 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 24.11.2006
Beiträge: 9
|
Nun ich möchte eigentlich niemanden verärgern, ich bin ein absoluter anfänger was VB anbelangt.
nun das häcklein ist nicht drin das heisst doch das ich die Variablen nicht deklarieren muss? Der Cod von Merkur funz nicht, es gibt ne fehler meldung Laufzeit fehler '13' Typen unverträglich Ist es so das die Variablen, da sie niergens deklariert sind, bei jedem cklick wieder auf null gesetzt werden? |
|
|
|
|
|
#12 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 28.11.2006
Beiträge: 19
|
also bei mir funzt der sowas von
Vielleicht hast du dann irgendwo einen anderen Namen o.ä., dass das deswegen nicht geht. Code:
Private Sub BTNStart_Click() BTNStart.Caption = BTNStart.Caption + 1 End Sub Also nochmal Code posten und dann schauen wir weiter![/url] |
|
|
|
|
|
#13 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 17.08.2005
Beiträge: 104
|
Hi !!
Was auch klar ist das es nicht funktioniert da du jetzt "Option Explicit" eingeschaltet hast. Hier wird versucht zu einem String, in diesem Fall BTNStart.Caption , 1 dazuzuzählen nachden 1 aber vom Typ Integer ist kommt die Fehlermeldung Typen unverträglich Code:
Private Sub BTNStart_Click() BTNStart.Caption = BTNStart.Caption + 1 End Sub Code:
Option Explicit Private iZähler As Integer Private Sub BTNStart_Click() iZähler = iZähler + 1 BTNStart.Caption = CStr(iZähler) End Sub
__________________
Schweigen ist die unerträglichste Erwiderung. Gilbert K. Chesterton |
|
|
|
|
|
#14 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 28.11.2006
Beiträge: 19
|
Ich habe gar nichts deklariert. Das geht.
Wenn du den Caption Wert zu anfang auf 1 oder 0 setzt dann addiert der mit dem Code pro klick einen dazu!!! |
|
|
|
|
|
#15 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 17.08.2005
Beiträge: 104
|
Hi !!
Das ist mir schon klar das es so auch funktioniert !! Aber du solltest beachten das VB eine nicht deklarierte Variable selbst mit dem Typ Variant anlegt. Was ja eigentlich super ist. Wenn man aber weis das eine Integer Variable nur 2 Bytes des Speichers benötigt , eine Variant Variable aber 22 Bytes ist das schon nicht mehr so super. In diesem Programm spielt das mit Sicherheit keine Rolle solltest du aber einmal umfangreichere Programme mit einigen 100 oder mehr Variablen schreiben dan kannst du dir ausrechnen welchen Unterschied das in deinem Arbeitsspeicher ausmacht !! mfg ARCUS_L
__________________
Schweigen ist die unerträglichste Erwiderung. Gilbert K. Chesterton |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|