Office: Werte in einem anderen Tabellenblatt per vba anzeigen HILFEE

Helfe beim Thema Werte in einem anderen Tabellenblatt per vba anzeigen HILFEE in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Liebe Office-hilfe forum mitglieder...ich habe ein problem..ich komme mit meinem code nicht voran:(( oder irgendwie funktioniert das nicht. ich... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von DemiE, 20. Oktober 2010.

  1. DemiE User

    Werte in einem anderen Tabellenblatt per vba anzeigen HILFEE


    Hallo Liebe Office-hilfe forum mitglieder...ich habe ein problem..ich komme mit meinem code nicht voranWerte in einem anderen Tabellenblatt per vba anzeigen HILFEE :(( oder irgendwie funktioniert das nicht. ich hoffe ihr könnt mir dabei helfen. Folgendes:

    ich habe einen tabellenblatt mit einem commandbutton, wenn ich drauf klicke wird im nächsten tabellenblatt von einer datenbank werte für die jeweilige eingegebene kalenderwoche ausgelesen (Reiter1). es gibt ettliche Typen und Teile mit mengen und prozentzahlen..für mich spielt hier nur die mengen und prozentzahlen eine rolle...ich habe nämlich ein weiteres tabellenblatt mit Typen und Teilen aufgelistet jedoch unsortiert. und ich habe z.b. eine kalenderwoche in dem alle werte für die teile und unterteile anpassend angezeigt werden soll..

    ich habe alles gemacht, jedoch ist mein problem dass die Menge nicht richtig angezeigt wird...es kommt immer als prozent raus=(((

    hier sind 2 bilder meiner Datei:


    Werte in einem anderen Tabellenblatt per vba anzeigen HILFEE [​IMG]

    Werte in einem anderen Tabellenblatt per vba anzeigen HILFEE [​IMG]


    --------------------------------------------------------

    hier ist der code:

    Sub Anzeigen(wo As Integer)

    Dim varSpalte1
    Dim vVergleich As String
    Dim EndeSpalteS2 As String
    Dim EndeSpalteS1 As String
    Dim EndeZeileS1 As String
    Dim EndeZeileS2 As String
    Dim FreieZelle As String
    Dim w, i, k, l, p, q As Integer
    Dim Teile As String
    Dim Abgmenge As String
    Dim szTyp3Tab3, szZhltTab3, szAbg_MengeTab3, szZhltTab32 As String 'sz - String
    Dim szTyp3Tab1, szZhltTab1, szAbg_MengeTab1, szZhltTab12 As String 'sz - String
    Dim nProABC(), nCounterTreffer As Integer ' nCounterAusb
    Dim nMengeABC() As Long 'nCounterMenge
    Dim nFoundAbg As Boolean
    Dim nSpaceCounter As Integer 'n = Integer
    Dim Zaehler, Nenner, Startmenge As Integer
    Dim gesamtmenge, gesamtprozent As Integer


    'Suche Spalte mit richtiger KW und speichere Position in "varSpalte1"
    For w = 1 To 50
    If (Mid(Tabelle3.Cells(1, w), 4) = wo) Then
    'MsgBox "Spalte gefunden" & Mid(Tabelle2.Cells(1, w), 4)
    varSpalte1 = w
    End If
    Next w



    k = 3 'Da keine For-Schleife verwendet wird, muss Anfangsbedingung vorher definiert werden
    Do Until Tabelle3.Cells(k, 1).Value = "Ende" 'Fuere Schleife aus, solange Zelleninhalt != "Ende"
    If Tabelle3.Cells(k, 1).Value <> "" Then 'Fuere Schleife aus, solange von Tab3 Spalte-Level-Typ-3 Zelleninhalt != ""
    If Tabelle3.Cells(k, 1).Value = "Ende" Then
    Tabelle3.Cells(k, varSpalte1).Value = ""
    End If
    szTyp3Tab3 = Tabelle3.Cells(k, 1) 'Tab3-Typ3 in Vergleichsvariable speichern
    szZhltTab3 = Mid(Tabelle3.Cells(k, 2), 1, 8) 'Mid Tab3-Zhlt in Vergleichsvariable speichern
    szZhltTab32 = Tabelle3.Cells(k, 2) ''Tab3-Zhlt in Vergleichsvariable speichern
    If (InStr(szZhltTab32, "-> abg_menge") = 0) Then ' Abgangsmenge wird nicht angezeigt, falls nicht vorhanden
    Tabelle3.Cells(k, varSpalte1).Value = "100%" 'Definierter Anfangswert der prozent#
    nFoundAbg = False
    Else
    Tabelle3.Cells(k, varSpalte1).Value = 0
    nFoundAbg = True
    End If

    'Tab3-Zhlst-Inhalt darf nicht "" oder "Totals" sein
    If (szZhltTab3 <> "") And (szZhltTab3 <> "Totals") Then
    l = 5 'Da keine For-Schleife, Anfangsbed. extra
    nSpaceCounter = 0
    nCounterTreffer = 0 'nCounterAusb
    'nCounterMenge = 0
    Do While nSpaceCounter <= 5 And l <= 65536 'Abbruchbedingung: Tab1 Spalte Level3-Typ darf max. 6 leere Zellen hintereinander haben UND Es darf die max. Zeilenlaenge von Excel-Tabellen nicht ueberschritten werden
    szTyp3Tab1 = Tabelle1.Cells(l, 1).Value 'Tab1-Typ3 in Vergleichsvariable speichern
    szZhltTab1 = Mid(Tabelle1.Cells(l, 2), 1, 8) 'Tab1-Zhlt in Vergleichsvariable speichern
    szZhltTab12 = Tabelle1.Cells(l, 2) ''Tab1-Zhlt in Vergleichsvariable speichern

    If (szTyp3Tab3 = szTyp3Tab1) Then 'Vergleiche ob Typ3
    If (szZhltTab32 = szZhltTab12) And (nFoundAbg = False) Then 'Zhlst von Tab3 und Tab1 gleich sind
    nCounterTreffer = nCounterTreffer + 1
    ReDim Preserve nProABC(nCounterTreffer)
    ReDim Preserve nMengeABC(nCounterTreffer) ' Erzeugung eines Arrays mit einer Größe des Zählers
    nProABC(nCounterTreffer) = Tabelle1.Cells(l, 4).Value 'Arraywerte = prozentwerte
    nMengeABC(nCounterTreffer) = Tabelle1.Cells(l, 3).Value 'Arraywerte = Mengenwerte
    ElseIf (szZhltTab3 = szZhltTab1) And (nFoundAbg = False) Then
    nCounterTreffer = nCounterTreffer + 1
    ReDim Preserve nProABC(nCounterTreffer) 'Erzeugung eines prozent-Arrays mit einer Größe des Zählers
    ReDim Preserve nMengeABC(nCounterTreffer) 'Erzeugung eines Mengen-Arrays
    nProABC(nCounterTreffer) = Tabelle1.Cells(l, 4).Value
    nMengeABC(nCounterTreffer) = Tabelle1.Cells(l, 3).Value
    ElseIf (szZhltTab3 = szZhltTab1) And (nFoundAbg = True) Then
    nCounterTreffer = nCounterTreffer + 1
    ReDim Preserve nProABC(nCounterTreffer)
    ReDim Preserve nMengeABC(nCounterTreffer)
    nProABC(nCounterTreffer) = Tabelle1.Cells(l, 4).Value
    nMengeABC(nCounterTreffer) = Tabelle1.Cells(l, 3).Value
    End If
    ElseIf (szTyp3Tab3 <szTyp3Tab1> 0) Then
    If (nCounterTreffer = 1) Then
    'k = Zaehlvariable fuer Tab3
    'l = Zaehlvariable fuer Tab1
    Tabelle3.Cells(k, varSpalte1).Value = CStr(nProABC(1)) & "%"
    'Tabelle3.Cells(k, varSpalte1).Value = nMengeABC(1)
    nSpaceCounter = 10 'Abbruchbed. fuer Schleife
    ReDim Preserve nProABC(0)
    ReDim Preserve nMengeABC(0)
    ElseIf (nCounterTreffer > 1) Then
    'berechne
    Zaehler = 0
    Nenner = 0

    For i = 1 To nCounterTreffer
    Zaehler = Zaehler + nMengeABC(i)
    'If nProABC(i) = 0 Then
    'Startmenge = 0
    'Else
    Startmenge = (nMengeABC(i) / nProABC(i))
    Nenner = Nenner + Startmenge
    'End If
    Next i

    'If Nenner = 0 Then
    'gesamtprozent = 0
    'Else
    gesamtprozent = (Zaehler / Nenner)
    gesamtmenge = Zaehler
    'End If
    Tabelle3.Cells(k, varSpalte1).Value = gesamtmenge
    Tabelle3.Cells(l, varSpalte1).Value = gesamtprozent

    nCounterTreffer = nCounterTreffer
    nSpaceCounter = 10 'Abbruchbed. fuer Schleife
    ReDim Preserve nProABC(0)
    ReDim Preserve nMengeABC(0)
    ' ElseIf (nCounterAusb = 1) Then
    ' 'k = Zaehlvariable fuer Tab3
    ' 'l = Zaehlvariable fuer Tab1
    ' Tabelle3.Cells(k, varSpalte1).Value = CStr(nProABC(1)) & "%" 'Speichere prozent von Tab1 in Tab3
    ' nSpaceCounter = 10 'Abbruchbed. fuer Schleife
    ' ReDim Preserve nProABC(0)
    ' ElseIf (nCounterAusb > 1) Then
    ' 'berechne
    '
    ' Zaehler = 0
    ' Nenner = 0
    '
    ' For i = 1 To nCounterMenge
    ' Zaehler = Zaehler + nMengeABC(i)
    ' Startmenge = (nMengeABC(i) / nProABC(i))
    ' Nenner = Nenner + Startmenge
    ' Next i
    '
    ' gesamtprozent = (Zaehler / Nenner)
    ' gesamtmenge = Zaehler
    '
    ' Tabelle3.Cells(k, varSpalte1).Value = gesamtmenge
    ' Tabelle3.Cells(l, varSpalte1).Value = gesamtprozent
    '
    ' nCounterAusb = nCounterAusb
    ' nSpaceCounter = 10 'Abbruchbed. fuer Schleife
    ' ReDim Preserve nProABC(0)
    End If
    ElseIf szTyp3Tab1 = "" Then
    nSpaceCounter = nSpaceCounter + 1 'Zaehle leere Zellen, fuer Abbruchbed.
    End If 'Level3-Typ und Zhlst der Tab1 und Tab3 vergleichen
    l = l + 1 'Da keine For-Schleife, muss Zaehlvariable extra erhoeht werden
    Loop 'Durchlauf, solange Tabelle1 Spalte Level3-Typ nicht leer
    End If 'Abfrage auf szZhlstTab3 <> "" AND szZhlstTab3 <> "Totals"
    End If 'Abfrage auf Inhalt Tab3 Spalte level3-Typ Zeile 1 = ""
    k = k + 1 'Da keine For-Schleife, muss Zaehlvariable extra erhoeht werden
    Loop 'Durchlaufe bis Inhalt Tab3-Zelle != Ende

    End Sub

    --------------------------------------

    ich würde mich freuen wenn ihr mir weiterhelfen könnten, wäre echt dankbar=)))
     
  2. Exl121150 Erfahrener User
    Hallo,

    das, was mir sofort aufgefallen ist, dass Du den Tücken der VBA-Deklaration erlegen bist - Du hast wahrscheinlich bisher formal mächtigere Programmiersprachen verwendet als VBA:

    Folgende Deklarationen definieren mit großer Wahrscheinlichkeit einen anderen Datentyp als den von Dir gewollten:
    Dim szTyp3Tab3, szZhltTab3, szAbg_MengeTab3, szZhltTab32 As String 'sz - String
    Dim szTyp3Tab1, szZhltTab1, szAbg_MengeTab1, szZhltTab12 As String 'sz - String
    ....
    Dim Zaehler, Nenner, Startmenge As Integer
    Dim gesamtmenge, gesamtprozent As Integer

    Bei den vorgenannten 9 rot geschriebenen Variablen wurde kein Datentyp explizit festgelegt, sodass eine implizite Typvereinbarung stattfindet - was wahrscheinlich VARIANT sein wird.
    Korrekte Typisierung in VBA:
    Dim szTyp3Tab3 as String, szZhltTab3 as String, szAbg_MengeTab3 as String, szZhltTab32 As String 'sz - String
    Dim szTyp3Tab1 as String, szZhltTab1 as String, szAbg_MengeTab1 as String, szZhltTab12 As String 'sz - String
    ....
    Dim Zaehler As Integer, Nenner As Integer, Startmenge As Integer
    Dim gesamtmenge as Integer, gesamtprozent As Integer

    wobei der Datentyp Integer einen Wertbereich -32768 bis +32767 besitzt (2-Byte Größe), ansonsten müsste der Datentyp Long verwendet werden (4-Byte Größe).
    Oder aber Du verwendest die Typenkurzkennzeichen: $ für String, % für Integer, & für Long, ! für Single, # für Double, @ für Currency:
    Dim szTyp3Tab3$, szZhltTab3$, szAbg_MengeTab3$, szZhltTab32$ 'sz - String
    Dim szTyp3Tab1$, szZhltTab1$, szAbg_MengeTab1$, szZhltTab12$ 'sz - String
    ....
    Dim Zaehler%, Nenner%, Startmenge%
    Dim gesamtmenge%, gesamtprozent%

    Für Byte und Variant gibt es kein Typenkurzkennzeichen.

    Den restlichen Code habe ich noch nicht analysiert, aber vielleicht ist eh bereits mit der Umtypisierung das Problem behoben.

    EDIT:
    Gleiches wie vorhin gilt natürlich auch für:
    Dim w, i, k, l, p, q As Integer
    Korrekte Deklaration:
    Dim w%, i%, k%, l%, p%, q%
     
    Exl121150, 21. Oktober 2010
    #2
  3. DemiE User
    Nein nein, es ist schon richtig wie ich es definiert habe...mein Problem liegt nur darin, dass die Zeile mit...->abg_menge nicht richtig angezeigt wird.
     
  4. Exl121150 Erfahrener User

    Werte in einem anderen Tabellenblatt per vba anzeigen HILFEE

    Hallo,

    aufgefallen ist mir bei etwas genauerer Durchsicht des Codes folgende Zeile:
    Code:
              ElseIf (szTyp3Tab3 < szTyp3Tab1 > 0) Then
    Diese IF-Bedingung kann nie TRUE werden, zumindest nicht unter VBA:
    Ergibt der Stringvergleich von szTyp3Tab3<szTyp3Tab1 den boolean-Wert TRUE, so muss er, wenn er mit dem folgenden num. 0 verglichen werden soll, in einen num. Wert umgewandelt werden, was den num.Wert -1 ergibt.
    Ist der Stringvergleich FALSE, ergibt das als num.Wert 0.
    Sowohl -1 als auch 0 sind stets <=0 und nicht >0, was somit stets FALSE ergibt.
     
    Exl121150, 21. Oktober 2010
    #4
Thema:

Werte in einem anderen Tabellenblatt per vba anzeigen HILFEE

Die Seite wird geladen...
  1. Werte in einem anderen Tabellenblatt per vba anzeigen HILFEE - Similar Threads - Werte Tabellenblatt vba

  2. wenn Spalte Wert dann kopiere aus anderem Tabellenblatt wert

    in Microsoft Excel Hilfe
    wenn Spalte Wert dann kopiere aus anderem Tabellenblatt wert: Hallo zusammen, ich hoffe ihr könnt mir helfen. ich habe leider nicht so viel Ahnung und mein Problem ist eher so ein nice to have. Also ich habe 3 Tabellenblätter 1: ein Blatt in welches ich...
  3. Referenzwert in einem anderen Tabellenblatt suchen

    in Microsoft Excel Hilfe
    Referenzwert in einem anderen Tabellenblatt suchen: [ATTACH] Ich brauche den Referenzwert aus der Tabelle 2. Das Alter ist hier massgebend. Es soll mir jeweils, wenn das Alter abgeändert wird, den richtigen Referenzwert angeben. Geht das überhaupt...
  4. Zeilen aus Tabelle mit bestimmten Wert in verschiedene Tabellenblätter sortieren

    in Microsoft Excel Hilfe
    Zeilen aus Tabelle mit bestimmten Wert in verschiedene Tabellenblätter sortieren: Hallo, ich bekomme es einfach nicht hin und benötige bitte eure Hilfe. Ich habe eine Tabelle, in dieser sind alle Daten enthalten. Nun möchte ich aus dieser Tabelle Zeilen, die in der Spalte H...
  5. VBA Werte aus Tabellenblätter kopieren WENN

    in Microsoft Excel Hilfe
    VBA Werte aus Tabellenblätter kopieren WENN: Hallo zusammen, Meine Ausgangssituation: Verschiedene Registerkarten mit Materiallisten, je nach System. Ganz vorne eine Übersichtsregisterkarte, in welcher die Systeme und Anzahl ausgesucht...
  6. Werte der letzten Zelle einer Spalte in mehreren Tabellenblättern ermitteln

    in Microsoft Excel Hilfe
    Werte der letzten Zelle einer Spalte in mehreren Tabellenblättern ermitteln: Hallihalllo, Ich sitze gerade an meine Bachelorarbeit und muss mittels VBA ein Auswertungsprogramm für erhobene Daten erarbeiten. Ich suche schon ewig im Internet nach dem passenden Code und...
  7. Mit VBA zwei Werte vergleichen aus verschiedenen Tabellenblätter

    in Microsoft Excel Hilfe
    Mit VBA zwei Werte vergleichen aus verschiedenen Tabellenblätter: Hallo zusammen, ich arbeite auf Grundlagenniveau und mein Makro soll Folgendes: Tabellenblatt 1: In Spalte B sind 5-stellige Werte Tabellenblatt 2: In Spalte C sind die gleichen 5-stelligen...
  8. [VBA] werte auslesen und in neues Tabellenblatt kopieren

    in Microsoft Excel Hilfe
    [VBA] werte auslesen und in neues Tabellenblatt kopieren: Hallo an alle, ich bin neu hier und auch noch ein ziemlicher Anfänger, wenn es um das Thema VBA geht. Ich hoffe, dass mir hier jemand bei meinem Problem helfen kann. Dafür habe ich auch die...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden