Moro!
Elikkäs olen aika aloittelija excelin visual basic ohjelmoinnissa, muutama pikku ohjelmia olen tehnyt/yrittänyt tehdä.
Olen yrittänyt surffailla ja etsiä ratkaisua ongelmaa mutten ole onnistunut löytämään vastausta. Ongelma olisi seuraava:
Minulla on Excel -tiedosto jossa on 5 sheettiä, joissa on 9 saraketta ja kolmesta yhdeksään riviä riippuen sivusta, viimeisessä sarakkeessa on alasvetovalikko 'Ei'/'Kyllä' ja pitäisi saada ohjelma tehtyä, joka kopioisi koko rivin taul6:een mikäli valikosta on valittu 'kyllä'. Mitenkäs kyseistä ongelmaa pääsisi purkamaan? if/then/else? Kiitos.
Moikka jiipeefin!
tässä olisi hieman osviittaa...
Moduuliin:
Sub auto_open()
Application.ScreenUpdating = False
For Each Worksheet In Worksheets
With Worksheet
.Activate
For Each Shape In .Shapes
With Shape
If Left(.Name, 8) = "ComboBox" Then
ActiveSheet.OLEObjects(.Name) _
.object.AddItem "Tehtävät"
ActiveSheet.OLEObjects(.Name) _
.object.AddItem "Kopiointi"
ActiveSheet.OLEObjects(.Name) _
.object.ListIndex = 0
.Placement = xlMoveAndSize
End If
End With
Next
End With
Next
Sheets(1).Activate
Application.ScreenUpdating = True
End Sub
Public Sub ComboBoxinTila()
Application.ScreenUpdating = False
Select Case ComboBoxinTeksti()
Case "Kopiointi"
Dim Alue As Range, Rivi As Long, _
Sarake() As String, Tieto As Boolean
Sarake = Split(Cells.SpecialCells( _
xlCellTypeLastCell).address, "$")
Rivi = ComboBoxinRivi()
For i = 1 To Val(Sarake(2))
If Not IsEmpty(Cells( _
Rivi, i).Value) Then
Tieto = True: Exit For
End If
Next i
If Not Tieto Then
MsgBox "Ei siirrettävää dataa", _
vbInformation, Application.Caption
Erase Sarake: Set ComboBoxi = Nothing
Application.ScreenUpdating = True: Exit Sub
End If
Set Alue = Range("A" & CStr(Rivi) _
& ":" & Sarake(1) & CStr(Rivi))
Select Case Sheets("Taul6").Range( _
"A" & Sheets("Taul6").Cells.SpecialCells( _
xlCellTypeLastCell).Row).Value
Case Empty
Rivi = Sheets("Taul6").Cells. _
SpecialCells(xlCellTypeLastCell).Row
Case Else
Rivi = Sheets("Taul6").Cells. _
SpecialCells(xlCellTypeLastCell).Row + 1
End Select
Alue.Select: Selection.Copy _
Destination:=Worksheets("Taul6"). _
Range("A" & CStr(Rivi))
Range("A1").Select: Set Alue = Nothing
Sheets("Taul6").Activate
Erase Sarake: Set ComboBoxi = Nothing
End Select
Application.ScreenUpdating = True
End Sub
Public Function ComboBoxinTeksti() As String
Dim OleObjekti As OLEObject
For Each OleObjekti In ActiveSheet.OLEObjects
With OleObjekti
If .object.Value = "Kopiointi" Then
ComboBoxinTeksti = .object.Value
End If
End With
Next
End Function
Public Function ComboBoxinRivi() As Long
Dim OleObjekti As OLEObject
For Each OleObjekti In ActiveSheet.OLEObjects
With OleObjekti
If .object.Value = "Kopiointi" Then
Dim korkeus As Long
For i = 1 To ActiveSheet.Rows.Count
korkeus = _
korkeus + ActiveSheet.Rows(i).RowHeight
If .Top >= korkeus And .Top < ActiveSheet. _
Rows(i + 1).RowHeight + korkeus Then
.object.ListIndex = 0
ComboBoxinRivi = i + 1: Exit Function
End If
Next i
End If
End With
Next
End FunctionTaulujen ComboBoxien Change_Tapahtumiin:
Private Sub ComboBox1_Change() ComboBoxinTila '[k]tämä rivi[/k] End Sub
Kiitos, yritän saada toimimaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.