11. april 2012 - 14:47Der er
4 kommentarer og 1 løsning
Hente data fra tilhørende række
På en userform er der flg. Tekstboks 1 Tekstboks 2 Tekstboks 3 Tekstboks 4 Tekstboks 5 Tekstboks 6 Tekstboks 7 Tekstboks 8 Tekstboks 9 Tekstboks 10 Tekstboks 11 Tekstboks 12 I tekstboks 2 skrives et nummer, som der skal søges efter i kolonne B. Når dette findes, skal der i de øvrige tekstbokse fremkomme data fra samme række, altså tekstboks 1= data kolonne A, tekstboks 3=data kolonne C, tekstboks4=data kolonne D, osv. Jeg forestiller mig, at det kan gøres via Change i tekstboks 2. Når data er fundet, skal man kunne rette i data og derefter gemme nye data under det fundne nummer i tekstboks 2 - dvs. at gamle data skiftes ud med nye.
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.
Dim antalRækker As Long, containerRække As Long 'globale variabler - kan tilgås fra alle sub og functions Private Sub Annuler_Click() Unload Me 'Userform lukkes End Sub Private Sub Gem_Click() gemFelter containerRække 'Felt-værdier gemmes End Sub Private Sub SøgeTekst_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Reno Djurs nr. forlades If Me.SøgeTekst <> "" Then 'Bestående felter slettes, hvis søgefelt udfyldt clearFelter
containerRække = søgEfterContainerNr(Me.SøgeTekst) 'funktionen søgEfterContainer kaldes med SøgeTekst som parameter If containerRække > 0 Then 'hvis række er fundet d.v.s. > 0 Me.Gem.Enabled = True 'så kan der gemmes visFelter containerRække 'vis de enkelte felter Else Me.Gem.Enabled = False 'søgekriteriet blev ikke fundet - neutraliser gem-knap
MsgBox "Reno Djurs Nr.: " & Me.SøgeTekst & " kunne ikke findes" End If End If End Sub Private Function søgEfterContainerNr(cNr) Dim ræk For ræk = 2 To antalRækker 'søgning begynder i række 2 If Range("B" & ræk) = CStr(cNr) Then 'kolonne 2 sammenlignes med søgenr, der sættes på string-form så det passer til feltet fra userform søgEfterContainerNr = ræk 'funktionen returnerer rækkenr og funktionen afbrydes Exit Function End If Next ræk søgEfterContainerNr = 0 'det søgte blev ikke fundet - returner 0 End Function Private Sub visFelter(ræk) 'Alle felter indeholder Kol & et tal mellem 1 og 12 i userform Dim cc As Control, kolNr As Byte For kolNr = 1 To 12 If kolNr <> 2 Then 'Kol2 er Reno Djurs Nr - så det skal ikke vises igen Set cc = Me.Controls("Kol" & CStr(kolNr)) 'feltet i userform initieres - så det kan tilskrives værdi fra regnearket *)
If kolNr = 1 Then 'datofelt editeres så det vises på dk-facomn cc.Value = Format(Cells(ræk, kolNr), "dd-mm-yyyy") Else cc.Value = Cells(ræk, kolNr) 'celle i arket overfæøres til userform-feltet *) End If End If Next kolNr End Sub Private Sub clearFelter() Dim cc As Control, kolNr As Byte For kolNr = 1 To 12 'samme princip for at tilgå felter i userform If kolNr <> 2 Then Set cc = Me.Controls("Kol" & CStr(kolNr)) cc.Value = "" End If Next kolNr End Sub Private Sub gemFelter(ræk) 'samme princip som visfelter - blot omvendt Dim cc As Control, kolNr As Byte For kolNr = 1 To 12 If kolNr <> 2 Then Set cc = Me.Controls("Kol" & CStr(kolNr)) If kolNr = 1 Then Cells(ræk, kolNr) = Format(cc.Value, "mm-dd-yyyy") Else Cells(ræk, kolNr) = cc.Value End If End If Next kolNr End Sub Private Sub UserForm_activate() antalRækker = ActiveCell.SpecialCells(xlLastCell).Row 'antal rækker i aktuelle ark beregnes Me.Gem.Enabled = False 'Gem knap neutraliseres End Sub
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.