Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Excel, yhdistelmäruutu ja solulinkki

Bittinikkari [27.08.2012 21:05:26]

#

Hei,

teen Excelillä avainrekisteriä. Avaimia on kolmea eri tyyppiä ja avaintyypin voi valita yhdistelmäruudun alasvetovalikosta kunkin luovutuksen yhteydessä. PHAKU-funktio palauttaa solulinkin avulla soluun valitun avaintyypin. Rekisteriin varataan rivejä tietylle määrälle luovutustapahtumia. Kuinka saan solulinkin kopioitumaan niin, että jokaisella luovutustapahtumalla eli rivillä on oma solulinkki, joka palauttaa valitun avaintyypin? En onnistunut, vaikka muutin viittauksen suhteelliseksi.

Terveisin
aloitteleva Bittinikkari

neau33 [29.08.2012 13:14:38]

#

Moi Bittinikkari!

Mielestäni systeemi kannattais rakennella VBA-pohjalta, esim. tyyliin...

Taulukkoon Taul1 riville 1:
sarakeen 1 otsikoksi: Nimi, sarakeen 2 otsikoksi: Pvm & sarakeen 3 otsikoksi: Tyyppi
lisää taulukkoon myös komentopainike (Painike1)

'Taul1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Row = 1 Then
        Taul1.Cells(Taul1.UsedRange.Rows.Count + 1, 1).Select
    End If

    If Target.Row > 1 And UserForm1.Visible Then
        UserForm1.TextBox1.Text = Taul1.Cells(Target.Row, 1).Value
    End If

    If Target.Row > 2 Then
        If Application.CountA(Rows(Target.Row - 1).EntireRow) = 0 Then
            Taul1.Cells(Taul1.UsedRange.Rows.Count + 1, 1).Select
        End If
    End If

    If Target.Column > 3 Then
        Taul1.Cells(Target.Row, 1).Select
    End If

    For i = 0 To 3
        If Taul1.Cells(Target.Row, 3).Value = UserForm1.ComboBox1.list(i) Then
            UserForm1.ComboBox1.ListIndex = i: Exit For
        End If
    Next

End Sub

Private Sub Worksheet_Deactivate()

    If UserForm1.Visible Then
        Unload UserForm1
    End If

End Sub

Lomakkeelle UserForm1:
1 Tekstiruutu, 1 ComboBoxi & 2 komentopainiketta (Captions: Päivitä & Poista)

'UserForm1
Private Sub UserForm_Activate()

    Static loaded As Boolean

    If Not loaded Then

        loaded = True
        Sheets("Taul1").Select
        ComboBox1.list = Split(",avain1,avain2,avain3", ",")
        Range("A1").Select

    End If

End Sub

Private Sub CommandButton1_Click()

    If TextBox1.Text = "" Then
        TextBox1.SetFocus: Beep: Exit Sub
    End If

    If ComboBox1.ListIndex = 0 Then
        ComboBox1.SetFocus: Beep: Exit Sub
    End If

    Sheets("Taul1").Select
    Allow_Edit
    Cells(ActiveCell.Row, 1).Value = TextBox1.Text
    Cells(ActiveCell.Row, 2).Value = Format(Now(), "dd.MM.yyyy")
    Cells(ActiveCell.Row, 3).Value = ComboBox1.list(ComboBox1.ListIndex)
    Disable_Edit
    ActiveWorkbook.Save

End Sub

Private Sub CommandButton2_Click()

    Sheets("Taul1").Select
    Allow_Edit
    ActiveCell.EntireRow.Delete
    Range("A1").Select
    Disable_Edit
    ActiveWorkbook.Save

End Sub

Sub Allow_Edit()
    ActiveSheet.Unprotect Password:="salasana"
End Sub

Sub Disable_Edit()
    ActiveSheet.Protect Password:="salasana", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
'Module1
Sub Painike1_Napsauta()

    If Not UserForm1.Visible Then
        UserForm1.Show 0
    End If

End Sub
'ThisWorkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Saved = True
End Sub

Halutessaan valmiit simppelit Excel 2000-2003 & Excel 2007-2010 esimerkit voi impata Täältä

Bittinikkari [31.08.2012 11:56:44]

#

Tervehdys neau33!

Kiitoksia paljon sinulle vastauksestasi. Rekisterijärjestelmää on pitkälti toteutettu jo Excelin avulla. Olisiko muuta ratkaisua ongelmaan?

Ohjelmointitaustani on hyvin vähäinen, myös VBA:n osalta, useamman vuoden takaa kouluajoilta.

Terveisin
aloitteleva Bittinikkari

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta