Avatar billede mfj1 Nybegynder
05. februar 2003 - 17:51 Der er 19 kommentarer og
1 løsning

Kan Makroen "glemme" de to første bogstaver?

I filen jobnr har jeg nogle (mange) nr. i kolonne A

Ws  1055123
Sw  1045123
Rw  1035123
Tw  1025123
Ws  nvvv005
Sw  nvvv003
Rw  nvvv006
Tw  nvvv004

I filen firma1 har jeg nogle nr. som er uden de to første bogstaver, når jeg dobbelt klikker på nr vises dels nr og dels en tekst i kolonne B, C og D i filen jobnr ved hjælp af følgende Makro:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim ss, ss2, ss3 As String
  On Error GoTo fejl
    If Not Intersect(Target, Range("D8:FA57")) Is Nothing Then
    Cancel = True
    ss = "'" & Left(ThisWorkbook.path, InStrRev(ThisWorkbook.path, "\"))
   
    ss3 = ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,4,false"
    ss2 = ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,3,false"
    ss = ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,2,false"
   
    ss = "=vlookup(" & Target.Address & "," & ss & ")"
    ss2 = "=vlookup(" & Target.Address & "," & ss2 & ")"
    ss3 = "=vlookup(" & Target.Address & "," & ss3 & ")"
   
    [ga1].Formula = ss
    [ga2].Formula = ss2
    [ga3].Formula = ss3
   
  If IsError([ga1]) Then MsgBox Target.Value & vbCr & ("Ingen hjælpetekst") Else
       
              MsgBox Target.Value & vbCr _
                    & [ga1].Value & vbCr _
                    & [ga2].Value & vbCr _
                    & [ga3].Value

           
    '[GA1:GA3].Clear
  End If
  Exit Sub
fejl:
  MsgBox ("der er sket en fejl")
End Sub

I filen firma2 har jeg nogle nr. som er med de to første bogstaver, når jeg dobbelt klikker på nr., SKAL der vises dels nr. og dels en tekst i kolonne B, C og D i filen jobnr ved hjælp af følgende Makro:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim ss, ss2, ss3 As String
  On Error GoTo fejl
    If Not Intersect(Target, Range("c8:c414")) Is Nothing Then
    Cancel = True
    ss = "'" & Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\"))
   
    ss3 = ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,4,false"
    ss2 = ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,3,false"
    ss = ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,2,false"
   
    ss = "=vlookup(" & Target.Address & "," & ss & ")"
    ss2 = "=vlookup(" & Target.Address & "," & ss2 & ")"
    ss3 = "=vlookup(" & Target.Address & "," & ss3 & ")"
   
    [ga1].Formula = ss
    [ga2].Formula = ss2
    [ga3].Formula = ss3
   
  If IsError([ga1]) Then MsgBox Target.Value & vbCr & ("Ingen hjælpetekst") Else
       
              MsgBox Target.Value & vbCr _
                    & [ga1].Value & vbCr _
                    & [ga2].Value & vbCr _
                    & [ga3].Value

           
    '[ga1:ga3].Clear
  End If
  Exit Sub
fejl:
  MsgBox ("der er sket en fejl")
End Sub

Mit spørgsmål er, kan de næsten to ens Makroer ændres så det er uden betydning om de to første BOGSTAVER er foran ”tallet” eller ikke (Tw1025123,  Wsnvvv005 eller 1025123) der dobbelt klikkes på ?
I filen jobnr vil der altid være TO bogstaver foran, (Tw1025123,  Wsnvvv005 eller Rw1025123) som vist.

Mfj1
Avatar billede _darkstar_ Nybegynder
05. februar 2003 - 17:54 #1
Der findes funktioner som kan klippe tegn ud af strenge - tror du ikke at det kan bruges?

Se manualen for right, left og mid.

Jeg tror at du skal bruge en right(felt,-2)
Avatar billede martin_moth Mester
05. februar 2003 - 21:48 #2
Den kode darkstar har givet dig er forkert.

Du kan bruge følgende:

  Tekststring = "Hej med dig"
  Msgbox Mid(Tekststring, 3, Len(TekstString))

  Msgboxen vil udskrive "j med dig"

Alternativt:

  Tekststring = "Hej med dig"
  Msgbox Right(Tekststring,Len(TekstString)-2)

Der giver samme resultat. Med mindre du er SIKKER på at den string du trunkerer har en længde større end 2, bør du tjekke om Len(Tekststring) > 2 inden du kører koden, for at undgå en fejlmeddelse..

PS: Jeg har ikke gidet sætte mig ind i al din macro-kode, men går ud fra at det er det du spørger om
Avatar billede bak Forsker
05. februar 2003 - 22:28 #3
Jeg tror ikke du umiddelbart kan gøre det, medmindre nummeret (uden de to første bogstaver) altid er lige langt.
Er det tilfældet ?
Avatar billede mfj1 Nybegynder
06. februar 2003 - 10:56 #4
Alle nummere er lige lange og består af to bogstaver BB og 7 tal.
BB1234567.

Der er dog 25 nummere. som kan se ud som eks. BBnnjjvv05555 antallet af bogstaver og tal er ikke altid ens, men dem kan der ses bort fra, da de i antal kun er ca. 25 pr. uge.
mfj1
mfj1
Avatar billede martin_moth Mester
06. februar 2003 - 11:19 #5
Jeg er i tvivl - har du fået svar på dit spørgsmål?
Avatar billede mfj1 Nybegynder
06. februar 2003 - 13:32 #6
Ja, jeg har fået svar, men jeg har ikke fået det til at funger p.t., men jeg prøver i aften hjemme.
mfj1
Avatar billede mfj1 Nybegynder
06. februar 2003 - 22:18 #7
mfj1
Avatar billede bak Forsker
07. februar 2003 - 15:01 #8
Prøv at udskifte det midterste af makro med det.
Forudsætningen er at det felt der skal klikkes på er formateret som tekst.
Dette her laver 3 array-formler med lopslag, så hastigheden er muligvis nedsat

    ss3 = "right(" & ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,7),4,false"
    ss2 = "right(" & ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,7),3,false"
    ss = "right(" & ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,7),2,false"
   
    ss = "=vlookup(" & target.Address & "," & ss & ")"
    ss2 = "=vlookup(" & target.Address & "," & ss2 & ")"
    ss3 = "=vlookup(" & target.Address & "," & ss3 & ")"

    [a1].FormulaArray = ss
    [ga2].FormulaArray = ss2
    [ga3].FormulaArray = ss3
Avatar billede bak Forsker
07. februar 2003 - 15:02 #9
En anden ting er at den udelukkende kigger på de 7 sidste karakterer.
Avatar billede mfj1 Nybegynder
07. februar 2003 - 20:12 #10
Hej Bak.
Jeg har lave et par små test filer hvor i min gamle Makro funger fint, men med din ændring af makroen får jeg returneret fejl >>#I/T<< i både A1, A2 og A3.

Den første MsgBox viser: Nr. i første linie.
I anden linie vises teksten: Ingen hjælpetekst.

Den anden MsgBox viser teksten: der er sket en fejl.

Mfj1
Avatar billede bak Forsker
07. februar 2003 - 22:57 #11
Hvad står der i formlen ?
Klip den lige ud og vis den.
Avatar billede bak Forsker
07. februar 2003 - 23:13 #12
For nu ikke at det kan misforståes :-)
jeg er interesseret i selve formlen i a1,a2, og a3, ikke værdierne
Avatar billede mfj1 Nybegynder
08. februar 2003 - 00:25 #13
Her kommer de:
A1:=LOPSLAG($C$12;HØJRE('C:\Documents and Settings\JFM\Skrivebord\Test mappe\[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500;7);2;FALSK)
A2:=LOPSLAG($C$12;HØJRE('C:\Documents and Settings\JFM\Skrivebord\Test mappe\[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500;7);3;FALSK)
A3:=LOPSLAG($C$12;HØJRE('C:\Documents and Settings\JFM\Skrivebord\Test mappe\[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500;7);4;FALSK)
Avatar billede bak Forsker
09. februar 2003 - 11:22 #14
Jaaee, John, det ser jo umiddelbart rigtig nok ud.
Der er 2 potentielle fejlkilder her.
Er der {} (tuborgklammer) omkring formlerne formlerne ?
Er klikcellerne formateret som tekst ?
Avatar billede mfj1 Nybegynder
09. februar 2003 - 11:29 #15
Ja, der er {} omkring formlerne!?!?
Ja, klikkcellerne er formateret som tekst.
Avatar billede bak Forsker
09. februar 2003 - 12:02 #16
Der var ligegodt f.......

I/T eller N/A betyder at formlen ikke kan finde det den skal søge efter.
Jeg har et par ark her der bare spiller.
Hvad er nu lige din email-adr,?
Avatar billede mfj1 Nybegynder
09. februar 2003 - 12:05 #17
jfm@stofanet.dk
Avatar billede mfj1 Nybegynder
09. februar 2003 - 13:34 #18
Tommy
Der er sendt et svar på din mail.
Avatar billede bak Forsker
09. februar 2003 - 15:19 #19
Ok, fomelerne er ændret til index/match-formler pga. hastighed og at lopslags-formelen kun ville returnere de sidste 7 karakterer.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim ss, ss1, ss2, ss3, ss4 As String
  On Error GoTo fejl
    If Not Intersect(Target, Range("c8:c414")) Is Nothing Then
    Cancel = True
    ss = "'" & Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\"))
    ss1 = "right(" & ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$a$2500,7),0"
    ss1 = "=match(" & Target.Address & "," & ss1 & ")"
    ss2 = "=index(" & ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,A1,2)"
    ss3 = "=index(" & ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,A1,3)"
    ss4 = "=index(" & ss & "[JOBnrMed_Tekst.xls]Sheet1'!$A$2:$D$2500,A1,4)"
   
    [a1].FormulaArray = ss1
    [a2].Formula = ss2
    [a3].Formula = ss3
    [a4].Formula = ss4

   
  If IsError([a1]) Then MsgBox Target.Value & vbCr & ("Ingen hjælpetekst") Else
       
              MsgBox Target.Value & vbCr _
                    & [a2].Value & vbCr _
                    & [a3].Value & vbCr _
                    & [a4].Value

           
  '[a1:a4].Clear
  End If
  Exit Sub
fejl:
  MsgBox ("der er sket en fejl")
End Sub
Avatar billede mfj1 Nybegynder
09. februar 2003 - 15:21 #20
Jeg takker for hjælpen, nu funger det bare.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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