Hvis du mener ubundne tekstbokse bliver de jo navngivet af Access selv. Da du ikke kan have Tekstbokse med samme navn, er der vel ingen ide i at lave en funktion der kan navngive alle i eet hug. Jeg plejer at navngive dem efter de data de indeholder med st sigende navn der refererer til data.
Hvis det er fordi du gerne vil kunne referere til dine TB'se, så kan du anvende denne metode:
dim strKtrl as string strKtrl= "Tekst" & Me.ActiveControl.TabIndex Me(strKtrl).SetFocus
Det forudsætter selvfølgelig du har styr på dine tab's ;-) Men det er en metode man må anvende istedet for ControlArrays som ikke lader sig gøre i VBA.
Brynil-> Hvad er forskellen på dit eks og så bare at skrive: Me.ActiveControl.Setfocus hvilket i sig selv er overflødigt da feltet allerede har focus for at kunne være ActiveControl.
Vanni-> Du kan gennemløbe alle dine tekstbokse således:
Dim Ctrl as Control For Each Ctrl In Me If ctrl.Controltype = actextbox then 'gør et eller andet, f.eks.: ctrl.backcolor = 0 endif Next Ctrl
thomasjepsen -> Her tildeler du tekstboksene en egenskab nemlig en backcolor, det kunne have været en anden egenskab so forecolor eller Fontbold = true.
Formålet med Vanni's spørgsmål var at kunne gennemløbe alle tekstboksene vha en løkke (jvf hans kommentar kl 20:41:30). Og hvis man skal gennemløbe alle tekstboksene, er det vel for at gøre noget med dem (f.eks. skifte en egenskab). Derfor foreslog jeg bare en måde at gennemløbe alle tekstboksene ligegyldigt hvad de hedder. For som du selv skriver, så er det nemmest, hvis tekstboksene har nogle sigende navne som refererer til indholdet.
OK-jeg tænkte at siden han ønskede at give sine tekstbokse kontrollerede navne, så var det fordi han skulle kunne arbejde med dem. Det jeg beskriver kan f.ex anvendes til at flytte fra en tekstboks til en anden med et givet interval eller ud fra nogle forudsætninger.
thomasjepsen -> Helt enig. Jeg forstod spørgsmålet således, at vanni vil gennemløbe alle tekstbokse og ændre det navn som Access automatisk har tildelt dem. Og det finder jeg ikke der er mening i.
Hvis man virkelig gjorde det, så skulle man bagefter gennemløbe alle etiketter og tildele dem en tekst der refererer til indholdet af datafeltet. Ellers er der slet ikke mening i det.
Mugs->endif bliver automatisk til End If af Access :o)
vanni->koden gennemløber alle kontrolelementer på formularen. Ctrl sættes til hver kontrol en efter en. Hvis det er en tekstboks gøres et eller andet. (f.esk skifter baggrundsfarve)
thomasjepsen: Forestil dig nedenstående er 12 tekstbokse. Hvis jeg f.eks havde et array med 12 forskellige værdier, jeg ville tildele tekstboksene - hvordan ville du gribe det an:
Dim i As Integer Dim mitArray mitArray = Array("dav", "hej", "godsda", "hest", "osv") For i = 0 To UBound(mitArray) Me.Controls("t" & i + 1) = mitArray(i) Next i
mugs-> Du har ret i at det ikke giver megen mening at ændre de navne Access defaultt tildeler til noget andet "intetsigende", nmen der kan jo være årsager, som vi ikke kender, og vanni har ikke været så meget på banen selv.
Og er der så mange tekstbokse, kan det måske godt være en fordel at gøre det med kode ;-)
Jeg mener stadig at man skal holde sig til de sigende navne. I stedet kan man f.eks. benytte tekstboksens Tag-egenskab (Mærke) til at styre tildelingerne.
Hvis de 12 tekstbokse får sat egenskaben Mærke = 1, 2, 3,..., 12 så kan man benytte min kode således: Dim Ctrl as Control For Each Ctrl In Me If ctrl.tag <> "" then ctrl = DitArray(val(ctrl.tag)) endif Next Ctrl
Generelt er Tag en genial egenskab til denne slags gennemløb!
Mugs-> bare rolig, du skal nok få masser af chancer. Men ikke denne gang :o)
Niels->Nej, jeg ved ikke hvorfor Access ikke retter andre 'fejl'. I tidligere versioner var der flere af den slags hjælp. Bla. rettede Access selv End Sub til End Function (og omvendt) hvis man skrev forkert her. Men siden version 97 eller 2000 så har mange af disse hjælp ikke fungeret :o(
rettelse: Det var selvfølgelig Exit Sub, som blev rettet til Exit Function og omvendt. End Sub skriver man jo stort set aldrig, da Access selv indsætter denne.
Amrikaner-> ja, det sker automatisk i dag, men i de tidligere versioner var der flere hjælpe-automatikker - bla. skiftede den Exit Sub til Exit Function, hvis du stod i en Funktion
Tags eksiterer hele tiden, men kan kun sættes med formularen i designvisning. De kan refereres med den kode, som thomasjepsen beskrev 23:09:25 eller en variant af den. Denne kode finder fx en tekstboks med mærket 7, og giver den baggrundsfarven Rød.
For Each Ctrl In Me If Ctrl.Tag = 7 Then Ctrl.BackColor = 255 End If Next Ctrl
jkrons kode ar afprøvet og fungerer perfekt. vanni < Hvis du lægger din e-mail mkan jeg sende dig et eksempel.
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.