Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Problem z ruchomym przyciskiem
siwa1911




Typ: neutral
Postów: 5
Zarejestrowany: Apr 2005
Problem z ruchomym przyciskiem

mam taki problem do excela musze  wstawic jakis obiekt  np przycisk, zeby był
nieruchomo w jednej komórce a po kliknieciu albo podwujnym kliknieciu  na
nim zeby wyszedł z  niej i jak klikne na innna komórke zeby tam sie wstawił.
i zeby dało sie to samo zrobic spowrotem to znaczy wiele razy
cały ten obiekt oczywiscie ma byc w visual basic.
za odp z góry dziękuje. Sylwia

18-04-2005 11:58
Pokaż profil siwa1911  Wyślij email do siwa1911   
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Ponieważ nie widzę sensu takiego działania ComamndButton nigdy się tym nie zajmowałam, nie do końca rozumiem podany przez Ciebie algorytm.
Jedyne rowiązanie jakie mi się nasuwa, to aby jednak przesuwać go przy wciśniętym lewym klawiszu myszy,po podwójnym kliknięciu, kończyć wyborem komórki, ale też nie piszesz nic na ten teamat.
Wpisuję kod tutaj, bo może koledzy albo go poprawią, albo mają lepsze pomysły (może API )???

Bo to nie działa za dobrze.
' Kod arkusza w którym jest przycisk
Option Explicit
' dodany z Przybornika formantów
' przycisk nazwałam cmdPrzesun

Dim m_bRightButt As Boolean

Private Property Get bRightButt() As Variant
bRightButt = m_bRightButt
End Property

Private Property Let bRightButt(ByVal vNewValue As Variant)
m_bRightButt = vNewValue
End Property

Private Sub Worksheet_Activate()
m_bRightButt = False
Call ButtCaption
End Sub

Private Sub cmdPrzesun_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
bRightButt = True
Call ButtCaption
End Sub

Private Sub cmdPrzesun_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If bRightButt = True Then
    If Button = 1 Then
        cmdPrzesun.Left = cmdPrzesun.Left + X
        cmdPrzesun.Top = cmdPrzesun.Top + Y
        DoEvents
        Exit Sub
    End If
End If
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If bRightButt Then
    With cmdPrzesun
        .Left = Target.Left
        .Top = Target.Top
    End With
    bRightButt = False
    ' koniec przesuwania
    ButtCaption
End If
End Sub

Function ButtCaption()
With cmdPrzesun
    ' ponizsza linijka to nie jest konieczna
    .Font.Bold = True
    If bRightButt Then
        .Caption = "Można przesuwać przy wciśniętym " _
            & vbNewLine & "lewym klawiszu myszy" _
            & vbNewLine & " trzeba trzymac mysz na klawiszu" _
            & vbNewLine & "Przesuwanie kończy się dopiero " _
            & vbNewLine & "kliknięciem na jakąś kmórkę"
            ' ponizsza linijka to nie jest konieczna
            .ForeColor = &H80000002
    Else
        .Caption = "Nie można przesuwać" _
            & vbNewLine & "Kliknij dwukrotnie myszką"
        ' ponizsza linijka to nie jest konieczna
        .ForeColor = &H80000012
    End If
End With
End Function


_____________________________________________
Karolina

18-04-2005 18:59
Pokaż profil karolinavb  Wyślij email do karolinavb   
siwa1911




Typ: neutral
Postów: 5
Zarejestrowany: Apr 2005
Dzięki bardzo:):):):):)

dziękuje, właśnie o to mi chodziło,  działa mi to świetnie, wielkie dzięki za pomoc;] pozdrawiam

18-04-2005 20:09
Pokaż profil siwa1911  Wyślij email do siwa1911   
siwa1911




Typ: neutral
Postów: 5
Zarejestrowany: Apr 2005
Znów coś nie tak:)

mam  jeszcze jedno pytanie jak zrobic to samo dla wielu przycisków, bo  kiedy powtarzam funkcje to wszystkie przyciski po kliknieci w komórke wklejają  sie tam naraz, zamiast tylko ten jeden który powinnien.

19-04-2005 09:11
Pokaż profil siwa1911  Wyślij email do siwa1911   
siwa1911




Typ: neutral
Postów: 5
Zarejestrowany: Apr 2005
:):):)

Problem juz nieaktualny Karolina Dzięki jeszcze raz

20-04-2005 19:09
Pokaż profil siwa1911  Wyślij email do siwa1911   
Wszystkich odpowiedzi: 4 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1