Vapaa kuvaus

Isaan Rules WFF CCC If you walked away smiling-then for you the price was right Keep Exceling Suosikkibändit/artistit: Queen, Rammstein, genesis, Bruce Bringsteen, Kino, Mandref Mann Earth band Who Lempikirjat: ohjelmointi... Suosikkipalstat Suomi24 Keskusteluissa: EXCEL, Kivitalot, EPS En pidä: pakkanen ja loskakelit Ruoka & juoma: loimulohi ja valkkari Linkit: http://www.kundepuu.com, Khorat Koulutus: --- Ammatti: Tiede/teknologia Työskentelen: freelancer Ase tai siviilipalvelus: yliluutnantti Siviilisääty: Varattu Lapset: --- Hakusanat: Thaimaa, korat, Excel, VBA, ACAD, CNC, Polyurea, EPS, MgO elementti

Aloituksia

7

Kommenttia

1377

  1. taulukon moduuliin...

    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Not Intersect(Target, Range("A1")) Is Nothing Then
    If IsNumeric(Target) Then
    Range("B1") = Range("B1") + Range("A1")
    Else
    MsgBox "syottämäsi arvo ei ollut luku! "
    Range("A1").Select
    Exit Sub
    End If
    End If
    End Sub
  2. moduuliin...

    Sub koe()
    Dim Sivunalku As String
    Dim Alue As Range
    Dim i As Integer
    Dim j As Integer
    Dim alkuwb As String
    Dim uusiwb As String
    Dim Sivunvaihto As Integer
    Dim Rivit As Long
    Dim Polku As String
    Dim Sivunkoko As Integer

    On Error GoTo virhe
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False

    takaisin:
    Sivunkoko = Application.InputBox(" Anna rivienmaara sivulla", "Sivuntulostus", 30, Type:=1)
    If Sivunkoko = 0 Then Exit Sub
    If Not Sivunkoko > 0 Then
    MsgBox "Sinun on annettava 0 suurempi luku!"
    GoTo takaisin
    End If
    Rivit = ActiveSheet.UsedRange.Rows.Count
    ActiveSheet.ResetAllPageBreaks
    If Rivit > Sivunkoko Then
    Sivunvaihto = Int(Rivit / Sivunkoko) + 1
    For i = 1 To Sivunvaihto
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveSheet.UsedRange.Cells(Sivunkoko * i + 1, 1)
    Next i
    End If
    alkuwb = ActiveWorkbook.Name
    Sivunalku = "$A$1"

    For i = 1 To ActiveSheet.HPageBreaks.Count
    uusi = i
    If i > 1 Then Sivunalku = ActiveSheet.HPageBreaks(i - 1).Location.Address
    j = ActiveSheet.HPageBreaks(i).Location.Row - 1

    Workbooks.Add
    uusiwb = ActiveWorkbook.Name
    Workbooks(alkuwb).Sheets(1).Range(Sivunalku & ":" & "$H$" & Trim$(Str$(j))).Copy _
    Destination:=Workbooks(uusiwb).Sheets(1).Range("A1") ' oletus eka taulukko
    Polku = "H:\" & uusi & ".xls" 'muuta polkua
    ActiveWorkbook.SaveAs Filename:=Polku
    ActiveWorkbook.Close
    Windows(alkuwb).Activate

    Next
    ' vika sivu lisattava manuaalisesti
    If j < Rivit Then
    uusi = uusi + 1
    j = j + Sivunkoko
    Sivunalku = Range(Sivunalku).Offset(Sivunkoko, 0).Address
    Workbooks.Add
    uusiwb = ActiveWorkbook.Name
    Workbooks(alkuwb).Sheets(1).Range(Sivunalku & ":" & "$H$" & Trim$(Str$(j))).Copy _
    Destination:=Workbooks(uusiwb).Sheets(1).Range("A1") ' oletus eka taulukko
    Polku = "H:\" & uusi & ".xls" 'muuta polkua
    ActiveWorkbook.SaveAs Filename:=Polku
    ActiveWorkbook.Close
    Windows(alkuwb).Activate
    End If
    virhe:
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    End Sub


    keep Excelling
    @Kunde
  3. "Toki sillä mainitsemallasi suodatuksella olisi iisiä tehdä suodatus esim. antenneista ja sitten kopsata ko. lista sinne antennit-taulukkoon, mutta kun pahoin pelkään että työnantaja ei sitäkään vaivaa halua nähdä :/. "

    en minäkään viitsisi pelleillä phauilla ja suodatuksilla manuaalisesti...

    mutta asiaan

    en tarkkaan tiedä tuotteiden koodaustasi, mutta allaoleva makro päivittää automaattisesti taulukot ja lisää uuden kun uusi tuote lisätään. Tosta on helppo muunnella tarpeittesi mukaan. Tuotteet on siis sarakkeessa A, josta uudet taulukot tehdään

    Datataulukon moduuliin...

    rivate Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo virhe
    Application.ScreenUpdating = False
    Call TeeTaulukot
    virhe:
    Application.ScreenUpdating = True
    End Sub

    ja tavalliseen moduuliin...

    Sub TeeTaulukot()
    Dim Tiedot As Range
    Dim solu As Range
    Dim Taulukko As Worksheet
    Dim AloitusTaulukko As Worksheet
    Dim Nimi As String


    On Error Resume Next
    Application.DisplayAlerts = False
    Set AloitusTaulukko = ActiveSheet
    AloitusTaulukko.AutoFilterMode = False
    Set Tiedot = Range("A1", Range("A65536").End(xlUp))
    For Each Taulukko In Worksheets
    If Not Taulukko.Name = "Data" Then ' muuta datataulukon nimi sopivaksi
    Taulukko.Delete
    End If
    Next

    Worksheets.Add().Name = "HUUHAA"
    With Worksheets("HUUHAA")
    Tiedot.AdvancedFilter xlFilterCopy, , _
    Worksheets("HUUHAA").Range("A1"), True
    Set Tiedot = .Range("A1", .Range("A65536").End(xlUp))
    End With

    With AloitusTaulukko
    For Each solu In Tiedot
    Nimi = solu
    .Range("A1").AutoFilter 1, Nimi
    Worksheets.Add().Name = Nimi
    .UsedRange.Copy Destination:=ActiveSheet.Range("A1")
    ActiveSheet.Cells.Columns.AutoFit
    Next solu
    End With

    With AloitusTaulukko
    .AutoFilterMode = False
    .Activate
    End With

    On Error GoTo 0
    Worksheets("HUUHAA").Delete
    Application.DisplayAlerts = True
    End Sub

    keep excelling :-)
    @Kunde
  4. aika simppelisti toi onnistuu excelin omilla erikoistoiminnoilla...

    Sub Siirrä()
    Dim KopioAlue As Range 'kopioitava alue
    Dim SiirtoAlue As Range ' kohdealue
    Dim EiTyhjiäAlue As Variant ' eityhjiä rivejä originaali kopioitava alue
    On Error Resume Next
    Set KopioAlue = Sheets("Originaali").Range("A1:B23") 'muuta kopioitavan taulukonnimi
    KopioAlue.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True ' tyhjät piilotetaan
    Set EiTyhjiäAlue = KopioAlue.SpecialCells(xlCellTypeVisible) ' kopioidaan vain näkyvät
    Set SiirtoAlue = Sheets("Kopio").Range("A1:B23") ' muuta kohdetaulukon nimi
    If WorksheetFunction.CountA(SiirtoAlue) = 0 Then 'onko kohdealue tyhjä...
    EiTyhjiäAlue.Copy Destination:=SiirtoAlue ' kopioidaan tiedot
    Else ' jos ei niin etsitään eka tyhjä oikealle
    EiTyhjiäAlue.Copy Destination:=SiirtoAlue.End(xlToRight).Offset(0, 1) ' kopioidaan tiedot
    End If
    KopioAlue.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = False ' tyhjät näkyviin taas
    End Sub

    keep excelling!