saan taul1:sestä valitulta määräämättömältä riviltä siirretyä haluttujen solujen tiedot taul2:selle haluamiini soluihin
Lue keskustelun ohjeet ja kirjoita selvempiä kysymyksiä! Terv. moderaattori.
. A B C D 1 1500 1999 47994 0,14
Elikkä, jos Taul1:ssä on esim. tälläisiä arvoja millaisella ohjausobjektilla saan valittua ne tai muulla rivillä olevat arvot ja vietyä ne Taul2:ssa olevaan pohjaan (joka luvulle on määritelty solu minne niiden pitäisi sijoittua)
Mod. lisäsi kooditagit
Moi Nappo!
Jos ymmärsin oikein niin kyseessä on Excel-työkirjan taulut, elikä aivan aluksi olisit voinut otsikoida aiheen vaikkapa tyyliin: Excel/VBA-kopiointi työkirjan taulusta toiseen...
'Yksinkertainen esimerkki:
'Oletus: Tauluun "Taul1 on" raahattu Komentopainike (CommandButton1)
Private Sub CommandButton1_Click()
Dim i As integer
For i = 1 To 4
'Taulun "Taul2" Solun(rivi 1,
'laskurin i osoittaman sarakkeen).Arvoksi asetetaan
'Taulun "Taul1" Solun(rivi 1,
'laskurin i osoittaman sarakkeen).Arvo
Sheets("Taul2").Cells(1, i).Value = _
Sheets("Taul1").Cells(1, i).Value
Next i
End Sub'Edellistä hieman mutkikkaampi esimerkki:
Private Sub CommandButton1_Click()
Dim i As integer
For i = 1 To Sheets("Taul1").Columns.Count
Select Case i
Case 2 'tapauksessa, että laskurin i arvo on 2 (esim.)
'Taulun "Taul2" Solun(rivi 3,sarakkeen 5).Arvoksi asetetaan
'Taulun "Taul1" Solun(rivi 3,
'laskurin i osoittaman sarakkeen).Arvo
Sheets("Taul2").Cells(3, 5).Value = _
Sheets("Taul1").Cells(3, i).Value
Case 7 'tapauksessa, että laskurin i arvo...
'jne.
End Select
Next i
End SubMOI Taas Nappo!
tässä vielä hieman edistyneempi esimerkki...
VBAProject:
Lisää työkirjan taulun Taul1 ensimmäiseen soluun komentopainike (CommandButton1) & aseta painikkeen Caption-arvoksi: VALITSE
Käyttö: kirjoita tauluun Taul1 riviltä 2 eteenpäin haluamiisi soluihin haluamiasi arvoja ja paina sen jälkeen kometopainiketta. Valise sitten hiirellä taulusta Taul1 yksitellen haluamiasi (arvon sisältäviä) soluja. Kun olet valinnut haluamasi solut aktivoi työkirjan taulu Taul2. Valitse sitten taulusta Taul2 riviltä 2 eteenpäin hiirellä yksitellen haluamiasi soluja. Kun olet valinnut Taul2:sta yhtä monta solua, kuin valitsit Taul1:stä niin Taul1:stä valitsemasi arvot kopioituvat Taul2:sta valitsemiisi soluihin valintajärjestyksen mukaisesti.
'Taul1
Private Sub CommandButton1_Click()
Select Case CommandButton1.Caption
Case "VALITSE"
SelectMode = True
CommandButton1.Caption = "POISTA"
Exit Sub
Case "POISTA"
SelectMode = False
Erase Taulu1Solut, Taulu2Solut
CommandButton1.Caption = "VALITSE"
End Select
End Sub
Private Sub Worksheet_Activate()
Cells(1, 1).Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 1 Or Not SelectMode Then
Exit Sub
End If
SetAdresses ActiveSheet.index, Target.address
End Sub'Taul2
Private Sub Worksheet_Activate()
Cells(1, 1).Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 1 Or Not SelectMode Then
Exit Sub
End If
SetAdresses ActiveSheet.index, Target.address
End Sub'Module1
Public Taulu1Solut(), Taulu2Solut()
Public SelectMode As Boolean
Public Sub SetAdresses(ByVal index As Integer, address As String)
Select Case index
Case 1
If Sheets(1).Range(address).Text = "" Then
MsgBox "Valittu solu ei siällä arvoa!": Exit Sub
End If
On Error Resume Next
Dim lb1: lb1 = LBound(Taulu1Solut)
If Err <> 0 Then
Err.Clear: On Error GoTo 0
ReDim Taulu1Solut(0)
Else
For i = LBound(Taulu1Solut) To UBound(Taulu1Solut)
If Taulu1Solut(i) = address Then
MsgBox "Solu on jo valittu!": Exit Sub
End If
Next i
ReDim Preserve Taulu1Solut(UBound(Taulu1Solut) + 1)
End If
Taulu1Solut(UBound(Taulu1Solut)) = address
Case 2
On Error Resume Next
Dim lbx: lbx = UBound(Taulu1Solut)
If Err <> 0 Then
Err.Clear: On Error GoTo 0
MsgBox "Taulusta " + Chr(34) + _
Sheets("Taul1").Name + Chr(34) + _
" ei ole valittu yhtään arvon sisltävää solua!"
Sheets(1).Activate: Exit Sub
End If
On Error Resume Next
Dim lb2: lb2 = UBound(Taulu2Solut)
If Err <> 0 Then
Err.Clear: On Error GoTo 0
ReDim Taulu2Solut(0)
Else
For i = 0 To UBound(Taulu2Solut)
If Taulu2Solut(i) = address Then
MsgBox "Solu on jo valittu!": Exit Sub
End If
Next i
ReDim Preserve Taulu2Solut(UBound(Taulu2Solut) + 1)
End If
Taulu2Solut(UBound(Taulu2Solut)) = address
If UBound(Taulu2Solut) = UBound(Taulu1Solut) Then
For i = LBound(Taulu1Solut) To UBound(Taulu1Solut)
Sheets(2).Range(Taulu2Solut(i)).Value = _
Sheets(1).Range(Taulu1Solut(i)).Value
Next i
Erase Taulu1Solut, Taulu2Solut
Sheets(1).CommandButton1.Caption = "VALITSE"
SelectMode = False: Exit Sub
End If
End Select
End SubAihe on jo aika vanha, joten et voi enää vastata siihen.