Hej. Lavet følgende simple kode. Denne fejler desværre også. Såvidt jeg kan se er det genkendelsen af arknavnet "Generelt" i Ark1 - som det kniber med - for der skrives ikke noget i N30:
Sub A22_PDF() If Sheets(1).Name = "Generelt" Then Sheets("Generelt").Select Range("N30").FormulaR1C1 = "PDF-22-Sjov" Else Application.Dialogs(xlDialogOpen).Show Sheets("Generelt").Select Range("M30").FormulaR1C1 = "PDF-22-Ikke-Sjov" End If End Sub
Makroen ligger i en anden Workbook. Den skal når den fungerer - distruberes som en knap til flere brugere via et tilføjelsesprogram.
Yes. Der bliver skrevet i M30 - uanset at man annullerer åbning af fil (hvilket jeg i og for sig også kunne tænke mig at den lod være med - men det er et andet issue).
Checket endnu engang i VBA - Ark1 er lig arket Generelt.
Hvis du vil, må du gerne sende mig dine 2 workbooks - den med koden og en med Generelt-fanen i. Bare lige for at tjekke; for som sagt fungerer din indledende kode efter hensigten hos mig.
Problemstilling er, at Ark1 er lig arket Generelt, men Sheets(1) er det første Ark i projektmappen, som hedder Forside.
Dermed kan jeg ikke bruge denne metode til at skelne om brugeren skal anvende den åbne excelmappe - eller der skal åbnes en anden - så vidt jeg har forstået.
Prøv at teste denne, hvis arket ikke er i den første, kommer dialogen og du vælger en anden, hvis arket heller ikke er i den lukkes den igen og dialogen kommer igen. du kan nu også allulere dialogen.
Var det det du efterlyste ??
Sub A22_PDF() If EksistererArk("Generelt") Then Sheets("Generelt").Select Range("N30").FormulaR1C1 = "PDF-22-Sjov" Else Forfra: Navn = Application.Dialogs(xlDialogOpen).Show If Navn = False Then Exit Sub If EksistererArk("Generelt") Then Sheets("Generelt").Select Range("M30").FormulaR1C1 = "PDF-22-Ikke-Sjov" Else ActiveWorkbook.Close GoTo Forfra End If
End If End Sub
Public Function EksistererArk(Navn As String) As Boolean For Each SH In ActiveWorkbook.Sheets If SH.Name = Navn Then Eksisterer = True Exit Function End If Next End Function
Sub A22_PDF() If EksistererArk("Generelt") Then Sheets("Generelt").Select Range("N30").FormulaR1C1 = "PDF-22-Sjov" Else Forfra: Navn = Application.Dialogs(xlDialogOpen).Show If Navn = False Then Exit Sub If EksistererArk("Generelt") Then Sheets("Generelt").Select Range("M30").FormulaR1C1 = "PDF-22-Ikke-Sjov" Else ActiveWorkbook.Close GoTo Forfra End If End If End Sub
Public Function EksistererArk(Navn As String) As Boolean For Each SH In ActiveWorkbook.Sheets If SH.Name = Navn Then EksistererArk = True Exit Function End If Next EksistererArk = False End Function
Den virker bare. Dejlig med den sidste tilføjelse. Det løste problemet.
Hvis IF-sætningen udover at checke om arket Generelt eksisterer i den åbne projektmappe, kan man så tillige checke om Range("D3") har værdien SAND. Altså før man vælge at åbne en ny fil.
Jeg fandt ud af at sammenhængen med Range("D3") ikke var nødvendig. Tusind tak for hjælpen.
Synes godt om
Ny brugerNybegynder
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.