Avatar billede jensen363 Forsker
10. januar 2014 - 14:59 Der er 4 kommentarer og
1 løsning

Kopi af data

Sub CopyFilter_A()
    Dim r, r2, d As Range
    Dim n As Long
    Dim cYear, cStatus, cPage, cPrice, cSeasonType
    Dim tStatus As String
    cYear = 2
    cStatus = 13
    cPage = 3
    cPrice = 11
    cSeasonType = 12
    tStatus = "Fortsat i 2014"
   
    On Error Resume Next
        With ActiveSheet.AutoFilter.Range
            Set r2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
            n = .Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
        End With
    On Error GoTo 0

    If r2 Is Nothing Then
        MsgBox "Ingen husdate data valgt !!!"
    Else
        'MsgBox n
        Set r = ActiveSheet.AutoFilter.Range
        Set d = r.Offset(r.Rows.Count, 0).Cells(1, 1)
        r.Offset(1, 0).Resize(r.Rows.Count - 1).Copy Destination:=d
       
        r.Offset(1, 0).Resize(r.Rows.Count - 1).Interior.ColorIndex = 15  'New
        d.Offset(0, cYear).Resize(n).Value = 2014
        d.Offset(0, cStatus).Resize(n).Value = tStatus
        d.Offset(0, cPage).Resize(n).Clear
        d.Offset(0, cPrice).Resize(n).Clear
       
        d.Offset(0, cSeasonType).Resize(n).Value = "A"
        d.Offset(1, cSeasonType).Resize(n).Value = "B"
        d.Offset(2, cSeasonType).Resize(n).Value = "C"
        d.Offset(3, cSeasonType).Resize(n).Value = "D"
        d.Offset(4, cSeasonType).Resize(n).Value = "E"
        d.Offset(5, cSeasonType).Resize(n).Value = "F"
       
        Application.ScreenUpdating = False
            Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        Application.ScreenUpdating = True
       
    End If
   
    [Button 3].Enabled = False
        [Button 3].Visible = False

End Sub

Ovenstående kode kopierer indhold fra udklipsholder ( ialt 6 linier ) til næste blanke linie i mit regneark ... dette er tilfældet i 9 ud af 10 gange en bruger skal bruge funktionen ... men den 10'ende gang skal der tilfæjes en ekstra linie hvor indholdet er identisk med den indkopierede linie 6, med den undtagelse at den 7´ende linie skal have denne værdi :

d.Offset(6, cSeasonType).Resize(n).Value = "G"

Hvordan ser hele koden ud i en Sub CopyFilter_B() version ???
Avatar billede kabbak Professor
10. januar 2014 - 15:39 #1
Prøv, Ikke testet

Sub CopyFilter_A()
    Dim r, r2, d As Range
    Dim n As Long
    Dim cYear, cStatus, cPage, cPrice, cSeasonType
    Dim tStatus As String
    Dim RW As Integer, L As Variant, I As Integer 'NY
    cYear = 2
    cStatus = 13
    cPage = 3
    cPrice = 11
    cSeasonType = 12
    tStatus = "Fortsat i 2014"
   
    On Error Resume Next
        With ActiveSheet.AutoFilter.Range
            Set r2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
            n = .Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
          RW = .Rows.Count 'NY
        End With
    On Error GoTo 0

    If r2 Is Nothing Then
        MsgBox "Ingen husdate data valgt !!!"
    Else
    L = Array("A", "B", "C", "D", "E", "F", "G") 'NY
        'MsgBox n
        Set r = ActiveSheet.AutoFilter.Range
        Set d = r.Offset(r.Rows.Count, 0).Cells(1, 1)
        r.Offset(1, 0).Resize(r.Rows.Count - 1).Copy Destination:=d
       
        r.Offset(1, 0).Resize(r.Rows.Count - 1).Interior.ColorIndex = 15  'New
        d.Offset(0, cYear).Resize(n).Value = 2014
        d.Offset(0, cStatus).Resize(n).Value = tStatus
        d.Offset(0, cPage).Resize(n).Clear
        d.Offset(0, cPrice).Resize(n).Clear
       
      For I = 0 To RW
        d.Offset(I, cSeasonType).Resize(n).Value = L(I) ' NY
      Next
       
        Application.ScreenUpdating = False
            Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        Application.ScreenUpdating = True
       
    End If
   
    [Button 3].Enabled = False
        [Button 3].Visible = False

End Sub
Avatar billede jensen363 Forsker
10. januar 2014 - 16:21 #2
Stopper programafviklingen her :

    For I = 0 To RW
        d.Offset(I, cSeasonType).Resize(n).Value = L(I) ' NY
      Next
Avatar billede kabbak Professor
10. januar 2014 - 18:06 #3
Sub CopyFilter_A()
    Dim r, r2, d As Range
    Dim n As Long
    Dim cYear, cStatus, cPage, cPrice, cSeasonType
    Dim tStatus As String
    Dim RW As Integer, L As Variant, I As Integer 'NY
    cYear = 2
    cStatus = 13
    cPage = 3
    cPrice = 11
    cSeasonType = 12
    tStatus = "Fortsat i 2014"
   
    On Error Resume Next
        With ActiveSheet.AutoFilter.Range
            Set r2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
            n = .Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
       
        End With
    On Error GoTo 0

    If r2 Is Nothing Then
        MsgBox "Ingen husdate data valgt !!!"
    Else
    L = Array("A", "B", "C", "D", "E", "F", "G") 'NY
        'MsgBox n
        Set r = ActiveSheet.AutoFilter.Range
        Set d = r.Offset(r.Rows.Count, 0).Cells(1, 1)
        r.Offset(1, 0).Resize(r.Rows.Count - 1).Copy Destination:=d
       
        r.Offset(1, 0).Resize(r.Rows.Count - 1).Interior.ColorIndex = 15  'New
        d.Offset(0, cYear).Resize(n).Value = 2014
        d.Offset(0, cStatus).Resize(n).Value = tStatus
        d.Offset(0, cPage).Resize(n).Clear
        d.Offset(0, cPrice).Resize(n).Clear
       
      For I = 0 To n
        d.Offset(I, cSeasonType).Resize(n).Value = L(I) ' NY
      Next
       
        Application.ScreenUpdating = False
            Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        Application.ScreenUpdating = True
       
    End If

    [Button 3].Enabled = False
        [Button 3].Visible = False

End Sub
Avatar billede jensen363 Forsker
11. januar 2014 - 09:50 #4
Det virker ikke efter hensigten ... koden indsætter blot G seks gange i kolonne 12 ( cSeasonType = 12 ) øvrige celler er blanke og alle seks bliver efterfølgende slettet af denne

  Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Hele den nye række skal have samme udseende som den sidste række i det oprindelige indhold fra udklipsholderen
Avatar billede jensen363 Forsker
19. maj 2015 - 16:10 #5
Ingen løsning fundet
Lukker
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