Avatar billede daki Juniormester
02. juni 2004 - 08:35 Der er 12 kommentarer og
1 løsning

Macro til ændring af tekst

Skal bruge en macro, som gør følgende.

I kolonne "G" findes 1. celle med et beløb. Skriften ændres til fed, derefter 2 celler ned skriften ændres til fed. Det skal gentages indtil teksten "LTAT" forefindes i en cellen.
Så skal næste celle med et beløb findes osv. indtil hele kolonne er "søgt" igennem.

Det er altid kolonne G og udgangspunktet er altid celle "G1".
Avatar billede bak Forsker
02. juni 2004 - 08:59 #1
prøv

Sub test()
Dim myrange As Range, c As Range, lookfor As Variant
lookfor = Application.InputBox("Søg efter :")
Set myrange = Range("G:G")
For Each c In myrange
    If CStr(c) = lookfor Then
        c.Font.Bold = True
        c.Offset(1, 0).Font.Bold = True
        c.Offset(2, 0).Font.Bold = True
    Else
    If c = "LTAT" Then Exit Sub
    End If
Next
End Sub
Avatar billede daki Juniormester
02. juni 2004 - 09:11 #2
Hej bak

Hvad er det lige denne macro gør ??
Kan man ikke bare sætte den til at finde den 1. celle indeholdene et beløb.

Desuden har jeg opdaget, at det nogen gange er nødvendigt at gå 3 celler ned. Dvs. hvis cellen er tom, da ned en ekstra gang.
Arket indeholder pt. 14500 rækker, men om 14 dage kan det være flere eller færre.
Avatar billede bak Forsker
02. juni 2004 - 16:07 #3
dette skulle kompensere for at 2. celle er tom.
Den spørger dig hvad du ønsker at søge efter. Derefter "feder" de celler den finder + de 2 næstkommende. Hvis første næstkommende er tom "feder" den de næste 2
Avatar billede bak Forsker
02. juni 2004 - 16:08 #4
Sorry glemte lige koden :-)

Sub test()
Dim myrange As Range, c As Range, lookfor As Variant
lookfor = Application.InputBox("Søg efter :")
Set myrange = Range("G:G")
For Each c In myrange
    If CStr(c) = lookfor Then
        c.Font.Bold = True
        If Not IsEmpty(c.Offset(1, 0)) Then
            c.Offset(1, 0).Font.Bold = True
        Else
            c.Offset(3, 0).Font.Bold = True
        End If
        c.Offset(2, 0).Font.Bold = True
    Else
    If c = "LTAT" Then Exit Sub
    End If
Next
End Sub
Avatar billede bak Forsker
02. juni 2004 - 16:09 #5
UPS. jeg ser lige at jeg har misforstået spørgsmålet. Tænker lige.
Avatar billede kabbak Professor
02. juni 2004 - 18:51 #6
prøv at teste

Sub test()
Dim myrange As Range, c As Range, Str As String, Rk As Long, Skift As Boolean
Skift = False
Rk = Range("G65536").End(xlUp).Row
Str = "LTAT" ' skifte streng
Set myrange = Range("G1:G" & Rk)

For Each c In myrange.Cells
If c.Row = 1 And IsNumeric(c) Then
    c.Font.Bold = True 'første celle
   
    ElseIf Skift = True And c <> Str And c.Row > 1 Then
        If c.Offset(-1, 0).Font.Bold = False Then
          c.Font.Bold = True
          Else
          c.Font.Bold = False
        End If
    ElseIf IsNumeric(c) And Skift = False Then
        c.Font.Bold = True
        Skift = True
    ElseIf c = Str Then
      Skift = False
    End If
Next
End Sub
Avatar billede kabbak Professor
02. juni 2004 - 18:59 #7
lidt ændret

Sub test()
Dim myrange As Range, c As Range, Str As String, Rk As Long, Skift As Boolean
Skift = False
Rk = Range("G65536").End(xlUp).Row
Str = "LTAT" ' skifte streng
Set myrange = Range("G1:G" & Rk)

For Each c In myrange.Cells
If c.Row = 1 Then
      If IsNumeric(c) Then
        c.Font.Bold = True 'første celle
        Skift = True
      Else
        c.Font.Bold = False
      End If
    ElseIf Skift = True And c <> Str And c.Row > 1 Then
        If c.Offset(-1, 0).Font.Bold = False Then
          c.Font.Bold = True
          Else
          c.Font.Bold = False
        End If
    ElseIf Skift = False Then
      If IsNumeric(c) Then
          c.Font.Bold = True
          Skift = True
        Else
          c.Font.Bold = False
        End If
    ElseIf c = Str Then
      Skift = False
    End If
Next
End Sub
Avatar billede daki Juniormester
03. juni 2004 - 08:28 #8
Hej kabbak

Når man kommer til tom celle går der 1 celle for langt ned inden der markeres til fed.
Jeg kan sende ark, hvis nødvedigt.
Avatar billede kabbak Professor
03. juni 2004 - 12:35 #9
Ok.

sendtil#kabbak@tiscali.dk

fjern sendtil#

skriv lige mere om fejlen og ønsker i arket
Avatar billede kabbak Professor
08. juni 2004 - 09:22 #10
Sub test()
Dim myrange As Range, c As Range, Rk As Long
Rk = Range("F65536").End(xlUp).Row
Set myrange = Range("F1:F" & Rk)

For Each c In myrange.Cells
If UCase(c) = "EFT" Or UCase(c) = "FØR" Then
          c.Offset(0, 1).Font.Bold = True 'første celle
        Else
        c.Offset(0, 1).Font.Bold = False
      End If
Next
End Sub



her er den kørt på kolonne F, som du var inde på.
Avatar billede daki Juniormester
08. juni 2004 - 11:29 #11
Tak, det er lige det jeg skal bruge...
Hvis jeg vil bruge farve, hvad skal så rettes ???
Avatar billede kabbak Professor
08. juni 2004 - 11:37 #12
tekstfarve rød
  c.Offset(0, 1).Font.ColorIndex = 3
 
  Standard tekstfarve
  c.Offset(0, 1).Font.ColorIndex = 0
   
  Bagrundsfarve gul
  c.Offset(0, 1).Interior .ColorIndex = 6
 
  ingen baggrundsfarve
  c.Offset(0, 1).Interior.ColorIndex = xlNone
Avatar billede daki Juniormester
08. juni 2004 - 14:18 #13
Jeg må hellere få accepteret dit svar.... :-)
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