Wątek przeniesiony 2021-01-28 13:23 z Inne języki programowania przez cerrato.

Prośba o pomoc z VBA

0

Cześć,

Poniższy kod wyświetla zawartość komórki D2 w text boxie:

Dim qqq As Long

qqq = ActiveWorkbook.Worksheets("Sheet1").Range("D2")

UserForm1.TextBox1.Text = qqq
   
UserForm1.Show

Ale gdy zmieniam ten kod żeby wyświetlał wartości w zakresie komórek (np. D2:D3) to wyskakuje błąd: Run-time error '13': Type mismatch.

Zmieniam tylko tą linijkę: qqq = ActiveWorkbook.Worksheets("Sheet1").Range("D2:D3")

Serdecznie proszę o pomoc.

0

Podaj przykładową zawartość tych komórek i napisz, co ma wyświetlać.

0

Run-time error '13': Type mismatch.

Czy zmienna qqq przypadkiem nie jest typu zakres?

--
Pawel

Edit: przynajmniej taki typ chcesz postawić do tej zmiennej. Może VBA sam konwertuje pojedynczą komórkę do typu Long, ale z zakresem nie radzi sobie. Pewnie musisz przygotować tekst do wyświetlania sprawdzając wszystkie komórki z zakresu i łącząc je razem.

0

Cześć,

Dziękuję za odpowiedzi.

Faktycznie deklarowanie zmiennej jako Long to zły pomysł bo wtedy działa tylko dla 1 komórki. Poradziłem sobie z tym w następujący sposób:

Dim sh As Worksheet
Set sh = ActiveWorkbook.Worksheets("Sheet1")
Dim str As String
Dim i As Integer
For i = 1 To Application.WorksheetFunction.Count(sh.Range("D:D"))
str = str & " " & sh.Range("D1").Offset(i, 0).Value
Next i
UserForm1.TextBox1.Text = str
UserForm1.Show

Gdy szukałem rozwiązania tego problemu w Internecie to znalazłem, że można do tego użyć tablic(arrays) i bardzo jestem ciekawy jak to zrobić. Próbowałem ale mi nie wychodzi. 2 tygodnie temu zacząłem się uczyć VBA :) Czy wiecie może jak przerobić powyższy kod na taki który wyświetli wszystkie elementy tablicy (od LBound do UBound)? A może w tym przypadku użycie "arrays" to zły pomysł?

Ogólnie to potrzebuję tego do wyświetlania numerów pracowników które mieszczą się w przedziale od 1 do 90 i znajdują się w jednej kolumnie.

Pozdrawiam.

0

To zależy jak chcesz przetwarzać dane.

For Each objCell in sh.Range("D:D")
    str = str & " " & objCell.Value
Next

--
Pawel

1 użytkowników online, w tym zalogowanych: 0, gości: 1