Avatar billede svla Mester
27. juli 2017 - 16:39 Der er 9 kommentarer og
1 løsning

Hjælp til indtastning via VBA

Bruger office 2016

Har et excelark hvor der skal indtastes nogle værdier, på Excel arket hvor værdierne bliver indsat er der nogle betingede formateringer, og en af de betingede formateringer er "større end 36", og cellefarven bliver herefter blå.

Jeg har lavet en Userform hvor indtastningerne foretages, men når Userformen indsætter talværdier bliver farven på cellerne blå der hvor den før omtalte betingede formatering er.
Jeg har læst at det er noget med at Excel opfatter det som om der før tallene er en apostrof (')
Hvis jeg manuelt indtaster en apostrof (') bliver resultatet det samme.

Er der en eller anden som kan hjælpe mig af med det problem ?

Koden på min Userform som indsætter data ser således ud:

Private Sub cmdOk_Click()
  'Indsætter ny række på excelark
  IndsætNyRække

  Range("A8").Select
  With ActiveCell
      .Value = txtDagsDato
      .Offset(0, 1).Value = txtTidspunkt
      .Offset(0, 2).Value = txtVenstreAkk
      .Offset(0, 3).Value = txtVenstreMax
      .Offset(0, 4).Value = txtVenstreMin
      .Offset(0, 5).Value = txtHøjreAkk
      .Offset(0, 6).Value = txtHøjreMax
      .Offset(0, 7).Value = txtHøjreMin
      .Offset(0, 8).Value = txtUndersteAkk
      .Offset(0, 9).Value = txtUndersteMin
      .Offset(0, 10).Value = txtUndersteMin
      .Offset(0, 11).Value = txtMaterialer
      .Offset(0, 12).Value = txtDiverse
      .Offset(0, 13).Value = txtDronning
      .Offset(0, 14).Value = txtSygdom
      .Offset(0, 15).Value = txtBistyrke
  End With

  MsgBox ("OK")
End Sub
Avatar billede Jan Hansen Ekspert
27. juli 2017 - 16:57 #1
Prøv efter dine txt***** at skrive .Value eller .Text

Jan
Avatar billede svla Mester
27. juli 2017 - 17:46 #2
Har lige prøvet og skifte value til text, men så melder VBA fejl
Avatar billede excelent Ekspert
27. juli 2017 - 19:05 #3
.Value = cdate(txtDagsDato)

.Offset(0, 3).Value = cdbl(txtVenstreMax)
Avatar billede svla Mester
27. juli 2017 - 19:34 #4
#3
Jeg ved ikke hvad det du foreslår gør, men det virker hvis der er værdier i Userformens textfelter, men hvis et textfelt er tomt melder VBA fejl når det når til koden vedr. det tomme textfelt.
Var det bedre og starte med og lægge alle værdierne i en variabel ?
Avatar billede Jan Hansen Ekspert
27. juli 2017 - 19:51 #5
.Value = txtDagsDato.Value

eller
.Value = txtDagsDato.text

Jan
Avatar billede Jan Hansen Ekspert
27. juli 2017 - 19:55 #6
du kan også læse dem over i variable som er dim til den rigtige type

eks
Dim dToday as Date
dToday=txtDagsDato.Value
Avatar billede Jan Hansen Ekspert
27. juli 2017 - 19:57 #7
ups
dToday=Format(txtDagsDato.Value,"dd-mm-yyyy")
Avatar billede excelent Ekspert
27. juli 2017 - 19:58 #8
Som udgangspunkt er alle værdier i vba tekst
Så uanset disse er datoer, tal eller andet så opfattes disse som tekst
Så når du skal levere værdier til et excel-ark/celle skal værdierne omdannes
til tal eller dato eller tider m.v.  her kommer cdbl og cdate ind

Fejlen du får kan fx fikses via en err-handler fx On error goto
eller
.Offset(0, 1).Value = txtTidspunkt

retters til

if txtTidspunkt<>"" then .Offset(0, 1).Value = txtTidspunkt

eller noget i den stil
Avatar billede svla Mester
27. juli 2017 - 20:34 #9
Tusind tak for jeres hjælp, jeg har prøvert lidt forskelligt, men #5 løste mit problem
- Tak for hjælpen
Avatar billede Jan Hansen Ekspert
27. juli 2017 - 20:41 #10
Velbekomme
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

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