03. marts 2010 - 12:59Der er
12 kommentarer og 1 løsning
Søgning som stopper makro hvis indholdet ikke er det ønskede
Jeg har en makro som opretter div. tabeller, men hvis værdien XXX IKKE findes i kolonne D, skal markroen IKKE udføres, den skal stoppe makroen og der skal komme følgende fejlbesked "Du har glemt at indlæse SKM koder".
Er der nogen som kender nogle koder, som kan klare ovennævnte ?
If søgIkolonneD("XXX") = True Then ... ... ... ...din kode ... ... ... End If End Sub Private Function søgIkolonneD(id) With ActiveSheet.Range("D:D") Set c = .Find(id, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then søgIkolonneD = True Else søgIkolonneD = False End If End With End Function
Fantastisk det virker, den udfører kun makroen, når der er værdien XXX i kolonne D - det er bare kanon :-).
Kan du også en kode som vil generer et pop-up vindue med teksten "Du har glem at indlæse SKM koder" hvis der IKKE er XXX i kolonne D.
Dvs. hvis der er XXX i kolonne D så kører den makroen (det funger fint nu) og hvis der ikke er så laver den et pop-up med teksten "Du har glemt at indlæse SKM koder" (nu sker der intet da den hopper over makroen) ?
Husk at læg et svar så jeg kan give dig point.
------- Sub Prkvtudltransaktionerkort() ' ' Prkvtkort Makro ' If søgIkolonneD(" XXX") = True Then ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ Worksheets("Data").Range("A1").CurrentRegion).CreatePivotTable TableDestination:="", TableName:= _ "Pivottabel2", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("Pivottabel2").PivotFields("Kilde").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("Pivottabel2").PivotFields("Kvartal").Subtotals = Array _ (False, True, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("Pivottabel2").PivotFields("Valuta").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("Pivottabel2").AddFields RowFields:=Array("Kvartal", _ "Valuta", "Kilde", "Data"), PageFields:="Kundenavn" With ActiveSheet.PivotTables("Pivottabel2").PivotFields("Antal") .Orientation = xlDataField .Position = 1 .NumberFormat = "#,##0" End With With ActiveSheet.PivotTables("Pivottabel2").PivotFields("Beløb i DKK") .Orientation = xlDataField .NumberFormat = "#,##0" End With ActiveWorkbook.ShowPivotTableFieldList = True With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.393700787401575) .RightMargin = Application.InchesToPoints(0.393700787401575) .TopMargin = Application.InchesToPoints(0.393700787401575) .BottomMargin = Application.InchesToPoints(0.393700787401575) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .CenterHorizontally = False .CenterVertically = False .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 100 .PrintErrors = xlPrintErrorsDisplayed End With Range("D3").Select With ActiveSheet.PivotTables("Pivottabel2").DataPivotField .Orientation = xlColumnField .Position = 1 End With With ActiveSheet.PivotTables("Pivottabel2").PivotFields("Kilde") .PivotItems("BGS").Visible = False End With Range("A1").Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With ActiveSheet.PivotTables("Pivottabel2").PivotSelect "", xlDataAndLabel, True Range("A3:E4").Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With ActiveSheet.PivotTables("Pivottabel2").PivotSelect "Kvartal[All;Sum]", _ xlDataAndLabel, True With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With ActiveSheet.PivotTables("Pivottabel2").PivotSelect "'Column Grand Total'", _ xlDataAndLabel, True With Selection.Interior .ColorIndex = 36 .Pattern = xlSolid End With ActiveWorkbook.ShowPivotTableFieldList = False Columns("A:A").EntireColumn.AutoFit End If End Sub Private Function søgIkolonneD(id) With ActiveSheet.Range("D:D") Set c = .Find(id, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then søgIkolonneD = True Else søgIkolonneD = False End If End With End Function
... ... ActiveWorkbook.ShowPivotTableFieldList = False Columns("A:A").EntireColumn.AutoFit Else <------------- indsættes MsgBox("Du har glem at indlæse SKM koder") <--"- End If End Sub Private Function søgIkolonneD(id) With ActiveSheet.Range("D:D") Set c = .Find(id, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then søgIkolonneD = True Else søgIkolonneD = False End If End With End Function
Kanon det virker - super, nu virker makroen hensigtsmæssigt.
Du har jo reelt svaret på 2 spørgsmål, så kan du ikke lægge et svar mere, så jeg også kan give dig point for det sidste svar.
P.S. Kan man lave lave en indledende kommentarboks med teksten "har du indtastet SKM koder" hvor man så kan vælge JA / NEJ. Ved JA starter den makroen, ved NEJ aflutter den uden at foretage sig noget (det skal være en tilføjelse til de bestående koder) ?
--------- Sub Prkvtudltransaktionerkort() ' ' Udltransaktioner Makro ' If søgIkolonneD("XXX") = True Then ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ Worksheets("Data").Range("A1").CurrentRegion).CreatePivotTable TableDestination:="", TableName:= _ "Pivottabel2", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("Pivottabel2").PivotFields("Kilde").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("Pivottabel2").PivotFields("Kvartal").Subtotals = Array _ (False, True, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("Pivottabel2").PivotFields("Valuta").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("Pivottabel2").AddFields RowFields:=Array("Kvartal", _ "Valuta", "Kilde", "Data"), PageFields:="Kundenavn" With ActiveSheet.PivotTables("Pivottabel2").PivotFields("Antal") .Orientation = xlDataField .Position = 1 .NumberFormat = "#,##0" End With With ActiveSheet.PivotTables("Pivottabel2").PivotFields("Beløb i DKK") .Orientation = xlDataField .NumberFormat = "#,##0" End With ActiveWorkbook.ShowPivotTableFieldList = True With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.393700787401575) .RightMargin = Application.InchesToPoints(0.393700787401575) .TopMargin = Application.InchesToPoints(0.393700787401575) .BottomMargin = Application.InchesToPoints(0.393700787401575) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .CenterHorizontally = False .CenterVertically = False .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 100 .PrintErrors = xlPrintErrorsDisplayed End With Range("D3").Select With ActiveSheet.PivotTables("Pivottabel2").DataPivotField .Orientation = xlColumnField .Position = 1 End With With ActiveSheet.PivotTables("Pivottabel2").PivotFields("Kilde") .PivotItems("BGS").Visible = False End With Range("A1").Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With ActiveSheet.PivotTables("Pivottabel2").PivotSelect "", xlDataAndLabel, True Range("A3:E4").Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With ActiveSheet.PivotTables("Pivottabel2").PivotSelect "Kvartal[All;Sum]", _ xlDataAndLabel, True With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With ActiveSheet.PivotTables("Pivottabel2").PivotSelect "'Column Grand Total'", _ xlDataAndLabel, True With Selection.Interior .ColorIndex = 36 .Pattern = xlSolid End With ActiveWorkbook.ShowPivotTableFieldList = False Columns("A:A").EntireColumn.AutoFit Else MsgBox ("Du har glem at indlæse SKM koder") End If End Sub Private Function søgIkolonneD(id) With ActiveSheet.Range("D:D") Set c = .Find(id, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then søgIkolonneD = True Else søgIkolonneD = False End If End With End Function
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.