VB Multiplichoice mit Summenberechnung im Ergebnis, Vorzugsweise EXEL

  • Excel

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von Kathleen.

    VB Multiplichoice mit Summenberechnung im Ergebnis, Vorzugsweise EXEL

    Hey leute,
    Ich versuche derzeit ein Programm zu schreiben, welches ein Multiplichoice Quiz darstellt. Bisher(ich bin in der Auswertung und zusammenrechnug der Einzelergebnisse) hat alles gut gegangen, doch nun streikt VB. Dazu sei gesagt, dass ich nicht viel über VB weiß und mir alles selbst zusammengreimt habe. Sollten also Fehler in meinem Code sein, so bitte ich, mir diese aufzuzeigen, damit ich das Programm möglichst optimieren kann.

    Mein Programm baut sich derzeit folgendermaßen(Aufrufreihenfolge)auf:
    1. Quiz1-> sagt TextBox"Text1" in Formular "ErgebnisQuiz" es soll dessen Text Eigenschaft auf gegebenen Wert setzen
    2. Quiz1 wird durch commandButton Abfolge gehidet und Quiz2 aufgerufen(show)
    3. (Das geht wie bei Quiz1 so weiter(bis Quiz9) nur dass das Text feld höhere werte-Bis 8- zugewiesen bekommt)
    4. ... ErgebnisQuiz wird aufgerufen und die Textfelder 1 bis 9 zeigen die richtigen Werte. Soweit so gut.
    5. ErgebnisQuiz hat noch ein Textfeld indem die Summe der Byte werte von den textfeldern 1 bis 9 angeben soll. Nur scheitert diese Anzeige immer wieder aufs neue, es erscheint nie ein wert.

    Ich habe schon versucht diese Werte von den einzelnen Quiz frm an einen Public Sub in ErgebnisQuiz zu übergeben, doch was ich auch tue, kein Erfolg. folgendes hab ich bereits versucht:

    Call ErgebnisQuiz!QuizErgebnis (Frage1 As Integer) ' VB sagt: ! muss . sein und nach Frage1 muss entweder Listentrennzeichen oder ) kommen'

    Call ErgebnisQuiz.QuizErgebnis (ByVal Frage1 As Integer) ' VB sagt: nach Frage1 muss listentrennzeichen oder ) kommen, sowie: Typen unverträglich(dabei hat er ByVal markiert)

    Call ErgebnisQuiz.QuizErgebnis (Frage1) ' VB sagt: RefVal Typen unverträglich

    Aus Frust hab ich ihm dann einfach das Argument in Doppelklammern gesetzt damit er erzwungen wird und dann motzt er mich an: Argument nicht Optional

    :cursing: Ich könnt den manchmal. hier die verschiedenen Codes. hab die frm dazugeschrieben, einmal von 0 oder 1 Wert (Quiz1) und einmal mehr Antworten (Quiz3) sowie das ErgebnisQuiz. Solltet ihr euch über QuizErgebnis wundern, so hab ich den Public Sub benannt.

    Visual Basic-Quellcode

    1. (frmQuiz1)
    2. Public Sub Ergebnis()
    3. Frage = Frage + 1
    4. End Sub
    5. Public Sub Richtig1()
    6. ErgebnisQuiz!Text1.Text = 1
    7. Call Ergebnis
    8. End Sub
    9. Public Sub Falsch1()
    10. ErgebnisQuiz!Text1.Text = 0
    11. End Sub
    12. Public Sub Richtig2()
    13. ErgebnisQuiz!Text2.Text = 1
    14. Call Ergebnis
    15. End Sub
    16. Public Sub Falsch2()
    17. ErgebnisQuiz!Text2.Text = 0
    18. End Sub
    19. Private Sub cmdSpeichern_Click()
    20. cmdWeiter.Enabled = True
    21. End Sub
    22. Private Sub cmdWeiter_Click()
    23. Call ErgebnisQuiz.Ergebnis(Summe, Frage)
    24. Quiz1.Hide
    25. Quiz2.Show
    26. End Sub
    27. Private Sub Form_Load()
    28. Dim Frage As Integer
    29. Frage = 0
    30. ErgebnisQuiz!Text1.Text = 0
    31. ErgebnisQuiz!Text2.Text = 0
    32. End Sub
    33. Private Sub Option1_Click()
    34. If Option1.Enabled Then
    35. Falsch1
    36. End If
    37. End Sub
    38. Private Sub Option2_Click()
    39. If Option2.Enabled Then
    40. Falsch1
    41. End If
    42. End Sub
    43. Private Sub Option3_Click()
    44. If Option3.Enabled Then
    45. Falsch1
    46. End If
    47. End Sub
    48. Private Sub Option4_Click()
    49. If Option4.Enabled Then
    50. Falsch1
    51. End If
    52. End Sub
    53. Private Sub Option5_Click()
    54. If Option5.Enabled Then
    55. Falsch1
    56. End If
    57. End Sub
    58. Private Sub Option6_Click()
    59. If Option6.Enabled Then
    60. Falsch1
    61. End If
    62. End Sub
    63. Private Sub Option7_Click()
    64. If Option7.Enabled Then
    65. Richtig1
    66. End If
    67. End Sub
    68. Private Sub Option8_Click()
    69. If Option8.Enabled Then
    70. Falsch1
    71. End If
    72. End Sub
    73. Private Sub Option9_Click()
    74. If Option9.Enabled Then
    75. Richtig2
    76. End If
    77. End Sub
    78. Private Sub Option10_Click()
    79. If Option10.Enabled Then
    80. Falsch2
    81. End If
    82. End Sub
    83. Private Sub Option11_Click()
    84. If Option11.Enabled Then
    85. Falsch2
    86. End If
    87. End Sub
    88. Private Sub Option12_Click()
    89. If Option12.Enabled Then
    90. Falsch2
    91. End If
    92. End Sub
    93. Private Sub Option13_Click()
    94. If Option13.Enabled Then
    95. Falsch2
    96. End If
    97. End Sub
    98. Private Sub Option14_Click()
    99. If Option14.Enabled Then
    100. Falsch2
    101. End If
    102. End Sub
    103. Private Sub Option15_Click()
    104. If Option15.Enabled Then
    105. Falsch2
    106. End If
    107. End Sub
    108. Private Sub Option16_Click()
    109. If Option16.Enabled Then
    110. Falsch2
    111. End If
    112. End Sub
    113. (frmQuiz3)
    114. Option Explicit
    115. Dim Zähler As Byte
    116. Public Sub Richtig5()
    117. Zähler = Zähler + 1
    118. End Sub
    119. Public Sub Falsch5()
    120. If Zähler = 0 Then
    121. Zähler = Zähler
    122. Else
    123. Zähler = Zähler - 1
    124. End If
    125. End Sub
    126. Private Sub Check1_Click()
    127. If Check1.Value Then
    128. Richtig5
    129. End If
    130. End Sub
    131. Private Sub Check2_Click()
    132. If Check2.Value Then
    133. Falsch5
    134. End If
    135. End Sub
    136. Private Sub Check3_Click()
    137. If Check3.Value Then
    138. Richtig5
    139. End If
    140. End Sub
    141. Private Sub Check9_Click()
    142. If Check9.Value Then
    143. Richtig5
    144. End If
    145. End Sub
    146. Private Sub Check8_Click()
    147. If Check8.Value Then
    148. Richtig5
    149. End If
    150. End Sub
    151. Private Sub Check7_Click()
    152. If Check7.Value Then
    153. Falsch5
    154. End If
    155. End Sub
    156. Private Sub Check6_Click()
    157. If Check6.Value Then
    158. Richtig5
    159. End If
    160. End Sub
    161. Private Sub Check5_Click()
    162. If Check5.Value Then
    163. Richtig5
    164. End If
    165. End Sub
    166. Private Sub Check4_Click()
    167. If Check4.Value Then
    168. Falsch5
    169. End If
    170. End Sub
    171. Private Sub cmdSpeichern_Click()
    172. cmdWeiter.Enabled = True
    173. End Sub
    174. Private Sub cmdWeiter_Click()
    175. Select Case Zähler
    176. Case Is <= 0
    177. ErgebnisQuiz!Text5.Text = 0
    178. Case 1
    179. ErgebnisQuiz!Text5.Text = 1
    180. Case 2
    181. ErgebnisQuiz!Text5.Text = 2
    182. Case 3
    183. ErgebnisQuiz!Text5.Text = 3
    184. Case 4
    185. ErgebnisQuiz!Text5.Text = 4
    186. Case 5
    187. ErgebnisQuiz!Text5.Text = 5
    188. Case 6
    189. ErgebnisQuiz!Text5.Text = 6
    190. End Select
    191. Quiz3.Hide
    192. Quiz4.Show
    193. End Sub
    194. Private Sub Form_Load()
    195. Zähler = 0
    196. End Sub
    197. (frmErgebnisQuiz)
    198. Public Sub Ergebnis(Summe As Integer, Frage As Integer)
    199. Summe = Summe + Frage
    200. If ErgebnisQuiz.Visible = True Then
    201. QuizErgebnis.Text = Summe
    202. End Sub


    hoffe ihr könnt mir helfen, ich verzweifle hier...

    Das mit Exel:
    Ich habe versucht anhand von OLE oder Datenbank Exel versucht die Formulare an bestimmte Werte der ExelTabelle zu binden, aber ich verstehe nicht wie ich das machen soll, finde weder die richtigen Scripts noch finde ich eine Eigenschaft die mir das ermöglicht einfach zu verknüpfen. HILFE!!!
    hab euch auch die Tabelle angehängt, solltet ihr damit etwas anfangen können.

    Lg Kathleen

    *Topic verschoben*
    Dateien
    • Mappe1.xls

      (16,38 kB, 192 mal heruntergeladen, zuletzt: )
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Zum Code, naja. Es gibt viele Kleinigkeiten, die man kürzen / weglassen könnte, die Namen sind nicht ausschlaggebend und du greifst 'falsch' in eine andere Form über, aber nun denn, frag konkret was das anbelangt. Außerdem muss Option Strict On! (lass dich aber nicht erschlagen von den 57 Fehlermeldungen)

    Zur Excel-Tabelle: =SUMME(B1+B2+...+B9) --> =SUMME(B1:B9)

    Zum Problem: Was ist QuizErgebnis ??
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    hi,
    also die Mappe1.xls hat in der Ergebniszelle die von dir beschriebenen Formatierung. Mein Problem ist eigentlich: Wie sage ich VB in seiner Sprache: "Wenn das Forumular ErgebnisQuiz geladen wird frage die Exeltabelle nach dem Wert der Zelle B11 und zeige ihn in QuizErgebnis.Text"
    Die Quiz1 - 9 formulare sollen zu ihrer Zeit dann schon ihre Werte den Zellen B1 bis B9 zuweisen, damit Exel die berechnung =Summe(B1+B2+B3+B4+B5+B6+B7+B8+B9) durchführen kann.

    hier, ich habe mal ein wenig recherchiert und habe etwas zu diesem Thema gefunden, was ich allerdings nicht ganz verstehe.

    Visual Basic-Quellcode

    1. 'Dieser Quellcode stammt von http://www.activevb.de
    2. 'und kann frei verwendet werden. Für eventuelle Schäden
    3. 'wird nicht gehaftet.
    4. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
    5. 'Ansonsten viel Spaß und Erfolg mit diesem Source!
    6. '------------- Anfang Projektdatei Project1.vbp -------------
    7. ' Die Komponente 'Microsoft Common Dialog Control 6.0 (SP3) (COMDLG32.OCX)' wird benötigt.
    8. '--------- Anfang Formular "Form1" alias Form1.frm ---------
    9. ' Steuerelement: Standarddialog-Steuerelement "CommonDialog1"
    10. ' Steuerelement: Schaltfläche "Command2"
    11. ' Steuerelement: Schaltfläche "Command3"
    12. ' Steuerelement: Textfeld "Text9"
    13. ' Steuerelement: Textfeld "Text8"
    14. ' Steuerelement: Textfeld "Text7"
    15. ' Steuerelement: Textfeld "Text6"
    16. ' Steuerelement: Textfeld "Text5"
    17. ' Steuerelement: Textfeld "Text4"
    18. ' Steuerelement: Textfeld "Text3"
    19. ' Steuerelement: Textfeld "Text2"
    20. ' Steuerelement: Textfeld "Text1"
    21. ' Steuerelement: Schaltfläche "Command1"
    22. ' Steuerelement: Beschriftungsfeld "Label9"
    23. ' Steuerelement: Beschriftungsfeld "Label8"
    24. ' Steuerelement: Beschriftungsfeld "Label7"
    25. ' Steuerelement: Beschriftungsfeld "Label6"
    26. ' Steuerelement: Beschriftungsfeld "Label5"
    27. ' Steuerelement: Beschriftungsfeld "Label4"
    28. ' Steuerelement: Beschriftungsfeld "Label3"
    29. ' Steuerelement: Beschriftungsfeld "Label2"
    30. ' Steuerelement: Beschriftungsfeld "Label1"
    31. Option Explicit
    32. Dim Excel As Object
    33. Dim LFlag As Boolean
    34. Private Sub Form_Load()
    35. Set Excel = CreateObject("Excel.Application")
    36. Excel.Visible = False
    37. End Sub
    38. Private Sub Command1_Click()
    39. CommonDialog1.Filter = ("Excel-Datei (*.xls)|*.xls;")
    40. CommonDialog1.InitDir = App.Path
    41. CommonDialog1.ShowOpen
    42. If CommonDialog1.filename <> "" Then
    43. Excel.Workbooks.Open CommonDialog1.filename
    44. LFlag = True
    45. Call Command2_Click
    46. End If
    47. End Sub
    48. Private Sub Command2_Click()
    49. If Not LFlag Then Exit Sub
    50. Text1.Text = Excel.Range("A1").Value
    51. Text2.Text = Excel.Range("B1").Value
    52. Text3.Text = Excel.Range("C1").Value
    53. Text4.Text = Excel.Range("A2").Value
    54. Text5.Text = Excel.Range("B2").Value
    55. Text6.Text = Excel.Range("C2").Value
    56. Text7.Text = Excel.Range("A3").Value
    57. Text8.Text = Excel.Range("B3").Value
    58. Text9.Text = Excel.Range("C3").Value
    59. End Sub
    60. Private Sub Command3_Click()
    61. If Not LFlag Then Exit Sub
    62. Excel.Range("A1").Value = Text1.Text
    63. Excel.Range("B1").Value = Text2.Text
    64. Excel.Range("C1").Value = Text3.Text
    65. Excel.Range("A2").Value = Text4.Text
    66. Excel.Range("B2").Value = Text5.Text
    67. Excel.Range("C2").Value = Text6.Text
    68. Excel.Range("A3").Value = Text7.Text
    69. Excel.Range("B3").Value = Text8.Text
    70. Excel.Range("C3").Value = Text9.Text
    71. End Sub
    72. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    73. If LFlag Then
    74. Call Command3_Click
    75. Excel.ActiveWorkbook.Close SAVECHANGES:=LFlag
    76. End If
    77. Excel.Quit
    78. Set Excel = Nothing
    79. End Sub
    80. '---------- Ende Formular "Form1" alias Form1.frm ----------
    81. '-------------- Ende Projektdatei Project1.vbp --------------


    Vielleicht ist da die lösung drin, nur ist es mir ein Rätsel, was Range und der ganze mist von aufrufen des xls bedeutet...
    QuizErgebnis habe ich die TextBox getauft, welches die Summe Wiedergeben sollte (obwohl es das nicht zu verstehen scheint)
    Ich weiß nicht ob es was zur Sache tut, aber die Exeltabelle soll während des Vorgangs Visible = False sein

    LG Kathleen
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True
    Können wir zuallererst die Rahmenbedingungen klären?

    Du postest unter der Rubrik VBS.
    Du sprichst von Excel, was auf VBA deuten würde.
    Du zitierst einen VB6-Code, der ein Excel-Workbook bearbeitet.
    Von ThePlexian kommt ein Kommentar, der sich auf VB.net bezieht.

    In welcher Entwicklungsumgebung willst du programmieren?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich kenne diese VBA oder VBS abkürzung nicht, dachte script hat was mit dem code zu tun... schuldigung...
    VB6, VB.Net... kp was du meinst. Also ich habe als kleine Hilfe ein Buch namens "Visual Basic 6 Für DUMMIS" Ich gehe davon aus das ich auf eben Visual Basic 6 Sprache schreibe. Entwicklungsumgebung? Ich bediene VB6, keine ahnung was du damit sagen möchtest.
    LG Kathleen
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True
    Achso! Das meinst du. Nein. Ich schreibe in der VB6 Umgebung meines Programmes und nicht in dem VB Fenster von dem Exel dokument.
    Ich habe jetzt den Code so aktualisiert, dass er sich mit meinem letzten angegebenen Code überschneidet. Ich nutze kein gesondertes Exel dokument, sondern habe die daten in einem OLE objekt in einem Formular eingefügt. Nur weiß ich nicht wen ich mit meinem Private Sub wie ansprechen soll, damit die TextBoxen in dem Formular ihre eigentlich bereit stehenden Values annehmen. Heißt: Wie sage ich bspw. TextBox "Text1" Nimm den Wert von "B1" und zeige ihn an.

    Hab in anderen Topics gelesen, dass die dann manchmal einfach die formel angeben, die diese Zelle berechnet, das sollte möglichst nicht der fall sein.

    Lg Kathleen
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True

    Erkennt .Range("B1") nicht als Methode oder Mitglieds...

    Habe nun auf Range umgeschrieben, aber das möchte er nicht erkennen. Was hab ich falsch gemacht?

    Visual Basic-Quellcode

    1. Private Sub Check5_Click()
    2. If Check5.Value Then
    3. Form1!OLE1.Range("E9").Value = 1
    4. End If
    5. End Sub
    6. Private Sub cmdSpeichern_Click()
    7. cmdWeiter.Enabled = True
    8. End Sub
    9. Private Sub cmdWeiter_Click()
    10. Quiz7.Hide
    11. ErgebnisQuiz.Show
    12. ErgebnisQuiz!Text1.Text = Form1!OLE1.Range("B1").Value
    13. ErgebnisQuiz!Text2.Text = Form1!OLE1.Range("B2").Value
    14. ErgebnisQuiz!Text3.Text = Form1!OLE1.Range("B3").Value
    15. ErgebnisQuiz!Text4.Text = Form1!OLE1.Range("B4").Value
    16. ErgebnisQuiz!Text5.Text = Form1!OLE1.Range("B5").Value
    17. ErgebnisQuiz!Text6.Text = Form1!OLE1.Range("B6").Value
    18. ErgebnisQuiz!Text7.Text = Form1!OLE1.Range("B7").Value
    19. ErgebnisQuiz!Text8.Text = Form1!OLE1.Range("B8").Value
    20. ErgebnisQuiz!Text9.Text = Form1!OLE1.Range("B9").Value
    21. ErgebnisQuiz!QuizErgebnis.Text = Form1!OLE1.Range("B10").Value
    22. End Sub


    wenn ihr noch mehr schnipsel haben wollt, sagt was, nur viel mehr ist da auch so nicht drin.

    vielleicht kann man es mit SourceItem und so machen?

    LG Kathleen
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kathleen“ ()

    Bei OLE kann ich dir nicht weiterhelfen, aber für den direkten Zugriff von VB6 auf eine Excel-Instanz geht's so:

    Visual Basic-Quellcode

    1. Dim ZelleA1 As String
    2. Set XLS = CreateObject("Excel.Application")
    3. XLS.Visible = True ' fürs Debugging. Später False, wenn es im Hintergrund passieren soll.
    4. Set wb=XLS.Workboods.Open("C:\x.xlsx")
    5. Set ws=wb.Sheets("Tabelle1")
    6. ZelleA1 = ws.Range("A1").Value
    7. wb.Close False
    Achtung ungetestet.
    Wenn irgendwo noch ein Bug drin ist, musst du ihn halt entfernen ;)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    was heißt ws?

    und ich sehe jetzt schon voraus, das er mir sagen wird, er möchte es in einer Prozedur.

    Kannst du mir sagen, wie ich den code verändern müsste, wenn er zu beginn des Programms, also wenn das frm Begrüßung.Visible = true hat, die Exel instanz öffnen soll und bis zum endgültigen schließen des Programms dieses erst wieder schließen soll, damit ich die einzelnen frms darauf zugreifen lassen kann ohne es ständig neu zu laden?

    Da ich das Programm später von einer CD oder stick aus laden und abspielen lassen möchte(weil es für ein zusatzmaterial zu einem referat gedacht ist) weiß ich nicht so recht, wie ich das mit dem Verzeichnis machen soll, wo er das Exel abrufen soll. Wie kann ich das so machen, dass er von der Ebene aus nach der Exel Instanz suchen soll, wo das vbprojekt gespeichert ist und von da aus nur ordner weiter innen des pfades durchsuchen soll? Hier die Anordnun:

    • Programmdaten
    • Bilder, Icons, Datenbank, vbProjekt, Formen
    • ->Datenbank
    • Auswertung.xls
    er soll Auswertung aufrufen und am ende in einer neuen xls speichern, damit man die daten später abrufen kann. Naja, das kann man teoretisch auch weglassen, aber wär schon schön.

    Außerdem soll vielleicht ganz am anfang oder nach der begrüßung(welche mit optionsfeldern zu drei unterkategorien führt, auch zu Quiz) und zwischen den nachfolgenden frms, ein Formular kommen das(zu vorigem punkt mit dem daten Speichern) den Namen des ausfüheres aufnimmt und erst weitergibt wenn dieser <>"" ist. Das könnte man ja auch als angabe in der exel machen. Dabei würde wahrscheinlich eher das schwierige sein, dem zu sagen, dass er sein formular erst abgibt, wenn der wert einer der vorgefertigten exeltabellen zelle entspricht. Diese würden dann die namen des kurs entsprechen.

    Danke schonmal im voraus

    Kathleen

    Hoffe es ist nicht alles unmöglich
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kathleen“ ()

    Higlav schrieb:

    Visual Basic-Quellcode

    1. dim wb as Excel.workbook
    2. dim ws as excel.worksheet
    also ists ne variable. gut. Ich versuchs mal...

    kann ich das vielleicht in das modul schreiben, so das er es mit den anderen frm zusammen lädt?

    kann ich das dim as String auch als Integer machen? Der soll da eh nur zahlen machen. Mit String hab ich die befürchtung, er kann damit nicht mehr rechnen.

    das mit dem Pfad namen, kann man das mit App.Path machen und .IntDir?
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Kathleen“ ()

    Kathleen schrieb:

    kann ich das vielleicht in das modul schreiben, so das er es mit den anderen frm zusammen lädt?
    Schreib's meinetwegen wohin du willst.
    Du solltest aber etwas strukturierter denken.
    Löse erst mal das eine Problem (Excel-Zellen zu lesen) unabhängig von deiner Umgebung.
    Wenn du verstanden hast, wie es funktioniert, kannst du es dort einbinden, wo es Sinn macht.
    Und trenne GUI und Daten!

    Kathleen schrieb:

    kann ich das dim as String auch als Integer machen?
    Kannst du, Excel-intern ist es eh ein Variant und kein String.
    Bei Integer fliegt der Code aber auf die Schnauze sobald jemand Text in die Zelle schreibt.
    Als String kriegst du wenigstens immer einen gültigen Wert.

    Kathleen schrieb:

    Mit String hab ich die befürchtung, er kann damit nicht mehr rechnen.
    Du sollst mit den Strings auch nicht rechnen.
    Wenn du mit den Inhalten rechnen willst, musst du sie erst parsen (prüfen) und nur wenn es sinnvoll ist, darfst du sie in Zahlen konvertieren.
    Die berechneten Ergebnisse darfst du dann zur Anzeige wieder in Strings konvertieren.
    Habe ich schon erwähnt, dass GUI und Daten getrennt gehören?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Wenn Du vb6 hast, dann verstehe ich nicht, warum nicht das gesamte Quiz in VB6 erstellt wird und anschließend die Ergebnisse in eine Exceldatei oder einfach im csv Format gespeichert werden, wenn die Auswertung in Excel stattfinden soll.

    Plan-B wäre, alles gleich in Excel mittels vba zu erstellen.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Die Werte werden von Option oder Check feldern über den code in von diesem bestimmten wert verwandelt, der Anwender kann nur diese Option oder Check felder enablen. Und wer ist bitte "GUI und Daten"?

    Du meinst nur mit Exel? Weil das dann nicht so aussieht wie es soll. Bilder usw... Ja ich weiß das ich per VBA auch UserForm erstellen kann, aber das nun alles nochmal? Bin grade nochmal mit den letzten eurer Vorschläge geupdatet am testen.
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True

    peterfido schrieb:

    Plan-B wäre, alles gleich in Excel mittels vba zu erstellen.

    Und Plan C wäre Googledocs zu benutzen. Obwohl ich das vielleicht sogar ein wenig höher einstufen würde...

    @Kathleen: GUI = Graphical User Interface und Daten sind.. nunja, die Daten halt.
    googledocs? Hab ich nicht.

    hm, jetzt nimmt der mir die Daten einfach weg... achso, der glaubt die Excel Tabelle enthielte die richtigen Werte.

    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim Excel As Object
    3. Private Sub Command1_Click()
    4. Set Excel = CreateObject("Excel.Application")
    5. Excel.Visible = False
    6. CommonDialog1.Filter = ("Excel-Datei (*.xls)|*.xls;")
    7. CommonDialog1.InitDir = App.Path
    8. CommonDialog1.ShowOpen
    9. If CommonDialog1.FileName <> "" Then
    10. Excel.Workbooks.Open CommonDialog1.FileName
    11. Text1.Text = Excel.Range("B1").Value
    12. Text2.Text = Excel.Range("B2").Value
    13. Text3.Text = Excel.Range("B3").Value
    14. Text4.Text = Excel.Range("B4").Value
    15. Text5.Text = Excel.Range("B5").Value
    16. Text6.Text = Excel.Range("B6").Value
    17. Text7.Text = Excel.Range("B7").Value
    18. Text8.Text = Excel.Range("B8").Value
    19. Text9.Text = Excel.Range("B9").Value
    20. Excel.Range("B10").Value = QuizErgebnis.Text
    21. End If
    22. End Sub


    Was muss ich tun, damit der die Werte der Textfelder in die genannten Zellen einfügt und den Wert der Zelle "B10" in QuizErgebnis.Text einfügt, wohlgemerkt eine stinknormale TextBox?
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True

    Kathleen schrieb:

    googledocs? Hab ich nicht.

    Doch, das hast du. ;) Einfach auf "Erstellen" und "Formular" auswählen.
    wie sag ich dem denn, welche die richtige antwort ist?
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True