Excel VBA popup bij wijzigen item listbox

Status
Niet open voor verdere reacties.

123ErikV

Nieuwe gebruiker
Lid geworden
4 jun 2007
Berichten
3
Hallo,


ik ben een Excel-toepassing aan het maken met VBA. (gaat over onderhoud per bouwelement)

Ik heb een formulier dat opgeroepen wordt (in sheet onderhoudslijst) en waarbij dan gegevens (tekst uit rekenblad onderhoudslijst) in een listbox worden ingeladen (m.b.v. hulpsheet Rekenzone).


ik duid bvb 1 element aan (dakdekking) dan krijg ik een formulier waarbij tot 10 onderhoudswerken mogelijk zijn bij dit element (zichtbaar in listbox).

Het probleem is dat de tekst uit de cellen van het rekenblad (uit hulpsheet rekenzone)teveel is voor weer te geven in mijn listbox. Nu wil ik dat wanneer ik een ander item (1 van 10 onderhoudswerken) aanklik in mijn formulier ik een popup krijg (of msgbox) met daarin de volledige tekst.

Dit lukt half: i.p.v. te blijven staan in de sheet (onderhoudslijst) waar formulier opgeroepen wordt krijg ik eerst de msgbox in sheet (rekenzone) (= hulpsheet)


Private Sub ListBox2_Change()
Dim dtoh1, dtoh2, dtoh3, dtoh4, dtoh5, dtoh6, dtoh7, dtoh8, dtoh9, dtoh10 As Date
Dim dt1, dt2, dt3, dt4, dt5, dt6, dt7, dt8, dt9, dt10 As Date
Dim vraag As Integer
Dim onderh1, onderh2 As String

If ListBox2.Value = Sheets("rekenzone").Range("xonderh1") = True Then
TextBox3.Value = Sheets("rekenzone").Range("xopm1").Value
TextBox4.Value = Sheets("rekenzone").Range("xopmgebr1").Value
TextBox5.Value = Sheets("rekenzone").Range("xperiod1").Value
dt1 = Range("xdateuit1").Value
dtoh1 = Range("xdateonderh1").Value
TextBox6.Value = dt1
TextBox7.Value = dtoh1
If Sheets("rekenzone").Range("ohstatus1").Value = 1 Then
TextBox7.BackColor = RGB(255, 255, 153)
Label10.Visible = True
ElseIf Sheets("rekenzone").Range("ohstatus1").Value = 2 Then
TextBox7.BackColor = RGB(255, 102, 0)
Label10.Visible = True
ElseIf Sheets("rekenzone").Range("ohstatus1").Value = 3 Then
TextBox7.BackColor = RGB(255, 0, 0)
Label10.Visible = True
End If
xonderh1 = Sheets("rekenzone").Range("xonderh1").Value
onderh1 = MsgBox(xonderh1, vbInformation + vbOKOnly, "onderhoud")

ElseIf ListBox2.Value = Sheets("rekenzone").Range("xonderh2") Then

en dit gaat dan zo nog 9 keer verder ....tot xonderh10

Dus even vraag herhalen : hoe krijg ik mijn msgbox (of poup) zonder dat deze naar de andere sheet gaat (van waaruit gegevens komen)?

hoop dat dit een beetje duidelijk was ??:confused:
bedankt alvast
 
Dag Erik,

Echt duidelijk is het me niet, maar ik heb je code wat vereenvoudigd.
Stuur eens een proef bestandje op. Dat is vaak duidelijker dan een heel verhaal.
Code:
Private Sub ListBox2_Change()
  Dim dtoh1, dtoh2, dtoh3, dtoh4, dtoh5, dtoh6, dtoh7, dtoh8, dtoh9, dtoh10 As Date
  Dim dt1, dt2, dt3, dt4, dt5, dt6, dt7, dt8, dt9, dt10 As Date
  Dim vraag As Integer
  Dim onderh1, onderh2 As String
  Dim i as integer  
  Dim k As Long
  Dim r1, r2, r3, r4, r5, r6, r7 As String
  Dim v As Boolean
  
  With Sheets("rekenzone")
    For i = 1 To 10
      If ListBox2.Value = .Range("xonderh" & i) Then
        TextBox3.Value = .Range("xopm" & i).Value
        TextBox4.Value = .Range("xopmgebr" & i).Value
        TextBox5.Value = .Range("xperiod" & i).Value
        TextBox6.Value = Range("xdateuit" & i).Value
        TextBox7.Value = Range("xdateonderh" & i).Value
        Select Case .Range("ohstatus" & i).Value
        Case 1
          k = RGB(255, 255, 153)
          v = True
        Case 2
          k = RGB(255, 102, 0)
          v = True
        Case 3
          k = RGB(255, 0, 0)
          v = True
        End Select
        TextBox7.BackColor = k
        Label10.Visible = v
        xonderh1 = .Range("xonderh" & i).Value
        onderh1 = InputBox(xonderh1, vbInformation + vbOKOnly, "onderhoud")
        Exit For
      End If
    Next
  End With
End Sub

Gegroet, Axel.
 
Erik

dit zijn slechte declaraties:

Code:
Dim dtoh1, dtoh2, dtoh3, dtoh4, dtoh5, dtoh6, dtoh7, dtoh8, dtoh9, dtoh10 As Date
  Dim dt1, dt2, dt3, dt4, dt5, dt6, dt7, dt8, dt9, dt10 As Date
  Dim onderh1, onderh2 As String
  Dim r1, r2, r3, r4, r5, r6, r7 As String

Hierbij declareer je

dtoh10 As Date
dt10 As Date
onderh2 As String
r7 As String

de rest zijn nu allemaal gedeclareerd als Variant. Die Date, String zoals jij ze schrijft gelden enkel voor het laatste element. Je moet dat telkens herhalen.

Wigi
 
RE: bijlage bestand

hallo,

om zaken te duiden: in bijlage excel bestand (heb overbodige sheets en scripts verwijderd):

opm.

1. ga naar sheet onderhoudslijst

dit is een tabel met bouwelementen en per element 1 tot 10 onderhoudswerken (=kolom Onderhoud) met periodiciteit en datums van laatst uitgevoerde en volgende onderhoudsbeurten.



2. ga in kolom "element" staan en klik op knop "Onderhoudsfiche"

formulier wordt geopend (van 1 element) met een listbox waarin max 10 onderhoudsbeurten uit tabel zijn opgenomen (maar is teveel tekst om te tonen in formulier dus ik wil , wanneer ik een andere onderhoudsbeurt aanklik een popup of soortgelijks die me de volledige tekst geeft - zie nu msgbox

opmerkingen:
a) de linken naar bibliografie zullen niet werken
b) ik maak nogal veel gebruik van hulpsheet Rekenzone met verwijzingen naar benoemde cellen etc....
c) vba bij form: onderhoudselement - Listbox2_change()
d) heb maar tot onderhoudsbeurt2 msgbox ingegeven
 

Bijlagen

Re:

Ok bedankt Axel,


Maakt script (listbox2) overzichtelijker en korter en heb een een paar nieuwe technieken bijgeleerd::thumb: .

groeten
Erik
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan