Pitäisi tehdä taulukko, jonka soluun syötän luvun esim 500. Kun painan esim enteriä tai poistun nuolinäppäimellä solusta niin solu palautuu nollaksi tai tyhjäksi ja syötetty luku 500 lisääntyy viereisen solun lukuun esim 2000. Siis tämän viereisin solun tulos pitäisi olla lisäyksen jälkeen 2500.
Onko tämä mahdollista, vai olisiko jotain parempia konsteja?
Onko tämä mahdollista, vai olisiko jotain parempia konsteja?
Vastaukset 5
Vanhimmat
Kopioi alla oleva makro taulukon moduuliin.
kun kirjoitat luvun soluun B1 ja painat Enter
siirtyy valinta soluun B2 ja makro suoritetaan:
Lisää B1:n luvun A1:een , tyhjentää B1: ja siirtää valinnan takaisin B1:een.
Private Sub Worksheet_SelectionChange _
(ByVal Target As Range)
If Target.Address = "$B$2" Then
[A1] = [A1] [B1]
[B1].ClearContents
Range("B1").Select
End If
End Sub
Toimii nuolinäppäimillä ja enterillä
oletuksena B1 soluun kirjoitetaan ja C1 soluun summataan
jäi koodi pois...
Toimii nuolinäppäimillä ja enterillä
oletuksena B1 soluun kirjoitetaan ja C1 soluun summataan
taulukon moduuliin
Dim vika As String
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
On Error GoTo virhe
Application.EnableEvents = False
Select Case Target.Address
Case "$B$1"
vika = "$B$1"
End Select
If vika = "$B$1" Then
If Not IsNumeric(Range(vika)) Then GoTo virhe
Range(vika).Offset(0, 1) = Range(vika).Offset(0, 1) Range(vika)
Range(vika) = ""
End If
Application.EnableEvents = True
Exit Sub
virhe:
Range(vika).Select
Range(vika) = ""
MsgBox "et syöttänyt numeroa"
Application.EnableEvents = True
End Sub
Laittaa tähän lisäksi että kun lisään luvun excel/VBA katsoo mikä kuukausi ja lisää toiseen sheettiin antamalleni kuukauden kohdalle luvun. esim. kun lisään 20, tulee viereen 20 alkup.luku ja toiseen sheettiin lokakuun kohdalle 20 alkup.luku, ja marraskuussa kun lisään luku tulee marraskuun kohdalle.?
taulukon moduuliin
Dim vika As String
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
On Error GoTo virhe
Application.EnableEvents = False
Select Case Target.Address
Case "$B$1"
vika = "$B$1"
End Select
If vika = "$B$1" Then
If Not IsNumeric(Range(vika)) Then GoTo virhe
Range(vika).Offset(0, 1) = Range(vika).Offset(0, 1) Range(vika)
Arvo = Range(vika).Offset(0, 1)
Siirrä
Taul1.Activate
Range(vika) = ""
End If
Application.EnableEvents = True
Exit Sub
virhe:
Range(vika).Select
Range(vika) = ""
MsgBox "et syöttänyt numeroa"
Application.EnableEvents = True
End Sub
tee uusi moduuli ja koodi sinne
Public Arvo As Double
Sub Siirrä()
Dim kuukausi As Integer
kuukausi = Format(Date, "mm")
Taul2.Activate
Range("A1").Offset(kuukausi, 1) = Arvo
End Sub
oletuksena, että kuukaudet ovat peräkkäin ja alkavat solusta A2