Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii > 57 Then MsgBox ("Du må kun indtaste cifre") Exit Sub End If End Sub
Der er også ascii-værdier under 48, der ikke er tal. Strengt taget skulle der jo også testes for dem.
msgbox kan selvfølgelig udelades, så sker der bare ingenting, når der tastes noget, der ikke er cifre. minus (bindestreg) har ascii(45). Den skulle være tilladt, ikke?
ja, så er det VBA. Det bruger jeg ikke, det er en stærkt amputeret udgave af Visual Basic, der er et selvstændigt udviklingssprog. Du må kigge i hjælpen til VBA, hvad der tillades af syntaks. Ellers stil spørgsmålet i kategorien Word eller Excel.
Private Sub TextU_KeyPress(KeyAscii As Integer) If (KeyAscii < 48) Or (KeyAscii > 57) Then If Not (KeyAscii = 8) Then KeyAscii = 0 Beep 'For computeren til at sige biib End If End If End Sub
jeg har en word2000. Den VBA der medfølger dér kender ikke keyascii, men keystroke. Syntaksen ser dog fuldstændig anderledes ud end det jeg kender til.
VBA er jo tænkt til at udvikle macro'er med. Du kan ikke lave en lommeregner som et selvstændigt program (en exe-fil) med VBA. Har du brug for en lommeregner mens du skriver i Word, er det dog nemmere at bruge Windows' egen.
Min opgave lyder på at jeg skal skrive ohms lov ind i word. rimlig steneren. jeg tænkte bare på om det kunne lade sig gøre at kun bruge tal, men det kan det åbenbaret ikke. Den kan faktisk ikk ret meget ;)
Private Sub TextI_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case Asc("0") To Asc("9") Case Asc("-") Case Asc(".") Case Asc(",")
Case Else KeyAscii = 0 MsgBox "Du må kun indtaste TAL!", 16, "Fejl" End Select End Sub
Du er sandelig vedholdende. Select case er en udmærket løsning, når If ikke rækker.
Selve VB er ofte tolerant m.h.t. at udføre beregninger på strenge, når disse kun indeholder tal. Men det korrekt - og sikre - er at tage værdien med 'Val'. Du har nok også bemærket at man kan udelade .text for en tekst-kontrol.
Resultat = Val(textI.text) * Val(textU.text)
textI har mange properties: Baggrundsfarve, tabulator-indeks, position o.s.v, men når man intet skriver formoder VB at der menes text.
Watt er jo nemmest at regne ud, men bruger man ikke joule i vore dage?
I selve mit regne stykke, har jeg fået den til at udregne nogle bestemte faktnummere, men har stadig små fejl, som jeg lige skal ligge hoved lidt i blød til :) Jeg ser gerne at man kan gå ind og "læse" om der står noget i et felt. Hvis der ikke står noget i nogen af dem sku den sige, msgbox fejl fx. hvis der kun står noget i 1 box, sku den sige, msgbox fejl fx. Jeg har lavet dette:
Private Sub Beregn_Click() ' 'Hvad nu, hvis man ikke skriver noget? 'Så popper den jo op med fejl! ' Dim resultat If TextU = "" Then GoTo 1 If TextI = "" Then GoTo 2 If TextR = "" Then GoTo 3 'If TextP = "" Then GoTo 4 MsgBox "Du skal skrive noget i 2 af felterne", 64, "Mangler tal" GoTo 5
grunden til at TextP er taget fra med ' er jo mit problem hvis du kigger på de links før, så kan du se at et eller andet tidspunkt går den jo i kluder i udregningen.
Hvis jeg nu har P og U værdigen, så skal den I = P / U problemet er så at jeg har U værdigen, så derfor går den til punkt 2. U / R. Der vil opstå fejl
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.