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.
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.