07. december 2004 - 22:39Der 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
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
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
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
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.
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"
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.
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.