Avatar billede johnfm Nybegynder
07. december 2004 - 22:39 Der er 10 kommentarer og
1 løsning

Vælg mellem to MsgBox

Jeg har brug for lidt hjælp til at ændre i den efterfølgende Makro

I dag skrives Jobnr ind i C8-C20 i Ark ”indskriv projekt nr” i Projektmappen, Jobnr er altid et tal på 7 cifre, når Jobnr er skrevet ”går” Makro op i Projektmappen JOBnrMed_Tekst og søger i kolonne A efter det Jobnr der lige er skrevet ind, findes Jobnr går Makroen i rækken til kolonne D og kopier den Ans. Rep., og Indsætter den Ans. Rep. i F155:F174 i det Ark hvor Jobnr blev skrevet ind.

Jeg vil gerne hente flere oplysninger fra JOBnrMed_Tekst og vise dem i MsgBox.
I dag vises følgende fra JOBnrMed_Tekst i MsgBox fra kolonne:
A, Jobnr
B, Tekst
C, VHC
D, Ans.rep.
Jeg vil gerne have til føjet følgende fra kolonne:
E, Job prioritet
F, KKSnr
G, Dato

Når jeg i dag dobbelt klikker på et indskrevet Jobnr og Makroen ikke finder det i JOBnrMed_Tekst, får jeg blot en meddelelse om at der er fejl.
Kan jeg ikke få en meddelelse der siger følgende: ”Enten har du skrevet forkert Jobnr, der ikke findes i XXXi, eller også findes Jobnr ikke i VVV for Værksted.”. Det skal derefter klikkes på OK.
-----------------------------------------------------------------------------------------------------------
Som noget nyt er vi begyndt at bruge en ny ”type” Jobnr der består af bogstaver og tal eks. esvv-10-002-uf eller
klmm-12-0003. Kan Makroen kende forskel på de forskellige typer Jobnr?

For når et Jobnr der indeholder bogstaver, vil jeg gerne kunne hente oplysninger fra Projektmappen JOBnrMed_Tekst og vise dem i MsgBox, men kun fra følgende kolonner i projektmappen JOBnrMed_Tekst.
A, Jobnr
B, Tekst

Findes den nye ”type” Jobnr ikke (når det er skrevet ind i C8-C20) når jeg dobbelt klikker på Jobnr, vil jeg gerne have følgende meddelelse vist i en MsgBox, ” Du har skrevet et forkert Projektnr der ikke findes.”.
-------------------------------------

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim wkbJobs As Workbook
    Dim wksJobs As Worksheet
    Dim rCurReg As Range
    Dim rCell As Range
   
    ' DoubleClick på projektnr.
    On Error GoTo ProgErr
    If Not Intersect(Target, Range("C8:C500")) Is Nothing Then
        Application.ScreenUpdating = False
        Cancel = True
        Set wkbJobs = Application.Workbooks.Open(Left(ThisWorkbook.Path, _
            InStrRev(ThisWorkbook.Path, "\")) & "JOBnrMed_Tekst.xls")
        Set wksJobs = wkbJobs.Worksheets(1)
        Set rCurReg = wksJobs.Range("A1").CurrentRegion
        Set rCurReg = rCurReg.Offset(1, 0).Resize(rCurReg.Rows.Count - 1)
       
        For Each rCell In rCurReg.Columns(1).Cells
            If UCase(Trim$(CStr(rCell.Value))) = UCase(Trim$(CStr(Target.Value))) Then
                MsgBox "JobNr.:    " & Target.Value & vbCrLf & _
                      "Tekst:      " & rCell.Offset(0, 1).Value & vbCrLf & _
                      "VHC:        " & rCell.Offset(0, 2).Value & vbCrLf & _
                      "Ans. rep.: " & rCell.Offset(0, 3).Value, _
                      vbInformation + vbOKOnly, "Projekt information"
                Exit For
            End If
        Next rCell
        wkbJobs.Close SaveChanges:=False
        GoTo CleanUP
    End If
   
ProgErr:
    MsgBox "Der er sket en fejl!", vbCritical + vbOKOnly, "Systeminformation"

CleanUP:
    Set wkbJobs = Nothing
    Set wksJobs = Nothing
    Set rCurReg = Nothing
    Set rCell = Nothing
    Application.ScreenUpdating = True
End Sub

Johnfm
Avatar billede bak Forsker
08. december 2004 - 00:33 #1
prøv dette

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lCount As Long
    Dim rProjektNumProtect As Range
    Dim wkbJobs As Workbook
    Dim wksJobs As Worksheet
    Dim rCurReg As Range
    Dim rCell As Range
   
    ' Definering af område hvor der ikke må ændres projektnr.
    If Not (Me.Name = "INDSKRIV Projektnr HER") Then
        Set rProjektNumProtect = Me.Range("C8:C500")
    Else
        Set rProjektNumProtect = Me.Range("C28:C500")
        ' Ansvarlig initialer i F155:F174
        If Not Intersect(Target, Me.Range("C8:C27")) Is Nothing Then
            On Error Resume Next
            Application.EnableEvents = False
            Set wkbJobs = Application.Workbooks.Open(Left(ThisWorkbook.Path, _
                InStrRev(ThisWorkbook.Path, "\")) & "JOBnrMed_Tekst.xls")
            Set wksJobs = wkbJobs.Worksheets(1)
            Set rCurReg = wksJobs.Range("A1").CurrentRegion
            Set rCurReg = rCurReg.Offset(1, 0).Resize(rCurReg.Rows.Count - 1)
           
            For Each rCell In rCurReg.Columns(1).Cells
                If UCase(Trim$(CStr(rCell.Value))) = UCase(Trim$(CStr(Target.Value))) Then
                    Me.Range("F147").Offset(Target.Row, 0).Value = rCell.Offset(0, 3).Value
                    Exit For
                End If
            Next rCell
            wkbJobs.Close SaveChanges:=False
            Application.EnableEvents = True
            On Error GoTo 0
        End If
   
        ' Extra indtastningsbeskyttelse
        If Not Intersect(Target, Me.Range("D8:J500")) Is Nothing Then
            Application.EnableEvents = False
            Target.Value = ""
            Target.Select
            Application.EnableEvents = True
        End If
    End If
   
    ' Ingen projektnr indtastning
    If Not Intersect(Target, rProjektNumProtect) Is Nothing Then
        Application.EnableEvents = False
        If Not (Target.Value = sProjektNum) Then
            If Not (sProjektNum = "") Then
                MsgBox "Du må ikke indtaste projekt nr. her!" & vbCrLf & vbCrLf & _
                      "Projekt nr. rettes tilbage automatisk.", vbExclamation + vbOKOnly, "Systeminformation"
                Target.Value = sProjektNum
                Target.Select
            End If
        End If
        Application.EnableEvents = True
    End If
 
   
    ' Punktum til komma
    If Not Intersect(Target, Range("D8:D500,G8:G500")) Is Nothing Then
        On Error Resume Next
        Application.EnableEvents = False
        Target.Value = Format(Replace(Target.Value, ".", ","), "#,##0.00")
        Application.EnableEvents = True
        On Error GoTo 0
    End If
   
CleanUP:
    Set rProjektNumProtect = Nothing
    Set wkbJobs = Nothing
    Set wksJobs = Nothing
    Set rCurReg = Nothing
    Set rCell = Nothing
    Application.ScreenUpdating = True
End Sub
Avatar billede bak Forsker
08. december 2004 - 00:34 #2
sorry, pastede forkert kode..
her er din:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim wkbJobs As Workbook
  Dim wksJobs As Worksheet
  Dim rCurReg As Range
  Dim rCell As Range
  Dim stTarget As String
  Dim MyFound As Boolean
  ' DoubleClick på projektnr.
  If IsEmpty(Target) Then GoTo ProgErr
  On Error GoTo ProgErr

  If Not Intersect(Target, Range("C8:C500")) Is Nothing Then
      Application.ScreenUpdating = False
      Cancel = True
      Set wkbJobs = Application.Workbooks.Open(Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\")) & "JOBnrMed_Tekst.xls")
      Set wksJobs = wkbJobs.Worksheets(1)
      Set rCurReg = wksJobs.Range("A1").CurrentRegion
      Set rCurReg = rCurReg.Offset(1, 0).Resize(rCurReg.Rows.Count - 1)
      stTarget = UCase(Trim$(CStr(Target.Value)))
      For Each rCell In rCurReg.Columns(1).Cells
          If UCase(Trim$(CStr(rCell.Value))) = stTarget Then
              If stTarget Like "[A-Z]*" Then
                  MsgBox "JobNr.:    " & Target.Value & vbCrLf & _
                      "Tekst:      " & rCell.Offset(0, 1).Value & vbCrLf, _
                      vbInformation, "Projekt information"
                      MyFound = True
                  Exit For
              Else
              Str1 = "JobNr.:    " & Target.Value & vbCrLf & _
                      "Tekst:      " & rCell.Offset(0, 1).Value & vbCr & _
                      "VHC:        " & rCell.Offset(0, 2).Value & vbCr & _
                      "Ans. rep.:  " & rCell.Offset(0, 3).Value & vbCr & _
                      "Job prior. :" & rCell.Offset(0, 4).Value & vbCr & _
                      "KKSnr :    " & rCell.Offset(0, 5).Value & vbCr & _
                      "Dato :      " & rCell.Offset(0, 6).Value & vbCr
                  MsgBox Str1, vbInformation, "Projekt information"
                  MyFound = True
                  Exit For
              End If
          End If
      Next rCell
     
      wkbJobs.Close SaveChanges:=False
      If MyFound = False Then GoTo ProgErr
      GoTo CleanUP
  End If

ProgErr:

  MsgBox "”Enten har du skrevet forkert Jobnr, der ikke findes i D7i," & vbCr & _
  "eller også findes Jobnr ikke i VHC for Værksted.”.!", _
  vbCritical + vbOKOnly, "Systeminformation"

CleanUP:
  Set wkbJobs = Nothing
  Set wksJobs = Nothing
  Set rCurReg = Nothing
  Set rCell = Nothing
  Application.ScreenUpdating = True
End Sub
Avatar billede johnfm Nybegynder
08. december 2004 - 08:24 #3
Hej Bak
Den sidste Makro giver fejl, den giver den samme fejl med både forkert eller rigtigt Projektnr, fejlen kommer også når jeg bobbeltklikker et andet sted på arket.
Fejlen: Compile error in hidden modul: Ark12.
Avatar billede bak Forsker
08. december 2004 - 10:10 #4
Jeg kan ikke fremprovokere den fejl !!!
Prøv lige at sætte et apostrof ved disse linier:
If IsEmpty(Target) Then GoTo ProgErr
On Error GoTo ProgErr

Den første er iørigt sat forkert sted, skulle have været under:
If Not Intersect(Target, Range("C8:C500")) Is Nothing Then
Avatar billede johnfm Nybegynder
08. december 2004 - 10:31 #5
Fejlen er der forsat, følgende er mærket rød i Makroen:

MsgBox ""Enten har du skrevet forkert Jobnr, der ikke findes i D7i," & vbCr & _
  "eller også findes Jobnr ikke i VHC for Værksted.".!", _
  vbCritical + vbOKOnly, "Systeminformation"
Avatar billede bak Forsker
08. december 2004 - 15:35 #6
det er fordi den står forkert. Det er hvad der sker ved copy/paste. ret linien så den ikke er rød mere og prøv igen
Avatar billede johnfm Nybegynder
08. december 2004 - 17:25 #7
Hej Bak.
Kan du lige smide et svar, så du kan få nogle meget velfortjente point.
Nu kører Makroen PERFEKT både i skabelon og når ny Projektmappe er oprettet. TAK.
Avatar billede bak Forsker
08. december 2004 - 22:04 #8
john-> tag pointene for dette spm selv, hvis du giver for det andet.. 200 er mere end rigeligt
Avatar billede johnfm Nybegynder
08. december 2004 - 22:14 #9
Jeg er meget tilfreds med din løsninger så du SKAL have 200 point, så smid lige et svar
Avatar billede bak Forsker
08. december 2004 - 22:30 #10
ok, jeg prøvede da :-)
Avatar billede bak Forsker
08. december 2004 - 22:58 #11
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