Trelkrok Skrevet 14. juli 2016 Del Skrevet 14. juli 2016 Hei igjen. Jeg kjører denne makroen for og opprette kunde. Det jeg ønsker er en MsgBox som varsler hvis noen prøver og sette inn / \ < > : * " ? | i TextBox2.Text (Kundens navn) Dette fordi navnet er med i lagringen av PDF fil og da stopper makroen har jeg smertelig erfart. Ble så usikker på dette at jeg håper noen kan hjelpe meg med dette. På forhånd takk RA Private Sub CommandButton1_Click() 'sette inn opplysninger i kunderegister Sheets("Kunderegister").Select eRow = Sheets("Kunderegister").Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).Row Cells(eRow, 1) = TextBox1.Text Cells(eRow, 3) = TextBox2.Text Cells(eRow, 4) = TextBox3.Text Cells(eRow, 6) = TextBox4.Text Cells(eRow, 7) = TextBox5.Text Cells(eRow, 8) = TextBox6.Text Cells(eRow, 9) = TextBox7.Text Cells(eRow, 10) = TextBox8.Text Cells(eRow, 14) = TextBox9.Text MsgBox "Kunde er opprettet :)" 'nullstille "Opprette ny kunde" TextBox1.Value = "" TextBox2.Value = "" TextBox3.Value = "" TextBox4.Value = "" TextBox5.Value = "" TextBox6.Value = "" TextBox7.Value = "" TextBox8.Value = "" TextBox9.Value = "" 'Sortere kunderegister Columns("C:C").Select ActiveWorkbook.Worksheets("Kunderegister").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Kunderegister").Sort.SortFields.Add Key:=Range("C2:C1000") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Kunderegister").Sort .SetRange Range("A1:AA1000") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("C2").Select Sheets("Pakkseddel").Select Range("B7").Select Unload Me End Sub Lenke til kommentar
Harald Staff Skrevet 15. juli 2016 Del Skrevet 15. juli 2016 (endret) Hei igjen Tillat meg å være litt streng. Vi skal ikke irettesette brukeren medmindre en ordentlig ulykke er i ferd med å skje. Vi skal lage ting slik at de ikke har muligheten til å gjøre noe galt. Det er mye følelser rundt bruk av dataprogrammer, og de aller fleste er med god grunn lette å mislike. Det medfører en del jobb. Jo enklere noe er å bruke, jo mer kompliserte er de å lage. Men det er en stor belønning i andre enden, du har laget en kul og populær applikasjon. Her er en veldig nyttig greie, eventet KeyPress i en Userform -du finner den i userformmodulen. Dette eksemplet gjør at det er helt umulig å skrive tallene 2 eller 3 i Textbox1: Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 50, 51 KeyAscii = 0 Case Else End Select End Sub og hvordan vet man at 2 er keyascii 50? Man lager et tegnkart, som jeg har lagt ved her: Tegnkart.xlsx Beste hilsen Harald Edit. Slurver med detaljer igjen. Over modulen, Textbox1 i venstre nedtrekksmeny, KeyPress i den høyre. Endret 15. juli 2016 av Harald Staff Lenke til kommentar
ExcelGuru Skrevet 15. juli 2016 Del Skrevet 15. juli 2016 Hei! Jeg er prinsipielt enig med Harald, og så legger jeg ved en liten funksjon som du kan bruke for å sjekke om navnet inneholder de tegnene som er tillatt. If Sjekknavn(textbox1.text)= false then .... ____________________________________________ Function Sjekknavn(Navn As String) As Boolean Dim OK As String Dim NO As String Dim NY As String Dim B As String 'Du får vurdere om ÆØÅ skal være tillatte tegn... OK = "ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ -" For x = 1 To Len(Navn) B = UCase(Mid(Navn, x, 1)) If InStr(1, OK, B) = 0 Then MsgBox ("Fint om du ikke bruker """ & B & """ i kundenavn:)") Sjekknavn = False Exit Function End If Next x Sjekknavn = True End Function ____________________________________________ Lenke til kommentar
ExcelGuru Skrevet 15. juli 2016 Del Skrevet 15. juli 2016 Og litt mer i Haralds ånd kan du legge testen rett i TextBox2_Change. Da får du bare skrevet de tegnene du tillater i strengen OK Private Sub TextBox2_Change() Dim OK As String Dim NO As String Dim NY As String Dim B As String Dim Navn As String Navn = TextBox2.Text 'Du får vurdere om ÆØÅ skal være tillatte tegn... OK = "ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ -" For x = 1 To Len(Navn) B = UCase(Mid(Navn, x, 1)) If InStr(1, OK, B) = 0 Then TextBox2.Text = Left(Navn, Len(Navn) - 1) End If Next x End Sub Lenke til kommentar
Emancipate Skrevet 15. juli 2016 Del Skrevet 15. juli 2016 Dårlig løsning. Hva hvis det kommer en som heter André? Den eneste skikkelige måten å løse det på er å omkalfatre strenger som inneholder forbudte tegn når filnavnet lages. Så kan folk hete hva de vil ellers. Tillat meg å være litt streng.Genialt ordspill. Lenke til kommentar
ExcelGuru Skrevet 15. juli 2016 Del Skrevet 15. juli 2016 (endret) Det siste forslaget mitt går i ball hvis man piler seg tilbake og skriver et tegn som ikke er tillatt Endret 15. juli 2016 av ExcelGuru Lenke til kommentar
Trelkrok Skrevet 15. juli 2016 Forfatter Del Skrevet 15. juli 2016 Helt greit og være "litt" streng Harald Prøver så godt jeg kan og gjøre dette så enkelt som mulig for brukerne samtidig som det ikke skal være rom for feil. TAKK for alle forslag. Skal prøve meg fram litt med dette. RA Lenke til kommentar
Trelkrok Skrevet 15. juli 2016 Forfatter Del Skrevet 15. juli 2016 (endret) Da ble det sånn God helg. Edit: Har valgt og informere om tegn som ikke er lov i Brukermanualen. Brukere kan fort bli frustrerte over at de ikke får satt inn div. tegn. (Brukere kan lure på om det er feil med tastaturet) Ellers er dette en smart løsning til mitt bruk. Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 34, 37, 42, 47, 58, 60, 62, 63, 92, 124 KeyAscii = 0 Case Else End Select End Sub Private Sub CommandButton1_Click() 'sette inn opplysninger i kunderegister Sheets("Kunderegister").Select eRow = Sheets("Kunderegister").Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).Row Cells(eRow, 1) = TextBox1.Text Cells(eRow, 3) = TextBox2.Text Cells(eRow, 4) = TextBox3.Text Cells(eRow, 6) = TextBox4.Text Cells(eRow, 7) = TextBox5.Text Cells(eRow, 8) = TextBox6.Text Cells(eRow, 9) = TextBox7.Text Cells(eRow, 10) = TextBox8.Text Cells(eRow, 14) = TextBox9.Text MsgBox "Kunde er opprettet :)" 'nullstille "Opprette ny kunde" TextBox1.Value = "" TextBox2.Value = "" TextBox3.Value = "" TextBox4.Value = "" TextBox5.Value = "" TextBox6.Value = "" TextBox7.Value = "" TextBox8.Value = "" TextBox9.Value = "" 'Sortere kunderegister Columns("C:C").Select ActiveWorkbook.Worksheets("Kunderegister").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Kunderegister").Sort.SortFields.Add Key:=Range("C2:C1000") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Kunderegister").Sort .SetRange Range("A1:AA1000") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("C2").Select Sheets("Pakkseddel").Select Range("B7").Select Unload Me End Sub Endret 16. juli 2016 av Trelkrok Lenke til kommentar
Harald Staff Skrevet 17. juli 2016 Del Skrevet 17. juli 2016 Fine greier. Behold entusiasmen, dette blir du god til. Og jeg lover deg, etter 20+ år, at det et ordentlig gøy, hver gang og hele tiden. Beste hilsen Harald Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå