I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Kode anbringes i Lejelistens ark1 i VBA Tekstfilen anbringes i samme Mappe som Lejelisten Koden iværksættes p.t. fra VBA - men ellers opret en knap og forbind den med: Public Sub udførImport
Const importFilnavn = "import.txt" 'kan tilpasses Dim sti, antalRæk Public Sub udførImport() Rem hentsti sti = ActiveWorkbook.Path If Right(sti, 1) <> "\" Then sti = sti + "\" End If
Rem antalrækker i lejeliste antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
Rem udfør importen importer
End Sub Private Sub importer() Dim lejenr, beløb, lejerRæk
Open sti + importFilnavn For Input As #1 Rem indlæs overskrift Input #1, txt1, txt2
While Not EOF(1) Input #1, lejenr, beløb lejerRæk = findLejer(lejenr) If lejerRæk > 0 Then opdaterbeløb lejerRæk, beløb Else MsgBox ("LejerNr.: " + CStr(lnr) + " ikke fundet") End If Wend
Close #1 End Sub Private Function findLejer(lnr) Rem find lejenr i liste For r = 2 To antalRæk If Cells(r, 3) = lnr Then findLejer = r Exit Function End If Next r findLejer = 0 End Function Private Sub opdaterbeløb(ræk, beløb) Cells(ræk, 4) = Cells(ræk, 4) + beløb End Sub
Kode anbringes i Lejelistens ark1 i VBA Tekstfilen anbringes i samme Mappe som Lejelisten Koden iværksættes p.t. fra VBA - men ellers opret en knap og forbind den med: Public Sub udførImport <<<<<<--------------------- det var en del af forklaringen.. --------------------------------------------------
PS: Jeg anvender denne opstilling i LEJELISTEN iflg. dit spørgsmål: Navn Adresse Leje nr. Beløb XXXX XXXX 0123456 80,00-
altså lejenr. i kolonne C.
Hvis Lejenr er i kolonne A - så ret følgende i denne function:
Private Function findLejer(lnr) Rem find lejenr i liste For r = 2 To antalRæk If Cells(r, 1) = lnr Then '<----------- p.t.:(r,3) findLejer = r Exit Function End If Next r findLejer = 0 End Function
Første lejer - programmet antager, at linie 1 i importfilen er overskrifter - da dette ikke er tilfældet så sletter du følgende:
Private Sub importer() Dim lejenr, beløb, lejerRæk
Open sti + importFilnavn For Input As #1 Rem indlæs overskrift '<---- slettes Input #1, txt1, txt2 '<---- slettes
While Not EOF(1) Input #1, lejenr, beløb lejerRæk = findLejer(lejenr) If lejerRæk > 0 Then opdaterbeløb lejerRæk, beløb Else MsgBox ("LejerNr.: " + CStr(lnr) + " ikke fundet") End If Wend
Iflg. dette: "og beløbet skal udskrives i kroner.." var antagelsen at det var hele kr - men hvis dette ikke er tilfældet - så er din tilføjelse OK - men beløbs-kolonner skal så formateres med 2 dec.
Const importFilnavn = "import.txt" 'kan tilpasses Dim sti, antalRæk Dim ingenLejer As Single Private Sub udførImport() Rem hentsti sti = ActiveWorkbook.Path If Right(sti, 1) <> "\" Then sti = sti + "\" End If
ingenLejer = 0
Rem antalrækker i lejeliste antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
Rem udfør importen importer
Rem Test om omsamlede beløb for ukendt lejer If ingenLejer > 0 Then antalRæk = antalRæk + 1 Cells(antalRæk, 1) = "Ukendt lejer" Cells(antalRæk, 4) = ingenLejer End If
MsgBox ("Importen udført") End Sub Private Sub importer() Dim lejenr, beløb, lejerRæk Open sti + importFilnavn For Input As #1 While Not EOF(1) Input #1, lejenr, beløb lejerRæk = findLejer(lejenr) If lejerRæk > 0 Then opdaterbeløb lejerRæk, beløb Else MsgBox ("LejerNr.: " + CStr(lejenr) + " ikke fundet") ingenLejer = ingenLejer + beløb End If Wend
Close #1 End Sub Private Function findLejer(lnr) Rem find lejenr i liste For r = 2 To antalRæk If Cells(r, 1) = lnr Then findLejer = r Exit Function End If Next r findLejer = 0 End Function Private Sub opdaterbeløb(ræk, beløb) Cells(ræk, 4) = Cells(ræk, 4) + beløb / 100 End Sub
I den sidste version forudsætter programmet, at det er kolonne A: *** Rem find lejenr i liste For r = 2 To antalRæk If Cells(r, 1) = lnr Then <---- (r,1) 1 = A findLejer = r Exit Function End If Next r findLejer = 0 End Function ***
Det tager vi lige højde for - ny version af nedenstående "Sub":
Private Sub importer() Dim lejenr, beløb, lejerRæk On Error GoTo lukImport
Open sti + importFilnavn For Input As #1 While Not EOF(1) Input #1, lejenr, beløb lejerRæk = findLejer(lejenr) If lejerRæk > 0 Then opdaterbeløb lejerRæk, beløb Else MsgBox ("LejerNr.: " + CStr(lejenr) + " ikke fundet") ingenLejer = ingenLejer + beløb / 100 End If Wend
Ok.... men nu er den vist helt galt ;( Når jeg trykker play, så kommer der bare en tom boks op, har jeg trykket på noget forkert? VBA scriptet ligger der som det skal!
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.