Avatar billede daki Juniormester
29. oktober 2005 - 09:29 Der er 14 kommentarer og
2 løsninger

Validering af inputbox

Nedenstående macro virker som den skal, men jeg skal have hjælp til at få den optimal. Indtaster man ikke noget eller klikker på anuller så debugger macroen.
 
Dim Filnavn As String
Dim nytnavn As String
Range("B2").Select
Range("B2", ActiveCell).Value = InputBox("Indtast dato for afsluttet måned (dd.mm.aa)", "Indsæt teksten du vil have i fanenavn")
Range("B3").Select
Range("B3", ActiveCell).Value = InputBox("Indtast sti for filnavnet (c:\dokumenter\excel)", "Indsæt teksten hvor du vil gemme arket")
Range("B4").Select
ActiveCell.FormulaR1C1 = "=(IF(R[-2]C<>"""",(LEFT(R[-2]C,2)&MID(R[-2]C,4,2)&RIGHT(R[-2]C,2)),""""))"
Range("A1").Select
Filnavn = Range("B3") & "Indkøbsstatistik " & Range("B4") & ".xls"
nytnavn = Range("B2")
Sheets(1).Name = nytnavn
ActiveWorkbook.SaveAs Filename:=Filnavn

Hvad skal rettes for at validere på om der er indtastet noget i inputboxe.
Hvis man eks. taster 05.11.05, så fjernes det første nul, hvordan får jeg sat et nul foran.
Avatar billede jkrons Professor
29. oktober 2005 - 12:12 #1
Du behøver ikke at validere om der er tastet noget i inputboxen. Det du skal validere er, om der står noget i B2, som du bruger som navn på arket.

Prøv fx med:


Range("A1").Select
Filnavn = Range("B3") & "Indkøbsstatistik " & Range("B4") & ".xls"
If IsEmpty(b2) Or IsEmpty(b1) Then
Exit Sub
Else:
nytnavn = Range("B2")
Sheets(1).Name = nytnavn
ActiveWorkbook.SaveAs Filename:=Filnavn

Men det afhænger selvfølgelgi af, hvad der du ønsker, der skal ske, hvis der ikek tastes noget.
Avatar billede daki Juniormester
29. oktober 2005 - 14:29 #2
Det er en del af en længere macro, som formatere arket til det rigtige udseende med hensyn til rammer, sideopsætning og sortering m.m.
Og tilslut skal man indtaste navn til arket og stien til hvor filen skal gemmes.

Det det skal helst være sådan, at man skal indtaste noget i begge inputboxe.
Så hvis der ikke er indtastet noget, skal den spørge igen.

Med hensyn til foranstillet nul på eks. 05.11.05, hvad gør jeg der.
Avatar billede bak Forsker
29. oktober 2005 - 16:03 #3
Dim Filnavn As String
Dim NytNavn As String
Dim stDato As String

DatoInd:
  stDato = InputBox("Indtast dato for afsluttet måned (dd.mm.aa)", "Indsæt teksten du vil have i fanenavn")
  If stDato = "False" Or IsDate(stDato) = False Then
      MsgBox "Dato skal indtastes korrekt dd.mm.åå"
      GoTo DatoInd
  Else
      Range("B2").NumberFormat = "dd.mm.yy;@"
      Range("B2") = Format(stDato, "dd.mm.yy")
  End If
NavnInd:
  NytNavn = InputBox("Indtast sti for filnavnet (c:\dokumenter\excel)", "Indsæt teksten hvor du vil gemme arket")
  If NytNavn = "False" Then GoTo NavnInd Else Range("B3") = NytNavn

  Range("B4").FormulaR1C1 = "=(IF(R[-2]C<>"""",(LEFT(R[-2]C,2)&MID(R[-2]C,4,2)&RIGHT(R[-2]C,2)),""""))"
  Range("A1").Select
  Filnavn = Range("B3") & "Indkøbsstatistik " & Range("B4") & ".xls"
  NytNavn = Range("B2")
  Sheets(1).Name = NytNavn
  ActiveWorkbook.SaveAs Filename:=Filnavn
Avatar billede daki Juniormester
29. oktober 2005 - 20:57 #4
Jeg kan ikke indtaste datoer som 30.09.05 el. 31.10.05, får MsgBox.
Andre datoer ændres til 30.12.99.
Hvis der ikke skrives noget i/som sti, benyttes standard mappen for excel. (i og for sig i orden.)
Findes filnavnet bugger macroen.
Avatar billede daki Juniormester
31. oktober 2005 - 11:40 #5
Ændrede 'Range("B2") = Format(stDato, "dd.mm.yy")' til 'Range("B2") = stDato' og nu går datoen rigtig ind.
Jeg kan dog stadigvæk ikke skrive datoer som begynder med 24-31 (24.10.05, 31.12.05 osv.).
Hvorfor det ??
Avatar billede daki Juniormester
02. november 2005 - 12:32 #6
Ingen hjælp eller ??
Avatar billede daki Juniormester
11. november 2005 - 11:29 #7
Jeg har ikke fundet en løsning på problemet endnu, og det ser ikke ud til at jeg kan få nogen hjælp :-)
Avatar billede daki Juniormester
16. november 2005 - 11:33 #8
Points ?????
Avatar billede daki Juniormester
16. december 2005 - 10:32 #9
Ja, så skulle jeg til at bruge macroen igen.
Men jeg kan ikke taste dags dato, indtastning ugyldig.
Avatar billede daki Juniormester
17. januar 2006 - 19:36 #10
Var det muligt at få afsluttet dette spm., på værdig vis :-)
Vil gerne give points, men mangler lige det sidste.

Nu var det jo så galt igen i dag..........
Avatar billede bak Forsker
17. januar 2006 - 20:31 #11
Dim Filnavn                As String
Dim NytNavn                As String
Dim stDato                As String
Dim temp                  As Variant

DatoInd:
  stDato = InputBox("Indtast dato for afsluttet måned (dd.mm.aa)", "Indsæt teksten du vil have i fanenavn")
  If stDato = "False" Or UBound(Split(stDato, ".")) <> 2 Then
      MsgBox "Dato skal indtastes korrekt dd.mm.åå"
      GoTo DatoInd
  Else
      temp = Split(stDato, ".")
      Range("B2").NumberFormat = "dd.mm.yy;@"
      Range("B2") = DateSerial(temp(2), temp(1), temp(0))
  End If
NavnInd:
  NytNavn = InputBox("Indtast sti for filnavnet (c:\dokumenter\excel)", "Indsæt teksten hvor du vil gemme arket")
  If NytNavn = "False" Then GoTo NavnInd Else Range("B3") = NytNavn

  Range("B4").FormulaR1C1 = "=(IF(R[-2]C<>"""",(LEFT(R[-2]C,2)&MID(R[-2]C,4,2)&RIGHT(R[-2]C,2)),""""))"
  Range("A1").Select
  Filnavn = Range("B3") & "Indkøbsstatistik " & Range("B4") & ".xls"
  NytNavn = Range("B2")
  Sheets(1).Name = NytNavn
  ActiveWorkbook.SaveAs Filename:=Filnavn
Avatar billede daki Juniormester
18. januar 2006 - 09:50 #12
Tak,
Så var den der. Læg et svar bak.
Avatar billede bak Forsker
18. januar 2006 - 10:12 #13
ok
Avatar billede daki Juniormester
18. januar 2006 - 10:13 #14
Det var ikke helt korrekt :-)
eks. bliver data 31.10.05 til
B2/Fanenavn = 31-10-05
Værdi i B4 og tilføjelse til filnavn = 385656
Avatar billede bak Forsker
18. januar 2006 - 11:57 #15
jo, men det var jo ikke det du bad om hjælp til. Det er jo din egen kode og formel der gør det. :-)


Sub test()
  Dim Filnavn As String
  Dim NytNavn As String
  Dim stDato As String
  Dim temp As Variant

DatoInd:
  stDato = InputBox("Indtast dato for afsluttet måned (dd.mm.aa)", "Indsæt teksten du vil have i fanenavn")
  If stDato = "False" Or UBound(Split(stDato, ".")) <> 2 Then
      MsgBox "Dato skal indtastes korrekt dd.mm.åå"
      GoTo DatoInd
  Else
      temp = Split(stDato, ".")
      Range("B2").NumberFormat = "dd.mm.yy;@"
      Range("B2") = DateSerial(temp(2), temp(1), temp(0))
  End If
NavnInd:
  NytNavn = InputBox("Indtast sti for filnavnet (c:\dokumenter\excel)", "Indsæt teksten hvor du vil gemme arket")
  If NytNavn = "False" Then GoTo NavnInd Else Range("B3") = NytNavn
  Range("B4").FormulaR1C1 = "=IF(R[-2]C<>"""",TEXT(R[-2]C,""ddmmåå""),"""")"
  Filnavn = Range("B3") & "Indkøbsstatistik " & Range("B4") & ".xls"
  NytNavn = stDato
  Sheets(1).Name = NytNavn
  ActiveWorkbook.SaveAs Filename:=Filnavn
End Sub
Avatar billede daki Juniormester
18. januar 2006 - 13:04 #16
Fair nok.
Jeg undskylder hvis spm. ikke var formuleret korrekt.

Men nu virker det som jeg gerne vil have. mange tak.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester