met MsgBox Regel in ander bestand verwijderen.

Status
Niet open voor verdere reacties.

markwat

Gebruiker
Lid geworden
11 mrt 2011
Berichten
301
Deze code werkt goed om het weg te schrijven naar ander bestand.


Code:
Private Sub ComboBox28_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If MsgBox("U wilt deze gegevens toevoegen?", vbCritical + vbYesNo) = vbYes Then
Application.ScreenUpdating = False
  If ComboBox28.ListIndex = -1 Then
    With Workbooks.Open("C:\Dropbox\documenten\Excel omschrijving.xlsm").Sheets("blad2")
     .Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(, 5) = Array(ComboBox28.Value, Range("h48").Value, "", Range("n48").Value, Range("p48").Value)
    .Range("C3:G" & .Cells(Rows.Count, 3).End(xlUp).Row).Sort .Range("C3")
     .Parent.Close -1
    End With
  End If
End If
End Sub

Mijn vraag is; met een andere MsgBox een nee toevoegen en dat deze dan de regel weer verwijderd uit het bestand.
De ComboBox is LinkedCell aan InvoerSheetO41

Code:
Private Sub ComboBox28_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If MsgBox("Ja toevoegen Nee Verwijderen?", vbCritical + vbYesNoCancel) = vbYes Then
Application.ScreenUpdating = False
  If ComboBox28.ListIndex = -1 Then
    With Workbooks.Open("C:\Dropbox\documenten\Excel omschrijving.xlsm").Sheets("blad2")
     .Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(, 5) = Array(ComboBox28.Value, Range("h48").Value, "", Range("n48").Value, Range("p48").Value)
    .Range("C3:G" & .Cells(Rows.Count, 3).End(xlUp).Row).Sort .Range("C3")
     .Parent.Close -1
    End With
  End If
End If
If vbNo Then


End Sub
 
Waarschijnlijk zoiets
Code:
If vbNo Then 'Else
  Dim f As Range
  If ComboBox28.ListIndex <> -1 Then
  With Workbooks.Open("C:\Dropbox\documenten\Excel omschrijving.xlsm").Sheets("blad2")
    Set f = .Columns(3).Find(ComboBox28.Value)
    If Not f Is Nothing Then Rows(f.Row).Delete
 
Laatst bewerkt:
Waarschijnlijk.
Code:
Rows([COLOR=#ff0000]f[/COLOR].Row).Delete
 
Scherp en aangepast. Ooit ergens gelezen dat je bewust wat foutjes moet achterlaten:d
 
Je leest teveel @snb. :d
 
3 1/2 uur verder met alles geprobeerd.... :eek:
Het bestand zie ik niet geopend worden en de regel is ook niet geleegd.
...toevoegen eerste gedeelte werkt wel nog naar behoren..

Code:
Private Sub ComboBox28_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If MsgBox("Ja toevoegen Nee Verwijderen?", vbCritical + vbYesNoCancel) = vbYes Then
Application.ScreenUpdating = False
  If ComboBox28.ListIndex = -1 Then
    With Workbooks.Open("C:\Dropbox\documenten\Excel omschrijving.xlsm").Sheets("blad2")
     .Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(, 5) = Array(ComboBox28.Value, Range("h48").Value, "", Range("n48").Value, Range("p48").Value)
    .Range("C3:G" & .Cells(Rows.Count, 3).End(xlUp).Row).Sort .Range("C3")
     .Parent.Close -1
    End With
  End If
End If
If vbNo Then 'Else
  Dim f As Range
  If ComboBox28.ListIndex <>- 1 Then
  With Workbooks.Open("C:\Dropbox\documenten\Excel omschrijving.xlsm").Sheets("blad2")
    Set f = .Columns(3).Find(ComboBox28.Value)
    If Not f Is Nothing Then Rows(f.Row).Delete
   End With
  End If
End Sub
 
Al eens iets gelezen over debuggen? Over het gebruik van de verschillende vensters die je open kan zetten als je in de VB-editor bent? Het gebruik van Stop? Etc.

De meest plausibele verklaring is dat ComboBox28.ListIndex = -1

een msgbox is ook een handig middel om te debuggen.
Code:
msgbox ComboBox28.ListIndex
 
Laatst bewerkt:
Niet getest, maar lijkt me beter.

Ook denk ik dat je de verkeerde gegevens in 'omschrijving.xlsm' zet; nl. de gegevens van 'omschrijving.xlsm' zelf (dat is door het openen je activeworkbook).
Door er 'Wb' voor te zetten zijn het nu de gegevens van thisworkbook.sheets(1).

Code:
Private Sub ComboBox28_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim f As Range, Wb as worksheet
Application.ScreenUpdating = False
With Workbooks.Open("C:\Dropbox\documenten\Excel omschrijving.xlsm").Sheets("blad2")
  If MsgBox("Ja toevoegen Nee Verwijderen?", vbCritical + vbYesNo) = vbYes Then
     If ComboBox28.ListIndex < 0 Then
      set Wb = thisworkbook.sheets(1)
         .Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(, 5) = Array(ComboBox28.Value, Wb.Range("h48").Value, "", Wb.Range("n48").Value, Wb.Range("p48").Value)
         .Range("C3:G" & .Cells(Rows.Count, 3).End(xlUp).Row).Sort .Range("C3")
       Else
         Set f = .Columns(3).Find(ComboBox28.Value)
         If Not f Is Nothing Then Rows(f.Row).Delete
       End If
     end If
   .Parent.Close -1
  end with
End Sub
 
Laatst bewerkt:
Ik vind het wel heel gaaf dat jullie je zo in zetten.

De laatste optie is achteruitgang :)
Nu wordt bij opslaan enkel en alleen in "excel omschrijving" de eerste kolom gevuld. Er wordt wel een hele regel tussen gevoegd van C tot G
Bij verwijderen gebeurt er niets.

alles wordt opgeslagen naar "excel omschrijving" C = ComboBox28, H = D, N = F, G = P
met zoeken van uit de ComboBox28 is het dus ophalen vanuit "excel omschrijving"
verwijderen moet dus ook gebeuren in "excel omschrijving"
kan het kloppen dat beide aangeven van;
f As Range, Wb As Worksheet = Nothing?
 
misschien is dit het?
De InvoerSheet Cellen H,N,G zoeken zelf wanneer ComboBox 28 gevuld wordt.
oa =VERT.ZOEKEN(B48;'C:\Dropbox\documenten\[Excel omschrijving.xlsm]Blad2'!C$1:G$65522;4;0)
 
Jij kijkt in het verkeerde werkboek.
Alles wordt naar werkboek 'Omschrijving' geplaatst of uit verwijderd.
Als alles uit werkboek 'Omschrijving' gehaald of verwijderd moet worden zal de code anders geschreven moeten worden.
De herschreven code komt voort uit je eigen code.

Hiermee geef je aan dat alles uit Thisworkbook naar werkboek 'Omschrijving' wordt geschreven.
Code:
with workboeks.open("c:\....).sheets(1)
 .Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(, 5) =array(......
 
Beste HSV,

Dan heb ik verkeerde info gegeven.. maar zo als u zegt moet alles van Excel omschrijving gehaald, naar toe geschreven, en op verwijderd worden.
 
Dan moet je het vast zo bedoelen.
Werkt natuurlijk alleen als listindex > -1, dus getypte gegevens in de combobox zijn uitgesloten.
Code:
Private Sub ComboBox28_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim f As Range, Wb as worksheet, msg as long
Application.ScreenUpdating = False
set Wb = thisworkbook.sheets(1)
If ComboBox28.ListIndex > -1 Then
With Workbooks.Open[COLOR=#3E3E3E]("C:\Dropbox\documenten\Excel omschrijving.xlsm").Sheets("blad2")[/COLOR]
 msg = MsgBox("Ja is toevoegen, Nee is Verwijderen?", vbCritical + vbYesNocancel)
  if msg = vbyes then
         Wb.Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(, 5) = Array(ComboBox28.Value, .Range("h48").Value, "", .Range("n48").Value, .Range("p48").Value)
         Wb.Range("C3:G" & Wb.Cells(Rows.Count, 3).End(xlUp).Row).Sort Wb.Range("C3")
       elseif msg = vbno then
         Set f = Wb.Columns(3).Find(ComboBox28.Value, , , 1)
         If Not f Is Nothing Then Wb.Rows(f.Row).Delete
       End If
      .Parent.Close 0
    end with
  End If
  unload me
End Sub
 
Laatst bewerkt:
Beste HSV

hierbij een kleinstukje overzicht.
het werkt nog niet echt.
Bedankt alvast.
 

Bijlagen

  • offerte sjabloon 1.4.xlsm
    27,6 KB · Weergaven: 44
Ik dacht dat het een userform was (maakt niet uit).
De combobox is leeg in het bestand.
Waarmee wordt het gevuld?

Ps. plaats ook het ander bestand.
 
Laatst bewerkt:
Met alles in hetzelfde bestand. Is dit de bedoeling? Eigenlijk heb ik geen idee waarom je voor deze rare opzet kiest. Bij het aanmaken van een nieuw artikel wordt er met de formules toch gezocht in de 'database' en krijg is dus fouten. Ga je deze waarden in typen dan ben je de formules kwijt en werkt een volgende zoekopdracht dus niet meer. Waarom begin je niet in A1 en waarom is rij twee leeg? In mijn ogen een totale puinhoop.
 

Bijlagen

  • offerte sjabloon 1.4.xlsb
    30,5 KB · Weergaven: 51
Laatst bewerkt:
U hebt volkomen gelijk het is een niet zo slimme opzet.
Het komt omdat ik zelf tekens iets nieuws ontdekte en dat weer aan paste.
maar dit is perfect zo.
de InvoerSheet blijft altijd een sjabloon en maakt een nieuw offerte bestand aan met de gegevens zoals ik ze als laatste hebt ingevoerd en slaat dat onder een bestandsnaam klant op.
dat dus de formule uit de Cell gaat is niet heel erg maar is soms wel eens lastig. ik heb er mee leren leven :)
ik ben zo blij als een kind dat dit nu zo werkt.
heel heel hartelijk dank!!!
 
Beste VenA
Heel hartelijk dank.
hier zet ik het code zoals deze bij mij het best werkt voor andere.
hierbij zet ik de vraag als opgelost.

Code:
Private Sub ComboBox28_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim f As Range, Wb As Worksheet, msg As Long
msg = MsgBox("Ja is toevoegen, Nee is Verwijderen?", vbCritical + vbYesNoCancel)
With Workbooks.Open("C:\Dropbox\documenten\Excel omschrijving.xlsm").Sheets("blad2")
  If msg = vbYes And ComboBox28.ListIndex = -1 Then
         .Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(, 5) = Array(ComboBox28.Value, Range("h48").Value, "", Range("n48").Value, Range("p48").Value)
         .Range("C3:G" & .Cells(Rows.Count, 3).End(xlUp).Row).Sort .Range("C3")
       ElseIf msg = vbNo Then
         Set f = .Columns(3).Find(ComboBox28.Value, , , 1)
         If Not f Is Nothing Then .Rows(f.Row).Delete
      End If
    .Parent.Close 0
End With
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan