Simpeler maken van <Select Case> en <With> macro

Status
Niet open voor verdere reacties.

Offthefield

Gebruiker
Lid geworden
27 apr 2005
Berichten
369
Ik heb een programma met 50 offerte (voorbeeld 3 stuks), die per tabblad ingevoerd zijn,
nu wil ik vanuit de combobox naar een bepaald tabblad, in dit geval gaat het goed,
maar met 50 stuks of meer, is dit een hoop invoerwerk en wordt het onoverzichtelijk

1. Is er een manier dat de Additem en Sheet("xxx") <in de Case macro> direct het tabblad aangeeft
2. ListBox1.RowSource ook automatisch de gegevens van de opgevraagde sheet geeft, zonder dat je
50x bij Naam beheren de velden moet benoemen

Ik hoop dat iemand een idee heeft, alvast hartelijk dank

Code:
With cmbOfferte
    .AddItem "T-19042018"
    .AddItem "E-19042018"
    .AddItem "A-17042018"
    .Text = .List(0)
End With

Code:
Select Case cmbOfferte.ListIndex
    Case 0
    Sheets("T-19042018").Select
    ListBox1.RowSource = "T19042018"
    cmbOfferte.SetFocus
    Case 1
    Sheets("E-19042018").Select
    ListBox1.RowSource = "E19042018"
    cmbOfferte.SetFocus
    Case 2
    Sheets("A-17042018").Select
    ListBox1.RowSource = "A17042018"
    cmbOfferte.SetFocus
 
End Select
 

Bijlagen

  • 00-LB-filter-combobox.xls
    120 KB · Weergaven: 40
Als je je listbox bij eigenschappen instelt op 4 kolommen dan heb je volgens mij hier genoeg aan:

Code:
Private Sub cmbOfferte_Change()
Application.Goto Sheets(cmbOfferte.Value).Cells(1)
ListBox1.RowSource = Replace(cmbOfferte.Value, "-", "")
End Sub

En je combobox vullen zo:
Code:
cmbOfferte.List = Array("T-19042018", "E-19042018", "A-17042018")
 
Laatst bewerkt:
Al is er in de uitleg bij de vraag niets te vinden hoe het eea tot stand komt lijkt mij RowSource onnodig net als het 'handmatig'/'hardcoded' vullen van de combobox.

Code:
Private Sub UserForm_Initialize()
  cmbOfferte.List = Sheets("Basisgegevens").Columns(1).SpecialCells(2).Offset(1).SpecialCells(2).Value
End Sub
of
Code:
Private Sub UserForm_Initialize()
  For Each sh In Sheets
    If sh.Name <> "Basisgegevens" Then c00 = c00 & "|" & sh.Name
  Next sh
  cmbOfferte.List = Split(Mid(c00, 2), "|")
End Sub

en
Code:
Private Sub cmbOfferte_Change()
  If cmbOfferte.ListIndex > -1 Then
    ListBox1.List = Sheets(cmbOfferte.Text).UsedRange.Value
    Application.Goto Sheets(cmbOfferte.Text).Cells(1)
  End If
End Sub
 
Alvast hartelijk dank voor de supersnelle reactie,
ik ga ze beiden straks uitproberen, TOP!!!
 
Ik ben met de informatie het programma verder uitgaan werken met het mooier krijgen mbv formaten,
nu heb ik in versie 6 de combobox veranderd in een listbox, maar nu moet ik om
de gegevens in listbox1 (de gegevens uit de tabbladen) te krijgen, iedere keer pijl omlaag en <enteren>
om de gegevens in listbox1 te krijgen, mijn vraag is kan dit ook ZONDER de extra <enter>

Vraag 2 : Ik wil dat het programma na het opstarten gelijk terecht komt op veld A1 in TABBLAD Basisgegevens,
ik heb dat volgens mij wel aangegeven maar hij komt er niet

Alvast bedankt, ook nog voor de eerdere informatie
 

Bijlagen

  • Tabbladen-Versie5.xls
    128 KB · Weergaven: 31
  • Tabbladen-Versie6.xls
    133,5 KB · Weergaven: 26
Vraag 1 opgelost door aanpassing van de Private Sub naar :

Code:
Private Sub Listbox2_change()
'
On Error Resume Next
'
Dim lsbindex As Integer
    
With ListBox1

.ColumnCount = 4
.ColumnWidths = "100;40;50;50"
.Width = 300
'
  If ListBox2.ListIndex > -1 Then
    .List = Sheets(ListBox2.Text).UsedRange.Value
    Application.Goto Sheets(ListBox2.Text).Cells(1)
    
      For i = 0 To .ListCount - 1
  
      .List(i, 0) = Format(.List(i, 0), "#")
      .List(i, 1) = Format(.List(i, 1), "#0")
      .List(i, 2) = Format(.List(i, 2), "€#,##0.00")
      .List(i, 3) = Format(.List(i, 3), "€#,##0.00")
     Next i
'
  End If
'
End With
'
End Sub
 
Vraag 2 ook opgelost

Code:
Option Explicit

Private Sub Workbook_Open()
''creeert commandbar als het when als het werkblad is geopend
Sheets("Basisgegevens").Select
Range("A1").Select
'
End Sub

Nog hartelijk dank allemaal
 
Waarom gebruik je 2x select terwijl de betere optie al aangereikt is?
 
Ik snap de vraag niet helemaal, maar gaat het om de oplossing op de laatste vraag 2?
 
Lijkt mij wel. Als er overal Application.Goto gebruikt wordt dan mag ik toch aannemen dat je begrijpt wat dit doet.
 
Ik heb nog nooit met een Application.Goto gewerkt, maar ik zie inderdaad dat het 2x gebruikt wordt
VenA bedankt voor de tip! en ik ga kijken wat deze Application precies doet
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan