Für Excel-Experten

Dieses Thema im Forum "Office-Programme" wurde erstellt von dany-sahne, 29. März 2002.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. dany-sahne

    dany-sahne ROM

    Registriert seit:
    29. Oktober 2001
    Beiträge:
    7
    Hallo,

    ich habe in Excel eine Tabelle erstellt, die inhaltlich ein Bestellformular für beliebige diverse Sachen enthält.
    Jetzt würde ich gerne wissen, was ich es machen kann, dass wenn verschiedene Positionen aus dieser Bestellliste ausgewählt werden (Die Mengen stehen in einer Zelle vor dem Artikel, der Artikel selbst steht in der Zelle dahinter), die ausgewählten Positionen automatisch in der ursprünglichen Reihenfolge in ein anderes Tabellenblatt in der gleichen Excel-Mappe übertragen werden.

    Vielen Dank für eure Hilfe.
    dany-sahne

    p.s. eine einfache verknüpfung zu den einzelnen zellen möchte ich nicht machen. nur die zellen, in denen eine menge steht, sollen automatisch übertragen werden.
    [Diese Nachricht wurde von dany-sahne am 29.03.2002 | 11:39 geändert.]
     
  2. ICa

    ICa Byte

    Registriert seit:
    16. April 2002
    Beiträge:
    14
    Ja, stimmt, deine Version ist effizienter. Hat mich aber auch nur 5 Minuten gekostet, und sollte mehr eine Anregung sein.

    cu, Ian
     
  3. excelerator

    excelerator Byte

    Registriert seit:
    13. Februar 2002
    Beiträge:
    32
    n bisschen lang, der Code. Nicht? Statt ständig Sheets("blablabla").cells(Zeile,Spalte) zu tippen empfiehlt sich die Arbeit mit Objekten. Die Offsets sind auch überflüssig.

    Hier die überarbeitete Version:
    Private Sub CommandButton1_Click()
    Dim BestellTabelle As Object, KatalogTabelle As Object, i As Long, j As Long, n As Long, StartZeile As Integer, AnzahlSpalte As Integer, ArtikelSpalte As Integer

    Set KatalogTabelle = Sheets("Tabelle1").Cells()
    Set BestellTabelle = Sheets("Tabelle2").Cells()
    n = Sheets("Tabelle1").UsedRange.Rows.Count

    StartZeile = 1
    AnzahlSpalte = 1
    ArtikelSpalte = 2

    \'Ab hier nichts mehr ändern!
    j = StartZeile
    For i = StartZeile To n
    If KatalogTabelle(i, AnzahlSpalte) <> 0 Then
    BestellTabelle(j, AnzahlSpalte) = KatalogTabelle(i, AnzahlSpalte)
    BestellTabelle(j, ArtikelSpalte) = KatalogTabelle(i, ArtikelSpalte)
    j = j + 1
    End If
    Next i
    End Sub
     
  4. ICa

    ICa Byte

    Registriert seit:
    16. April 2002
    Beiträge:
    14
    Hi, hier ist der Code dazu:
    1.) Symbolleiste "Steuerelement Toolbox" anzeigen
    2.) In der Katalogtabelle eine "Befehlsschaltfläche" einfügen
    3.) Auf die Schaltfläche (IM ENTWURFSMODUS) doppelklicken
    4.) Diesen Code Einfügen und die Tabellennamen und Spalten entsprechend anpassen:

    Private Sub CommandButton1_Click()
    Dim BestellTabelle As Worksheet, i As Long, j As Long, n As Long, StartZeile As Integer, AnzahlSpalte As Integer, ArtikelSpalte As Integer

    KatalogTabelle = "Tabelle1"
    StartZeile = 1
    AnzahlSpalte = 1
    ArtikelSpalte = 2

    BestellungTabelle = "Tabelle2"


    \'Ab hier nichts mehr ändern!

    n = Sheets(KatalogTabelle).UsedRange.Rows.Count

    For i = 0 To n - 1
    If Sheets(KatalogTabelle).Cells(StartZeile, AnzahlSpalte).Offset(i, 0) <> 0 Then
    Sheets(BestellungTabelle).Cells(StartZeile, AnzahlSpalte).Offset(j, 0) = Sheets(KatalogTabelle).Cells(StartZeile, AnzahlSpalte).Offset(i, 0)
    Sheets(BestellungTabelle).Cells(StartZeile, ArtikelSpalte).Offset(j, 0) = Sheets(KatalogTabelle).Cells(StartZeile, ArtikelSpalte).Offset(i, 0)
    j = j + 1
    End If
    Next i
    End Sub

    Das funktioniert.
     
  5. Geertakw

    Geertakw Kbyte

    Registriert seit:
    25. Februar 2001
    Beiträge:
    418
    ein MAkro verwenden\':

    Dialogfelder mit entsprechenden Elementen und einige Makros -
    man hat dann eine kleine Datenbankanwendung.

    Ich hab da vor einiger Zeit mal was angefangen - immer noch ein
    Rudiment mit wenig kompletten Funktionen.

    Bei Interesse ( als Beispiel - nicht als Lösung ) kann ich es zumailen. ( Anfrage an geert.jacob@gmx.de )

    Gruß Geert
     
  6. excelerator

    excelerator Byte

    Registriert seit:
    13. Februar 2002
    Beiträge:
    32
    Hallo,
    das geht aus meiner Sicht nur mit einem Makro und einem Button (wenn man es nicht "von Hand" aufrufen will), das die Übertragung startet.
    Gruß
    Udo
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen