Avatar billede alen32 Nybegynder
05. maj 2008 - 19:19 Der er 17 kommentarer og
1 løsning

Tilpasse makro

Jeg har en listbox i ark3. Når en bruger dobbeltklikker på en af de valgmuligheder kører nedenstående makro som finder den samme værdi i ark2. Makroen kopierer bestemte celler og indsætter dem i ark3 med start i kolonne B og celle31. Jeg vil gerne have ændret makro sådan at når makroen er kørt første gang og udfyld cellerne B31:B34 så næste gang makroen kører så skal værdier indsættes i kolonne C31:C34. Åltså hver gang makro kører så skal værdier indsættes i næste tommer kolonne.



Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim rFound As Range
Dim rLook As Range
Dim rValue As String
Dim rDest As Range
If ListBox1.Value = var1 Then Exit Sub
rValue = ListBox1.Value
var1 = rValue

Set rLook = Worksheets("Ark2").Range("e1:e65000")
Set rFound = rLook.Find(rValue, , , xlWhole)
If Not rFound Is Nothing Then
With Worksheets("Ark3")
.Range("B31") = rFound.Offset(0, 0).Value
.Range("B32") = rFound.Offset(1, 0).Value
.Range("B33") = rFound.Offset(0, 7).Value
.Range("B34") = rFound.Offset(0, 5).Value
End With
End If
End Sub
Avatar billede excelent Ekspert
05. maj 2008 - 19:36 #1
noget i den stil ... ikke testet

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim rFound As Range
Dim rLook As Range
Dim rValue As String
Dim rDest As Range
If ListBox1.Value = var1 Then Exit Sub
rValue = ListBox1.Value
var1 = rValue

Set rLook = Worksheets("Ark2").Range("e1:e65000")
Set rFound = rLook.Find(rValue, , , xlWhole)
If Not rFound Is Nothing Then
With Worksheets("Ark3")
kol = Cells(31, 255).End(xlToLeft).Column
.Cells(31, kol) = rFound.Offset(0, 0).Value
.Cells(32, kol) = rFound.Offset(1, 0).Value
.Cells(33, kol) = rFound.Offset(0, 7).Value
.Cells(34, kol) = rFound.Offset(0, 5).Value
End With
End If
End Sub
Avatar billede excelent Ekspert
05. maj 2008 - 19:37 #2
du skal muligvis tilføje denne for at sikre der startes i kolonne B

if kol<2 then kol=2
Avatar billede alen32 Nybegynder
05. maj 2008 - 19:41 #3
Den virker ikke som den skal.
Den kopirer celler med start i celle a31 og den skal starte i celle B31 og desuden skriver den ikke i den næste række, men den bliver ved med at overskrive den samme række.
Avatar billede alen32 Nybegynder
05. maj 2008 - 19:46 #4
Jeg har tilføjet If kol < 2 Then kol = 2 men den fortsætter som hidtil.
Avatar billede excelent Ekspert
05. maj 2008 - 19:47 #5
ret lige til

kol = sheets("Ark3").Cells(31, 255).End(xlToLeft).Column
Avatar billede alen32 Nybegynder
05. maj 2008 - 19:58 #6
Jeg har erstattet den
kol = Cells(31, 255).End(xlToLeft).Column
med den her
kol = sheets("Ark3").Cells(31, 255).End(xlToLeft).Column

men den gør det samme igen.
Avatar billede excelent Ekspert
05. maj 2008 - 20:01 #7
ok jeg tester lige eller du kan sende filen
Avatar billede kabbak Professor
05. maj 2008 - 20:05 #8
kol = Cells(31, 255).End(xlToLeft).Column + 1
Avatar billede excelent Ekspert
05. maj 2008 - 20:06 #9
nemli ja :-)  +1
Avatar billede excelent Ekspert
05. maj 2008 - 20:06 #10
er vist blevet lidt støvet :-)
Avatar billede alen32 Nybegynder
05. maj 2008 - 20:08 #11
Jeg fandt på den her
kol = Sheets("Udskriv").Cells(31, 255).End(xlToLeft).Offset(0, 1).Column

Tak for hjælpen.
Send et svar.
Avatar billede kabbak Professor
05. maj 2008 - 20:08 #12
er ikke sikker, tænkte ikke på at du tjekkede venstre, så det er nok forkert
Avatar billede excelent Ekspert
05. maj 2008 - 20:15 #13
du skal nok have +1 med

kol = Sheets("Udskriv").Cells(31, 255).End(xlToLeft).Offset(0, 1).Column +1
Avatar billede alen32 Nybegynder
05. maj 2008 - 20:15 #14
Begge virker.
kol = Cells(31, 255).End(xlToLeft).Column + 1
kol = Sheets("Udskriv").Cells(31, 255).End(xlToLeft).Offset(0, 1).Column
Avatar billede excelent Ekspert
05. maj 2008 - 20:16 #15
kol = Sheets("Udskriv").Cells(31, 255).End(xlToLeft).Column +1
Avatar billede excelent Ekspert
05. maj 2008 - 20:16 #16
ok :-)
Avatar billede alen32 Nybegynder
05. maj 2008 - 20:29 #17
Jeg har også et problem mere. Jeg vil gerne tjekke hvad der står i cellen .rFound.Offset(0,2) og hvis der står "Kalundborg"  så skal der i celle 33 ark3 skrives værdi .Cells(33, kol) = rFound.Offset(0, 7).Value og hvis der står noget andet så skal der skrives i den samme celle .Cells(33, kol) = rFound.Offset(0, 2).Value


Noget i den her retning
If .rFound.Offset(0,2).Value = "Kalundborg" then
.Cells(33, kol) = rFound.Offset(0, 7).Value
Else
.Cells(33, kol) = rFound.Offset(0, 2).Value
Avatar billede alen32 Nybegynder
05. maj 2008 - 20:46 #18
Det er løst.

Tak endnu en gang for hjælpen.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester