Avatar billede pejsen Nybegynder
05. januar 2008 - 19:25 Der er 10 kommentarer og
1 løsning

VBA - Colorindex i macro - Target.Row

Hej

Jeg har nedeståedende kode, som kopier rækker fra Sheet1 til Sheet2.

Jeg vil gerne at farverne ændres, når der er blevet kopieret.
Macroen kopier hele rækken med, men efter kopiering af rækken, skal det kun værre en del af rækken, som skal farvelægges:
Fra Column A til Coloumn I.
Jeg havde tænkt mig noget med

"Range("A" & Target.Row & ":I" & Target.Row).Interior.ColorIndex = 15"

Linien skal flettes ind nederst i denne kode:
_---------------------------------------------------------
Sub Tilbud()
Dim i As Integer
Dim startCell As Integer

startCell = 10

Dim currentSheet As String
currentSheet = ActiveSheet.Name
Dim searchString As String
searchString = "Konsulenttimer dækker:"

If (currentSheet = "Indkøbsordre til  OPI") Then
  startCell = 18
  searchString = "Vedr. kunde:"
End If

If (currentSheet = "Ordrebekræftelse (kunde)") Then
  searchString = "Konsulenttimer dækker:"
End If


Dim celleId As Integer
celleId = 0

For i = 1 To 100
  If Worksheets(currentSheet).Cells(i, 1).Value = searchString Then
    celleId = i
  End If
Next

If celleId <> 0 Then
    For i = startCell To (celleId - 2)
        Rows(startCell).Select
        Selection.Delete Shift:=xlUp
    Next
End If


Dim startVare, antalVare, startService, antalService As Integer
startVare = 4
antalVare = 31 '27
startService = startVare + antalVare + 4 '5
antalService = 13  '17


i = 0

'Insert headline row 2
Rows(startCell + i).Select
Selection.Insert Shift:=xlDown
For s = 1 To 9
    Worksheets(currentSheet).Cells(startCell + i, s) = _
    Worksheets("Prisberegning").Cells(2, s)
Next
Sheets("Prisberegning").Select
Rows("2:2").Select
Selection.Copy
Sheets(currentSheet).Select
Rows(startCell + i).Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
Application.CutCopyMode = False
Selection.Font.Name = "Times New Roman"
Selection.Font.Size = 14
i = i + 1

For t = startVare To (antalVare + startVare)

    If Worksheets("Prisberegning").Cells(t, 4).Value <> 0 Then
        Worksheets(currentSheet).Rows(startCell + i).Select
        Selection.Insert Shift:=xlDown
        For s = 1 To 9
            Worksheets(currentSheet).Cells(startCell + i, s) = _
            Worksheets("Prisberegning").Cells(t, s)
        Next
        Rows(startCell + i).Select
        Selection.Font.Name = "Times New Roman"
        Selection.Font.Size = 14
        Selection.Font.Bold = False
       
        Cells(startCell + i, 1).Select
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        Cells(startCell + i, 4).Select
        Selection.HorizontalAlignment = xlCenter
        Cells(startCell + i, 5).Select
        Selection.NumberFormat = "#,##0.00"
        Cells(startCell + i, 6).Select
        Selection.NumberFormat = "#,##0.00"
        Cells(startCell + i, 7).Select
        Selection.Style = "Percent"
        Cells(startCell + i, 8).Select
        Selection.NumberFormat = "#,##0.00"
        Cells(startCell + i, 9).Select
        Selection.NumberFormat = "#,##0.00"
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
     
        i = i + 1
    End If
Next

Dim selectRow As Integer
selectRow = startVare + antalVare

'Insert total row, 27 + format '(bruges ikke)
'If Worksheets("Prisberegning").Cells(selectRow + 1, 4).Value <> 0 Then
'
'    Worksheets(currentSheet).Rows(startCell + i).Select
'    Selection.Insert Shift:=xlDown
'    For s = 1 To 9
'        Worksheets(currentSheet).Cells(startCell + i, s) = _
'        Worksheets("Prisberegning").Cells(selectRow + 1, s)
'    Next
'
'    Sheets(currentSheet).Select
'    Rows(startCell + i).Select
'    Selection.Font.Name = "Arial"
'    Selection.Font.Size = 20
'    Selection.Font.Bold = False
'
'    Cells(startCell + i, 1).Select
'    With Selection.Borders(xlEdgeLeft)
'        .LineStyle = xlContinuous
'        .Weight = xlThin
'        .ColorIndex = xlAutomatic
'    End With
'
'    Cells(startCell + i, 4).Select
'    Selection.NumberFormat = "#"
'    Selection.HorizontalAlignment = xlCenter
'    Cells(startCell + i, 8).Select
'    Selection.NumberFormat = "#,##0.00"
'    With Selection.Borders(xlEdgeRight)
'        .LineStyle = xlContinuous
'        .Weight = xlThin
'        .ColorIndex = xlAutomatic
'    End With
'
'    i = i + 1
'End If

'Row 35 (licenser ialt)

    Worksheets(currentSheet).Rows(startCell + i).Select
Selection.Insert Shift:=xlDown
For s = 1 To 9
    Worksheets(currentSheet).Cells(startCell + i, s) = _
    Worksheets("Prisberegning").Cells(selectRow + 0, s)
Next
    Sheets("Prisberegning").Select
    Rows(selectRow + 0).Select
    Selection.Copy
    Sheets(currentSheet).Select
    Rows(startCell + i).Select
      Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Font.Name = "Times New Roman"
    Selection.Font.Size = 14
    Range("A" & Target.Row & ":I" & Target.Row).Interior.ColorIndex = 15


Hilsen Jan
Avatar billede japping Nybegynder
05. januar 2008 - 19:37 #1
Når en celle eller område er valgt skriver du følgende kode:

    With Selection.Interior
        .ColorIndex = 4
        .Pattern = xlSolid
    End With
Avatar billede japping Nybegynder
05. januar 2008 - 19:37 #2
4=grøn
Avatar billede pejsen Nybegynder
05. januar 2008 - 19:47 #5
Hej Japping

Tak for svaret.

Men den farver hele stadig helle rækken tvævrs over.

Jan
Avatar billede pejsen Nybegynder
05. januar 2008 - 19:49 #6
Jeg har brug for at den kun farver rækken fra Kolonne A til Kolonne I.
Avatar billede jlemming Nybegynder
05. januar 2008 - 20:22 #7
Det kan nok gøres mere simple, men det virker

For rk = 1 To Selection.Rows.Count
        For t = 1 To 9
            With Selection.Cells(rk, t).Interior
                    .ColorIndex = 15
            End With
        Next t
Next rk
Avatar billede jlemming Nybegynder
05. januar 2008 - 20:25 #8
lidt mere simple

For rk = 1 To Selection.Rows.Count
        For t = 1 To 9
            Selection.Cells(rk, t).Interior.ColorIndex = 15
        Next t
next rk
Avatar billede japping Nybegynder
05. januar 2008 - 20:58 #9
Ok, så kan du gøre følgende:

    Range("C8:F8").Select
    With Selection.Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With

hvor c8:F8 er det område du ønsker farvet.

du kan også anvende

    Rows("3:4").Select
    With Selection.Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With
    Range("E7").Select

hvis du vi have specielle linier. 3:4 udskiftes med A:E hvis du vil have kolonner.
Avatar billede pejsen Nybegynder
05. januar 2008 - 22:35 #10
Hej Flemmning

For rk = 1 To Selection.Rows.Count
        For t = 1 To 9
            Selection.Cells(rk, t).Interior.ColorIndex = 15
        Next t
next rk

Det virker helt perfekt :-)

Kan du evt. svarer på, hvorfor min formatering ved kopi i "'Insert headline row 2" laver en højrekant (With Selection.Borders(xlEdgeRight) i kolonne 10, istedet for kolonne 9.
Det er også gældende for " Insert Row 35".

Ellers smid et svar

/Pejsen
Avatar billede jlemming Nybegynder
06. januar 2008 - 11:03 #11
nææ, det kan jeg ikke lige se
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