Avatar billede 2proof Nybegynder
07. oktober 2006 - 02:14 Der er 8 kommentarer

slette celler der starter med det samme i macro

hej

Jeg har fået fumlet en macro sammen ved at genbruge en anden macro men jeg skal have tilføjet nogle ting.

Macroen

Sub Opmærkning()
    X2 = 1: Y2 = 1
    For Y1 = 1 To 2550
        If Worksheets("Box plan").Cells(Y1, 2).Value = "SENSOR" Then Y1 = Y1 + 1
        If Worksheets("Box plan").Cells(Y1, 2).Value = "VALVE" Then Y1 = Y1 + 1
        If Worksheets("Box plan").Cells(Y1, 2).Value = Left("I ", 2) Then Y1 = Y1 + 1
        If Worksheets("Box plan").Cells(Y1, 3).Value > 0 Then
        Worksheets("Opmærkning").Cells(Y2, X2).Value = Worksheets("Box plan").Cells(Y1, 2).Value
            Y2 = Y2 + 1
            If Y2 = 2550 Then X2 = X2 + 5: Y2 = 1
            End If
            Next Y1
End Sub

spørgsmål 1

jeg har lavet følgende linie
If Worksheets("Box plan").Cells(Y1, 2).Value = Left("I ", 2) Then Y1 = Y1 + 1

det jeg prøver på er at finde alle celler der starter med I og der efter ligge 1 til Y1. Det virker dog ikke

spørgsmål 2

Jeg har brug for at finde linier der starter med f.eks "ON" og sletter det som står efter 6 pladser

spørgsmål 3

Jeg har brug for at sikre mig at der f.eks max er 16 bogstaver/tal tilsammen i rækken. Det kunne være lækkert hvis man kunne få en tekstbox op hvori der står hvilken række der overskrider reglen

håber i forstår og kan hjælpe
Avatar billede kabbak Professor
07. oktober 2006 - 09:07 #1
If Left(Worksheets("Box plan").Cells(Y1, 2).Value,2) = "I " Then Y1 = Y1 + 1
Avatar billede kabbak Professor
07. oktober 2006 - 09:13 #2
2.
If Left(Worksheets("Box plan").Cells(Y1, 2).Value,2) = "ON" Then Worksheets("Box plan").Cells(Y1, 2).Value = left(Worksheets("Box plan").Cells(Y1, 2).Value,6)
Avatar billede 2proof Nybegynder
07. oktober 2006 - 13:02 #3
If Left(Worksheets("Box plan").Cells(Y1, 2).Value, 2) = "I " Then Y1 = Y1 + 1

virker men når der er 2 celler med "I " lige efter hinanden så er det kun den ene der bliver slettet. samt hvis "sensor" og "valve" kommer lige efter igen så bliver de heller ikke slettet

Hvad kan man putte ind så linien hopper til start igen eller springer de næste IF over og derved søger fra den første IF statment igen
Avatar billede 2proof Nybegynder
07. oktober 2006 - 13:08 #4
ændret lidt til 2. ( skrives i andet ark)

If Left(Worksheets("Box plan").Cells(Y1, 2).Value, 2) = "ON" Then Worksheets("Opmærkning").Cells(Y2, 2).Value = Left(Worksheets("Box plan").Cells(Y1, 2).Value, 9)

virker næsten også men istedet for at det bliver skrevet i række 1 bliver det skrevet i række 2 lige ved siden af den fulde tekst

Jeg har prøvet at ændre
Worksheets("Opmærkning").Cells(Y2, 2) til (Y2, X2) og (Y2, 1) for at se om det så bleve skrevet i række 1 men så sker der bare ingenting
Avatar billede bak Forsker
07. oktober 2006 - 13:09 #5
man er nok nødt til at hoppe baglæns gennem løkken fordi at hvis man fx sletter række 10 (y1=10) så bliver række 11 øjeblikkelig til række 10, men den bliver så sprunget over fordi næste gang er Y1 jo 11
Avatar billede 2proof Nybegynder
07. oktober 2006 - 13:24 #6
ja men hvordan gør man det

har kigget i hjælp og tænker man måske kan bruge goto men da jeg forsøgte var arket helt tomt bagefter

Sub Opmærkning()
    X2 = 1: Y2 = 1
    For Y1 = 1 To 2550
        If Worksheets("Box plan").Cells(Y1, 2).Value = "SENSOR" Then Y1 = Y1 + 1
        If Worksheets("Box plan").Cells(Y1, 2).Value = "VALVE" Then Y1 = Y1 + 1
        If Left(Worksheets("Box plan").Cells(Y1, 2).Value, 2) = "I " Then Y1 = Y1 + 1
        GoTo line1:
        If Left(Worksheets("Box plan").Cells(Y1, 2).Value, 2) = "UB" Then Worksheets("Opmærkning").Cells(Y2, 2).Value = Left(Worksheets("Box plan").Cells(Y1, 2).Value, 9)
        If Worksheets("Box plan").Cells(Y1, 3).Value > 0 Then
        Worksheets("Opmærkning").Cells(Y2, X2).Value = Worksheets("Box plan").Cells(Y1, 2).Value
            Y2 = Y2 + 1
            If Y2 = 2550 Then X2 = X2 + 5: Y2 = 1
line1:      If Y2 = 2550 Then X2 = X2 + 5: Y2 = 1
            End If
            Next Y1
End Sub
Avatar billede bak Forsker
07. oktober 2006 - 14:28 #7
man starter løkken således:

For Y1 = 2550 To 1 Step -1
Avatar billede 2proof Nybegynder
07. oktober 2006 - 14:49 #8
jeg forstår ikke hvad du mener (jeg er total VBA norvice)

Jeg ønsker at tælle 1 op ( Y1 = Y1 + 1) men når jeg så har gjort det ønsker jeg at starte forfra med den første IF statments men med den nye værdi i Y1

Jeg prøvede at erstatte
For Y1 = 1 To 2550 med For Y1 = 2550 To 1 Step -1

men så crasher regne arket ( svare ikke)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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