Combinatie maken van twee of meerdere lijsten in vba

Status
Niet open voor verdere reacties.

gast0660

Terugkerende gebruiker
Lid geworden
28 dec 2010
Berichten
4.530
Hallo,
Ik heb een stukje code (werkt perfect).
De code doet het volgende, als ik de naam van een tabblad wijzig, wordt ook de naam in de lijst gewijzigd.
Nu had ik graag in die code een combinatie gekregen van twee lijsten, maar ik krijg het niet voor elkaar.
Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name <> PrevShtName Then
With Application
.EnableEvents = False
.Index([List_of_Sheets], .Match(IIf(VBA.IsNumeric(PrevShtName), Val(PrevShtName), PrevShtName), [List_of_Sheets], 0)).Value = Sh.Name
.EnableEvents = True
End With
End If
End Sub
Nu had ik graag deze code zeg maar ook in bovenstaande code gekregen
Code:
.Index([List_of_Sheets1], .Match(IIf(VBA.IsNumeric(PrevShtName), Val(PrevShtName), PrevShtName), [List_of_Sheets1], 0)).Value
Ieder idee welkom
 
Wij kennen de benamingen niet dus voor mij erg onduidelijk.

Je gebruikt ook het 4e argument in de Index zo te zien, en daar staat een 0 (nul).
Dit lees ik er over.
Bereik_getal - wordt alleen gebruikt bij verwijzingen. Selecteert een bereik in de verwijzing waaruit het snijpunt van rij_getal en kolom_getal moet worden opgehaald. Het eerste bereik dat u selecteert of invoert heeft nummer 1, het tweede 2, enzovoort. Als bereik_getal wordt weggelaten, wordt standaard bereik1 gebruikt.
 
Ieder voorbeeldbestand is welkom ;)
 
Hoi HSV en SNB,
Alvast bedankt voor het meedenken.
Hierbij in bijlage een vbtje
Ik heb 2 lijsten (kolom B en kolom E) in het blad data.
De bedoeling is dat als de naam van het tabblab verandert, de lijst ook aangepast wordt.
Dit werkt perfect voor de eerste lijst (B) maar ik zie niet direct hoe ik ook de tweede lijst werkend moet krijgen.
Hopelijk is het duidelijker, had het mij iets te simpel voorgesteld:o
 

Bijlagen

Is dit niet voldoende in de codemodule van 'Thisworkbook' ?
(zonder 'named ranges', en zonder een public variable in een macromodule )

Code:
Dim PrevShtName As String

Private Sub Workbook_Open()
   PrevShtName = ActiveSheet.Name
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     PrevShtName = Sh.Name
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
   If Sh.Name <> PrevShtName Then Sheets("Data").Cells.Replace PrevShtName, Sh.Name, 1
End Sub
 
Laatst bewerkt:
Hoi SNB,
Dank u voor het meedenken maar test eens zelf:D
 
Was gebeurd.
Pas maar aan als je iets anders wil.
 
Of: denk zelf eens na:

Code:
Dim PrevShtName As String

Private Sub Workbook_Open()
   PrevShtName = ActiveSheet.Name
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     PrevShtName = Sh.Name
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
   If prevshtname<>"" and Sh.Name <> PrevShtName Then Sheets("Data").Cells.Replace PrevShtName, Sh.Name, 1
End Sub
 
Beste SNB,
De smiley was alleen bedoeld voor het resultaat dat ik kreeg, ik ben de laatste die twijfels heeft over uw kennis.
Maar bij deze hartelijk dank, ik kan de vraag op opgelost zetten.
 
Antwoord op je vraag in VBAxpress & chandoo:

Code:
Private Sub SaveRow() 
  activecell.resize(,6) = array(TextBox1,ComboBox1, ComboBox2,ComboBox3, ComboBox4,TextBox2) 
End Sub
 
Hoi snib,
hartelijk dank voor het meedenken,
Ik word er ondertussen moedeloos van , ik heb hier x aantal gelijkaardige bestandjes die perfect werken en deze krijg ik voor geen meter werkend. Ik blijf die code maar overlopen en vergelijken.
Iedere suggestie is natuurlijk welkom
Groet
 
Hoi Snb,
Beste dank voor uw aangeboden hulp
Ben al zoveel aan het prullen geweest:(
De bedoeling is als ik in de listbox klik en daarna in de text en of comboboxes iets verander die bepaalde ingave wordt aangepast in betreffende rij in het werkblad en dat ook de listbox wordt aangepast.
En ondertussen door het prullen krijg ik ook Amerikaanse datum notatie, maar ik zie door het bos de bomen niet meer.
Het is gewoon voor een sportclub
in bijlage
 

Bijlagen

De manier waarop je de keuzelijst vult met al die geneste IF's is ook niet geweldig:
Code:
Private Sub ComboBox2_Change()
    Select Case ComboBox2
        Case "Pupillen"
            ComboBox3.List = Sheets("Gegevens").Range("B2:B5").Value
        Case "Junioren"
            ComboBox3.List = Sheets("Gegevens").Range("C2:C5").Value
        Case "Senioren"
                ComboBox3.List = Sheets("Gegevens").Range("D2:D5").Value
        Case "Veteranen"
            ComboBox3.List = Sheets("Gegevens").Range("E2:E5").Value
    End Select
End Sub
En het zal vast nog wel slimmer kunnen :).
 
Of:
Code:
Private Sub ComboBox2_Change()
  ComboBox3 = ""
  ComboBox3.List = Sheets("Gegevens").Range("B2:B5").Offset(, ComboBox2.ListIndex).Value
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan