logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak dynamicznie wyświetlić wartość z komórki Excel w TextBox VBA?

marcel.szc 22 Sty 2012 23:35 8884 11
REKLAMA
  • #1 10435596
    marcel.szc
    Poziom 9  
    Posty: 12
    Ocena: 5
    Witam serdecznie!
    Niedawno rozpocząłem swoją przygodę z vba i potrzebuję pomocy.
    Chcę wyświetlić w textboxie w moim programie wartość sczytywaną z komórki z excela, czyli na przykład jeśli w komórce "C1" mam wartość 15, to w moim programie wyświetli się w polu tekstowym 15. Oczywiście jeśli wartość komórki się zmieni wartość w textboxie również musi ulec zmianie.
    Z góry dziękuję za pomoc
    Pozdrawiam
    Marcel
  • REKLAMA
  • #2 10435617
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    Porównaj i jeśli większe przypisz. Coś na wzór
    If Range(C1).value > TxtBox.value then TxtBox =Range("C1")

    Och, przeczytałem szczytową... Już ta godzina?
    TxtBox=Range("C1") oczywiście
  • REKLAMA
  • Pomocny post
    #3 10435638
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Właściwość ControlSource textboxa ustaw na adres komórki, np. Arkusz1!A2 (uwaga: działa w dwie strony, tj. zmiana wartości w textboxie zmieni wartość w Excelu, chyba że dasz go tylko do odczytu)
  • REKLAMA
  • #4 10435642
    marcel.szc
    Poziom 9  
    Posty: 12
    Ocena: 5
    Coś na wzór:


    Private Sub TextBox1_Change()
    TextBox = Range("C1")
    End Sub

    ?
  • #5 10435646
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    marcel.szc napisał:
    Coś na wzór:


    Private Sub TextBox1_Change()
    TextBox = Range("C1")
    End Sub

    ?
    To zadziała tylko przy zmianie wartości w textboxie, a chyba nie o to chodziło? (textbox.Text = ... jeśli już)
  • #6 10435648
    marcel.szc
    Poziom 9  
    Posty: 12
    Ocena: 5
    marcinj12 dziękuję, działa, a powiedz mi czy mogę zablokować tego textboxa aby użytkownik nie mógł wprowadzić swojej wartości?
  • REKLAMA
  • #7 10435655
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Ustaw mu właściwość Enabled = False. Ale jeżeli ma on służyć tylko do wyświetlania danych, to lepiej użyj Label (zawsze możesz go sforrmatować tak, żeby przypominał textboxa: BorderStyle i BackColor)
  • #8 10435660
    marcel.szc
    Poziom 9  
    Posty: 12
    Ocena: 5
    Jeśli ustawię Enabled = False nie wyświetla mi wartości komórki
    A label nie ma ControlSource

    Przepraszam, mój błąd. Ustawiłem przypadkowo na pustą komórkę i dlatego nie wyświetlało wartości :)
  • #9 10435675
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    marcel.szc napisał:
    A label nie ma ControlSource
    Nie ma wyeksponowanej w designerze. W zdarzeniu, np. inicjalizacji formy, możesz przypisać do niego w kodzie:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #10 10435683
    marcel.szc
    Poziom 9  
    Posty: 12
    Ocena: 5
    Nie wiem co mogłem zepsuć kopiując powyższą formułkę ale zwyczajnie nie działa.
  • #11 10435699
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    marcel.szc napisał:
    Nie wiem co mogłem zepsuć kopiując powyższą formułkę ale zwyczajnie nie działa.
    No ja też nie wiem... :)
    To jest label na UserForm'ie, który podpinasz w zdarzeniu Initialize?
    Kod: text
    Zaloguj się, aby zobaczyć kod

    ---
    Edit: Mała korekta :) Zamiast zdarzenia Activate lepiej wykorzystać Initialize.
  • #12 10436194
    marcel.szc
    Poziom 9  
    Posty: 12
    Ocena: 5
    Działa kolego, strasznie Ci dziękuję za pomoc!

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukiwał sposobu na dynamiczne wyświetlanie wartości z komórki Excel w TextBoxie w VBA. Otrzymał kilka sugestii, w tym użycie właściwości ControlSource dla TextBoxa, co pozwala na dwukierunkową synchronizację wartości między TextBoxem a komórką. Wskazano również, że można użyć zdarzenia Change, aby aktualizować TextBox w momencie zmiany wartości w Excelu. Użytkownik zapytał o możliwość zablokowania edycji w TextBoxie, co można osiągnąć przez ustawienie właściwości Enabled na False. Zasugerowano również użycie Labela jako alternatywy do wyświetlania danych, jednak zauważono, że Label nie obsługuje ControlSource. Ostatecznie użytkownik potwierdził, że rozwiązanie działa.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA