Hej Hvordan får man Excel til at automatisk at opdatere til et nyt fakturanummer, når man skal skrive en ny faktura !! Skal man tildele den en makro og hvis ja hvordan skal den se ud.
Du skal benytte en makro og have en "fast" filsystem. Herefter kan du med en makro se de sidste nummer i rækken - og dernæst indsætte den næste nummer i rækken i det nye regneark.
Her er to metoder til at gøre godt med. Begge skal indsættes i skabelonen. Rutinen bruger Excels Open-event. 1. Stå i arket og tast <Alt><F11> for at komme til VBA editoren. 2. Find skabelonen i projektvinduet (øverst til venstre) og dobbeltklik på \"ThisWorkbook\". 3. Indsæt én af rutinerne.
Den første rutine lægger/henter oplysningerne i en INI-fil, og er god, hvis flere brugere skal bruge systemet. Den anden rutine lægger/henter oplysningerne i registreringsdatabasen. Ret selv til dine aktuelle navne.
Med venlig hilsen LeoH
Første metode:
Private Declare Function GetPrivateProfileString Lib \"kernel32\" Alias \"GetPrivateProfileStringA\" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib \"kernel32\" Alias \"WritePrivateProfileStringA\" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Sub Workbook_Open() \'leo.heuser@get2net.dk juni 2000 \'Fra skabelonen sættes reference til \'Microsoft Visual Basic for Applications Extensibility 5.3 \'i menuen Funktioner (Tools) Dim WorksheetName As String Dim WorksheetCell As String Dim Section As String Dim kKey As String Dim lLine As Long Dim InvoiceNumber As Long Dim InvoiceNumberCell As Object Dim TemplateName As String Dim IniFileName As String Dim Dummy As Variant
Set InvoiceNumberCell = Worksheets(WorksheetName).Range(WorksheetCell) If UCase(ActiveWorkbook.Name) = UCase(TemplateName) Then GoTo Finito Dummy = GetString(Section, kKey, IniFileName) If Left(Dummy, 1) = Chr$(0) Then InvoiceNumber = 1 Else InvoiceNumber = CLng(Dummy) + 1 End If WritePrivateProfileString Section, kKey, CStr(InvoiceNumber), IniFileName InvoiceNumberCell.Value = InvoiceNumber With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.CodeName).CodeModule lLine = .ProcBodyLine(\"Workbook_Open\", vbext_pk_Proc) .InsertLines lLine + 1, \"Exit Sub\" End With Finito: Set InvoiceNumberCell = Nothing End Sub
Function GetString(Section As String, Key As String, File As String) As String Dim KeyValue As String Dim Characters As Long KeyValue = String(255, 0) Characters = GetPrivateProfileString(Section, Key, \"\", KeyValue, 255, File) If Characters > 1 Then KeyValue = Left(KeyValue, Characters) End If GetString = KeyValue End Function ____________________________________
Anden metode:
Private Sub Workbook_Open() \'leo.heuser@get2net.dk juni 2000 \'Fra skabelonen sættes reference til \'Microsoft Visual Basic for Applications Extensibility 5.3 \'i menuen Funktioner (Tools) Dim WorksheetName As String Dim WorksheetCell As String Dim SettingName As String Dim lLine As Long Dim InvoiceNumber As Variant Dim InvoiceNumberCell As Object Dim TemplateName As String
Set InvoiceNumberCell = Worksheets(WorksheetName).Range(WorksheetCell) If UCase(ActiveWorkbook.Name) = UCase(TemplateName) Then GoTo Finito InvoiceNumber = GetSetting(SettingName, \"Invoice\", \"InvoiceNumber\") If InvoiceNumber = \"\" Then InvoiceNumber = 1 Else InvoiceNumber = InvoiceNumber + 1 End If SaveSetting SettingName, WorksheetName, \"InvoiceNumber\", InvoiceNumber InvoiceNumberCell.Value = InvoiceNumber With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.CodeName).CodeModule lLine = .ProcBodyLine(\"Workbook_Open\", vbext_pk_Proc) .InsertLines lLine + 1, \"Exit Sub\" End With Finito: Set InvoiceNumberCell = Nothing End Sub
Hmm, endnu et \"glemt\" spørgsmål! Synd at et så godt svar ikke fortjener en belønning!
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.