Forfatter |
Emne Søg Emne funktioner
|
andreas
Bronze bruger
Medlem: 22.Aug.2010
Land: Danmark
Status: Offline
Point: 35
|
Emne: Offset problem Sendt: 24.Aug.2010 kl. 14:36 |
Jeg mangler en kode der kan automatisk gå ned i en kolonne og finde et bestemt tal. Udfra det tal skal Vba så ofsette fra en textbox til den næste tomme celle i en række? Jeg har prøvet mig frem men uden held :(
|
|
|
|
|
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 24.Aug.2010 kl. 15:31 |
Hej Andreas,
Uha, det var ikke mange informationer du der kom med
Denne kode søger i et område (A1:A100) og finder en værdi (SkalFindes) Når den har fundet (SkalFindes) laver den Offset på antal rækker nedad (Raekker) og antal kolonner mod høre (Kolonne) Den celle som rammes, får værdien (SkalSkrives)
Prøv denne:
Sub Find() '******************** SkalFindes = 100 Raekker = 10 Kolonner = 2 SkalSkrives = "Her" '********************
For Each c In Range("A1:A100").Cells If c.Value = SkalFindes Then c.Offset(Raekker, Kolonner).Value = SkalSkrives End If Next c
End Sub
Bemærk at Raekker og Kolonner også kan angives negativt og dermed søge opad.
/Allan
|
|
andreas
Bronze bruger
Medlem: 22.Aug.2010
Land: Danmark
Status: Offline
Point: 35
|
Sendt: 24.Aug.2010 kl. 15:56 |
Det sku noget nemmere end den jeg selv har kreeret som er noget kringlet:
Private Sub CommandButton1_Click()
Set rt = Ark1 For l = 1 To rt.Range("A65536").End(xlUp).Row If UCase(Cells(l, 1)) = TextBox2.Value Then Cells(l, 1).Select End If Next l
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1) = TextBox1.Value
Set rd = Ark1 For i = 1 To rd.Range("A65536").End(xlUp).Row If UCase(Cells(i, 1)) = TextBox2.Value Then Cells(i, 1).Select End If Next i
End Sub
:) Men den virker :)
|
|
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 24.Aug.2010 kl. 16:02 |
andreas skrev:
Det sku noget nemmer end den jeg selv har kreeret som er noget kringlet:
:) Men den virker :) |
Det er jo det der er det fede ved at kode, der er ikke umiddelbart en facitliste, kreativiteten får lov at blomstre.
Som du sikkert har lagt mærke til, ynder jeg at kode diverse variable forekomster øverst i koden, det er meget lettere hvis du pludselig får brug for at ændre i koden igen efter et par år.
Resten er en smagssag
Meeen Andreas, nu kan jeg jo se at du kan skrive VBA, det forpligter jo her i forummet
//Allan
|
|
andreas
Bronze bruger
Medlem: 22.Aug.2010
Land: Danmark
Status: Offline
Point: 35
|
Sendt: 24.Aug.2010 kl. 17:28 |
Jeg har været rundt i forumet for at se om der er nogen jeg kan hjælpe. Men er nu selv noget af en nybegynder. Jeg skriver også hvis jeg selv finder løsninger på problemer.
|
|
andreas
Bronze bruger
Medlem: 22.Aug.2010
Land: Danmark
Status: Offline
Point: 35
|
Sendt: 24.Aug.2010 kl. 17:32 |
Jeg har prøvet at få den til at skrive "her" i den sidste række udfra det fundne C (xlRight) men kan kun få den til at tælle ned af(xlDown)
Private Sub Ok1_Click()
Raekker = 10 Kolonner = 3 SkalSkrives = "Her" '******************** For Each c In Range("b5:b1000").Cells If c.Value = Sagsnr.Text Then c.End(xlright).offset(Raekker, Kolonner).Value = SkalSkrives End If Next c
Unload Me
End Sub
Hvordan gøres dette??
|
|
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 24.Aug.2010 kl. 20:18 |
Jeg er ikke helt med.
Hvis vi nu antager at den finder Sagsnr i B5, hvilken celle skal der så skrives 'her' i?
//Allan
|
|
andreas
Bronze bruger
Medlem: 22.Aug.2010
Land: Danmark
Status: Offline
Point: 35
|
Sendt: 25.Aug.2010 kl. 08:15 |
Hvis Den finder sagsnr i B2 så skal der skrives "Her" i den sidste kolone.
Jeg har prøvet at ilustrer hvad det er jeg gerne vil have :)
A B C D
Sags nr Timer Timer Timer
100 5 5
101 5
102 4
osv.. osv..
DVS:
Hvis sagsnr = 100 Så skrives "Her" i D2
Hvis sagsnr = 101 så skrives "Her" i C2
OSV...
Jeg har lavet en userform med to textbox'er
Den første textbox indtaster man sagsnr, det gør at VBA automatisk finder rækken med det tilsvarende sagsnr.
Den anden textbox indtaster man timer man har brugt på sagen. Vba finder så den sidste tomme celle i kolonen og intaster timerne.
Håber dette var en bedre forklaring :)
|
|
andreas
Bronze bruger
Medlem: 22.Aug.2010
Land: Danmark
Status: Offline
Point: 35
|
Sendt: 25.Aug.2010 kl. 19:23 |
JEG FANT EN LØSNING PÅ DET :)
Private Sub Ok1_Click() Raekker = 0 Kolonner = 1 SkalSkrives = "Her" '******************** For Each c In Range("b5:b1000").Cells If c.Value = Sagsnr.Text Then c.End(xlToRight).offset(Raekker, Kolonner).Value = SkalSkrives End If Next c Unload Me End Sub
Det virker sku Der manglede bare et TO
|
|
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 25.Aug.2010 kl. 21:26 |
Tak Andreas,
Sorry Jeg havde simpelthen ikke tid til at svare før nu, men du klare den jo alligevel supercool.
God aften.
//Allan
|
|
andreas
Bronze bruger
Medlem: 22.Aug.2010
Land: Danmark
Status: Offline
Point: 35
|
Sendt: 26.Aug.2010 kl. 11:57 |
Ja det tog mig lidt tid men det gik
Jeg vil gerne have VBA til at skrive en Msgbox hvis den ikke finder noge??
Hvis der ikke findes noget C så skal der vises en besked.
|
|
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 26.Aug.2010 kl. 16:15 |
Noget lignene:
Private Sub Ok1_Click() Raekker = 0 Kolonner = 1 SkalSkrives = "Her" '******************** Counter = 0 For Each c In Range("b5:b1000").Cells If c.Value = Sagsnr.Text Then c.End(xlToRight).Offset(Raekker, Kolonner).Value = SkalSkrives Counter = Counter + 1 End If Next c If Counter < 1 Then MsgBox "Det blev ikke fundet noget", vbInformation Unload Me End Sub
|
|