Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: täytettävien rivien lisääminen exceliin

nar-tutka [21.03.2012 15:13:54]

#

Hei, on tullut vähän pohdittua, että miten excelin saa (visual basicin avulla) napin, jolla voi lisätä taulukkoon uuden rivin ja syöttää tähän tietyt tiedot?

neau33 [22.03.2012 09:19:54]

#

Moi nar-tutka!

Toteutus riippuu paljolti siitä, ovatko mainitsemasi tietyt tiedot ennalta määriteltyä vakiokamaa vai haetaanko data kenties saman työkirjan jonkin laskentataulukon tietyistä soluista tai peräti jostain ulkoisesta lähteestä.

mutta yksinkertaisimmillaan ehkä näin:

'ThisWorkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   RemoveCmdBar
End Sub

Private Sub Workbook_Open()
   AddCmdBar
End Sub
'Module1 (globaali moduuli)
Sub AddCmdBar()

   RemoveCmdBar
   On Error Resume Next
   Dim CmdBar As CommandBar
   Dim CmdBtn As CommandBarButton

   Set CmdBar = Application.CommandBars.Add(Name:="OMA_NAPPI", Position:=msoBarTop, Temporary:=True)
   CmdBar.Visible = True

   Set CmdBtn = CmdBar.Controls.Add(Type:=msoControlButton, ID:=2949, Before:=1)

   With CmdBtn
      .Caption = "&Lisää rivi"
      .Style = msoButtonCaption
      .OnAction = "AddNewRow"
   End With

   If Err <> 0 Then
      Err.Clear: On Error GoTo 0
   End If

End Sub

Sub RemoveCmdBar()

   On Error Resume Next
   Application.CommandBars("OMA_NAPPI").Controls(1).Delete
   Application.CommandBars("OMA_NAPPI").Delete

   If Err <> 0 Then
      Err.Clear: On Error GoTo 0
   End If

End Sub

Sub AddNewRow()

   'valitsee aktiivisen taulukon ensimmäisen rivin
   Rows("1:1").Select
   'lisää "uuden" rivin valitulle riville
   Selection.Insert Shift:=xlDown

   AddData Selection.Row

End Sub

Sub AddData(xrow As Integer)

   'lisää tiedot määritetylle riville sarakkeisiin 1, 2 & 3
   Cells(xrow, 1).Value = 123 'esim.
   Cells(xrow, 2).Value = 456
   Cells(xrow, 3).Value = 789
   'jne...

End Sub

nar-tutka [29.03.2012 10:16:30]

#

Hei kiitos kovasti! En vielä ehtinyt kokeilemaan toimiiko tarkoitukseen, mutta ainakin näyttä lupaavalta.

Vastaus

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

Tietoa sivustosta