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. poista ensiksi taulukosta (nyt Sheet1) kaikkien solujen lukitus ja suojaa VBA projekti salasanalla. Tallenna sitten työkirja normaalisti ja siinäpä se...

    oletuksena, että A sarakkeeseen tulee aina tieto, muuta sopivaksi

    ThisWorkbook moduuliin...

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim vika As Integer
    On Error Resume Next
    Sheets("Sheet1").Unprotect Password:="Kunde"
    vika = Range("A65536").End(xlUp).Row
    Range("A1:A" & vika).EntireRow.Locked = True
    Sheets("Sheet1").Protect Password:="Kunde"
    End Sub
  2. kyseessä ihan perusjuttu ja muutama kaava

    A1=P
    B1=U
    C1=I
    D1=R

    soluihin A2:D2 syötetään 2 arvoa...
    tulos soluihin A3:D3

    en jaksanut tarkistella kaavoja...

    moduuliin...

    Public Function IPR(P As Double, R As Double) As Double
    IPR = Sqr(P / R)
    End Function
    Public Function PUI(U As Double, I As Double) As Double
    PUI = U * I
    End Function
    Public Function PUR(U As Double, R As Double) As Double
    PUR = U * U / R
    End Function
    Public Function PIR(I As Double, R As Double) As Double
    PIR = I * I * R
    End Function

    Public Function UPR(P As Double, R As Double) As Double
    UPR = Sqr(P * R)
    End Function
    Public Function UIR(I As Double, R As Double) As Double
    UIR = I * R
    End Function
    Public Function RUI(U As Double, I As Double) As Double
    RUI = U / I
    End Function
    Public Function RPI(P As Double, I As Double) As Double
    RPI = P / (I * I)
    End Function
    Public Function RPU(P As Double, U As Double) As Double
    RPU = P * U * U
    End Function

    taulukon moduuliin...

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    Application.EnableEvents = False

    If Not Range("A2") = "" And Not Range("D2") = "" Then
    Range("A3:D3") = ""
    Range("C3").Value = IPR(Range("A2"), Range("D2"))
    Range("B3").Value = UPR(Range("A2"), Range("D2"))
    Range("A3") = Range("A2")
    Range("D3") = Range("D2")
    Range("A2:D2") = ""
    End If

    If Not Range("B2") = "" And Not Range("C2") = "" Then
    Range("A3:D3") = ""
    Range("A3").Value = PUI(Range("B2"), Range("C2"))
    Range("D3").Value = RUI(Range("B2"), Range("C2"))
    Range("B3") = Range("B2")
    Range("C3") = Range("C2")
    Range("A2:D2") = ""
    End If

    If Not Range("B2") = "" And Not Range("D2") = "" Then
    Range("A3:D3") = ""
    Range("A3").Value = PUR(Range("B2"), Range("D2"))
    Range("B3") = Range("B2")
    Range("D3") = Range("D2")
    Range("A2:D2") = ""
    End If

    If Not Range("C2") = "" And Not Range("D2") = "" Then
    Range("A3:D3") = ""
    Range("A3").Value = PIR(Range("C2"), Range("D2"))
    Range("B3").Value = UIR(Range("C2"), Range("D2"))
    Range("C3") = Range("C2")
    Range("D3") = Range("D2")
    Range("A2:D2") = ""
    End If

    If Not Range("C2") = "" And Not Range("D2") = "" Then
    Range("A3:D3") = ""
    Range("A3").Value = PIR(Range("C2"), Range("D2"))
    Range("C3") = Range("C2")
    Range("D3") = Range("D2")
    Range("A2:D2") = ""
    End If

    If Not Range("C2") = "" And Not Range("D2") = "" Then
    Range("A3:D3") = ""
    Range("A3").Value = PIR(Range("C2"), Range("D2"))
    Range("C3") = Range("C2")
    Range("D3") = Range("D2")
    Range("A2:D2") = ""
    End If

    If Not Range("A2") = "" And Not Range("D2") = "" Then
    Range("A3:D3") = ""
    Range("B3").Value = UPR(Range("A2"), Range("D2"))
    Range("A3") = Range("A2")
    Range("D3") = Range("D2")
    Range("A2:D2") = ""
    End If



    If Not Range("A2") = "" And Not Range("C2") = "" Then
    Range("A3:D3") = ""
    Range("D3").Value = RPI(Range("A2"), Range("C2"))
    Range("A3") = Range("A2")
    Range("C3") = Range("C2")
    Range("A2:D2") = ""
    End If

    If Not Range("A2") = "" And Not Range("B2") = "" Then
    Range("A3:D3") = ""
    Range("D3").Value = RPU(Range("A2"), Range("B2"))
    Range("A3") = Range("A2")
    Range("B3") = Range("B2")
    Range("A2:D2") = ""
    End If
    If Application.WorksheetFunction.CountA(Range("A2:D2")) = 2 Then
    Range("A3:D3") = ""
    End If
    Application.EnableEvents = True
    End Sub
    Sub Resetoi()
    Application.EnableEvents = True
    End Sub
  3. vähän oli ylimalkainen kyssäri tiedoilta, mutta tolla alkuun
    moduuliin...

    nimeä taulukko2 verrattavat solut ="Alue" ja muokkaa taulukoiden nimet sopiviksi

    Option Explicit
    Dim EiTupla As New Collection

    Sub Värjää()
    Dim Tiedot As Variant
    Dim Alue As Range
    Dim i As Integer
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Worksheets("Sheet2").Activate
    PoistaTuplat
    Worksheets("Sheet1").Cells.Interior.ColorIndex = xlNone
    For i = 1 To EiTupla.Count
    Set Alue = EtsiJaSiirrä(EiTupla(i), Worksheets("Sheet1").Cells)
    Alue.Interior.ColorIndex = 3
    Next
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    End Sub

    Sub PoistaTuplat()
    Dim solu As Range
    Dim Vika As Double
    On Error GoTo virhe
    For Each solu In Range("Alue")
    If Not IsEmpty(solu) Then
    EiTupla.Add solu.Value, CStr(solu.Value)
    End If
    Next solu
    Exit Sub
    virhe:
    Resume Next
    End Sub

    Function EtsiJaSiirrä(Haettava As Variant, _
    Hakualue As Range) As Range

    Dim solu As Range
    Dim ekaosoite As String

    With Hakualue
    Set solu = .Find( _
    What:=Haettava, _
    LookIn:=xlValues, _
    LookAt:=xlWhole, _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, _
    MatchCase:=False, _
    SearchFormat:=False)
    If Not solu Is Nothing Then
    Set EtsiJaSiirrä = solu
    ekaosoite = solu.Address
    Do
    Set EtsiJaSiirrä = Union(EtsiJaSiirrä, solu)
    Set solu = .FindNext(solu)
    Loop While Not solu Is Nothing And solu.Address ekaosoite
    End If
    End With
    End Function
  4. moduuliin...
    muuttele taulukoiden nimet sopiviksi

    Option Explicit
    Dim EiTupla As New Collection
    Sub Kopioi()
    Dim Tiedot As Variant
    Dim Alue As Range
    Dim i As Integer
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Worksheets("Sheet1").Activate
    Worksheets("Sheet2").Cells.Clear
    PoistaTuplat
    For i = 1 To EiTupla.Count
    Set Alue = EtsiJaSiirrä(EiTupla(i), Columns("A")).Offset(0, 1)
    Tiedot = Alue
    Tiedot = Application.WorksheetFunction.Transpose(Tiedot)
    Range("Sheet2!A" & i) = EiTupla(i)
    Range("Sheet2!B" & i).Resize(Alue.Columns.Count, Alue.Rows.Count) = Tiedot
    Next i
    Worksheets("Sheet2").Cells.EntireColumn.AutoFit
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    End Sub
    Sub PoistaTuplat()
    Dim solu As Range
    Dim Vika As Double
    On Error GoTo virhe
    Vika = Range("A65536").End(xlUp).Row
    For Each solu In Range("A1:A" & Vika)
    If Not IsEmpty(solu) Then
    EiTupla.Add solu.Value, CStr(solu.Value)
    End If
    Next solu
    Exit Sub
    virhe:
    Resume Next
    End Sub
    Function EtsiJaSiirrä(Haettava As Variant, _
    Hakualue As Range) As Range

    Dim solu As Range
    Dim ekaosoite As String

    With Hakualue
    Set solu = .Find( _
    What:=Haettava, _
    LookIn:=xlValues, _
    LookAt:=xlWhole, _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, _
    MatchCase:=False, _
    SearchFormat:=False)
    If Not solu Is Nothing Then
    Set EtsiJaSiirrä = solu
    ekaosoite = solu.Address
    Do
    Set EtsiJaSiirrä = Union(EtsiJaSiirrä, solu)
    Set solu = .FindNext(solu)
    Loop While Not solu Is Nothing And solu.Address ekaosoite
    End If
    End With
    End Function
  5. =INDIRECT("A"&ROW())*2