Office: VBA: variabler Zellbezug in anderes Arbeitsblatt

Helfe beim Thema VBA: variabler Zellbezug in anderes Arbeitsblatt in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich hänge an einem kleinen Problem, und zwar möchte ich auf eine variable Zelle in einem anderen Arbeitsblatt mittels Makro zugreifen.... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von woerli, 13. Oktober 2010.

  1. woerli Erfahrener User

    VBA: variabler Zellbezug in anderes Arbeitsblatt


    Hallo,

    ich hänge an einem kleinen Problem, und zwar möchte ich auf eine variable Zelle in einem anderen Arbeitsblatt mittels Makro zugreifen.

    Private Sub Wert()
    Dim zeile!
    zeile = 4
    Cells(zeile, 1) = "=PKliste!R1C16"
    End Sub

    Anstelle von "r1" in der 4. Zeile des Beispiels müsste nun irgendwie die Variable "zeile" eingesetzt werden, analog zum Beginn der Zeile. Eckige Klammer funktionieren nicht.
    Wie muss der Ausdruck richtig lauten?
     
  2. schatzi Super-Moderator
    Hallo!

    Cells(zeile, 1) = Sheets("PKliste").Cells(zeile, 16)
     
    schatzi, 13. Oktober 2010
    #2
  3. woerli Erfahrener User
    Vielen Dank!

    Und angenommen ich möchte dort einen Mittelwert ermitteln und muss eine variable "Range" angeben?

    Cells(zeile, 5) = MITTELWERT(Sheets("PKliste").Range("O'zeile':O'zeile+x'")

    Der Wert 'Zeile+x' kann eine extra-Variable sein.
    Wie unterteile ich das dann in Variable Zeilen (Spalten)?
     
  4. schatzi Super-Moderator

    VBA: variabler Zellbezug in anderes Arbeitsblatt

    Hallo!

    Um den Wert einzutragen:
    Code:
    With Sheets("PKliste")
    Cells(zeile, 5) = Application.WorksheetFunction.Average(.Range(.Cells(zeile, 15), .Cells(zeile + x, 15)))
    End With
    
    Um die Formel einzutragen:
    Code:
    Cells(zeile, 5).FormulaLocal = "=MITTELWERT(PKliste!O" & zeile & ":O" & zeile + x & ")"
     
    schatzi, 13. Oktober 2010
    #4
  5. woerli Erfahrener User
    So richtig will es leider noch nicht funktionieren. Ich poste mal was ich bisher habe. Es soll ein Mittelwert aus Daten eines anderen Arbeitsplatzes errechnet werden. Diese Daten stehen in einer Tabelle in aufeinanderfolgenden Zeilen, der Umfang der Zeilen muss aber erst über einen "schluessel" bestimmt werden.

    Private Sub CommandButton1_Click()
    Zeile4
    End Sub

    Sub Zeile4()
    Dim zeile!
    zeile = 4
    Kraft
    End Sub

    Private Sub Kraft()
    Dim schluessel As String
    schluessel = Cells(zeile, 15)
    Dim zaehler!, z!
    ' Wert für die Kraft: K (Beispiel: 1345,34), wird an dieser Stelle aber noch nicht benötigt, weil die Formel in die Zelle geschrieben wird
    Dim K As Currency

    zaehler = 0
    z = zeile

    ' Matrixbereich (also Zeilenanzahl) bestimmen für den Mittelwert

    If Sheets("PKliste").Cells(z, 15) = schluessel Then
    zaehler = zaehler + 1
    z = zeile + zaehler
    End If

    ' Kraft als Mittelwert bestimmen
    Cells(zeile, 5).FormulaLocal = "=MITTELWERT(PKliste!O" & zeile & ":O" & z & ")"

    End Sub

    Ein Fehler scheint in der ersten Zeile der If-Anweisung zu stehen. Da springt der Debugger hin, nachdem er einen Fehler "1004" meldet.

    ".Value" ans Ende der Cell-Anweisungen zu setzen brachte auch keinen Erfolg.
     
  6. schatzi Super-Moderator
    Hallo!

    Dazu müsste man wissen, was in O4 und in PKliste!O4 steht...
    Macht es Sinn, "schluessel" als String zu deklarieren?
     
    schatzi, 13. Oktober 2010
    #6
  7. woerli Erfahrener User
    Da steht ein "VERKETTEN"-Befehl, welcher in etwa sowas in die Zelle schreibt: "02_09A_01_w00Zv S ASTM D 3518nein"

    Aber selbst wenn ich als Schlüssel einfach nur "nein" in den Code eintrage funktioniert es nicht.
     
  8. schatzi Super-Moderator

    VBA: variabler Zellbezug in anderes Arbeitsblatt

    Hallo!

    "zeile" geht verloren, weil sie nur in "Sub Zeile4" deklariert ist!
    Deklariere sie als "Public" außerhalb der Prozeduren und es sollte funktionieren.
     
    schatzi, 13. Oktober 2010
    #8
  9. woerli Erfahrener User
    ah..okay.

    Die Zeile
    schluessel = Cells(zeile, 15)
    produziert noch immer einen Fehler.
    Das ist jene mit dem Verketten-Befehl.

    Ersetze ich Cells... mit "nein" taucht der Fehler in der IF-Anweisung auf.
    Schreibe ich dort nur If "nein" = schluessel Then
    erscheint ein Fehler in den von dir zuvor geposteten Formeln (bei beiden Varianten).

    EDIT:
    Jetzt geht esplötzlich, in der Zielzelle steht aber "o,oo €".
    Formatierungauf Zahl geändert..aber der Wert bleibt "0".
     
  10. schatzi Super-Moderator
    Hallo!

    Public zeile&

    Private Sub CommandButton1_Click()
    Zeile4
    End Sub

    Sub Zeile4()
    'Dim zeile! 'kann und muss hier weg!
    zeile = 4
    Kraft
    End Sub

    Private Sub Kraft()
    Dim schluessel As String
    schluessel = Cells(zeile, 15)
    Dim zaehler!, z!
    ' Wert für die Kraft: K (Beispiel: 1345,34), wird an dieser Stelle aber noch nicht benötigt, weil die Formel in die Zelle geschrieben wird
    Dim K As Currency

    zaehler = 0
    z = zeile

    ' Matrixbereich (also Zeilenanzahl) bestimmen für den Mittelwert

    If Sheets("PKliste").Cells(z, 15) = schluessel Then
    zaehler = zaehler + 1
    z = zeile + zaehler
    End If

    ' Kraft als Mittelwert bestimmen
    Cells(zeile, 5).FormulaLocal = "=MITTELWERT(PKliste!O" & zeile & ":O" & z & ")"

    End Sub
     
  11. woerli Erfahrener User
    Danke soweit erstmal, die zweite Deklaration hatte ich gelöscht.
    Warum ein & statt ein ! nach der Variablendeklaration?


    Jetzt steckt nur noch ein Fehler drin den sogar ich gemerkt hab:
    Eine If-Anweisung ist ja keine Schleife..ich muss noch eine For-Schleife einbauen um meinen Bereich auszulesen. :roll:
     
  12. schatzi Super-Moderator
    Hallo!

    Mit ! deklarierst du als Single, mit & deklarierst du als Long.
    Long sind Ganzzahlen, Single sind Fließkommazahlen mit acht Stellen. Du brauchst aber nur Ganzzahlen, da keine Zeile irgendwelche Nachkommastellen besitzt.
     
  13. woerli Erfahrener User

    VBA: variabler Zellbezug in anderes Arbeitsblatt

    Ahh..danke.

    So, plötzlich gibt es nun wieder einen Fehler in der If-Anweisung (Fehler 1004):
    Code:
    If Sheets("PKliste").Cells(z, 16) = schluessel Then

    Hier jetzt mein gesamter Makro-Text:
    EDIT: Die Korrektur der fehlerhaften Zeile, die ich weiter unten beschrieben habe, ist hier jetzt schon eingearbeitet.

    Code:
    Dim zeile&
    
    Private Sub CommandButton1_Click()
    Zeile4
    End Sub
    
    Sub Zeile4()
    zeile = 4
    Bruchkraft
    End Sub
    
    Private Sub Bruchkraft()
    Dim schluessel As String
    schluessel = Cells(zeile, 14)
    
    Dim za&, ze&, z&
    Dim BK As Currency
    
    za = 4   'Anfang des Bereichs für den Mittelwert
    ze = 0   'Ende des Bereichs für den Mittelwert 
    z = za   'aktuell zu prüfende Zeile
    BK = 0  'Mittelwert
    
    ' Matrixbereich bestimmen
    Do
       If ze = 0 Then
         ' Anfangswert festlegen für den Mittelwertbereich
         If Sheets("PKliste").Cells(z, 16) = schluessel Then
          za = z
          ze = z
         End If
        Else
         ' Endwertwert festlegen für den Mittelwertbereich
         If Sheets("PKliste").Cells(z, 16) = schluessel Then
          ze = z
          Else
          z = 210      'Abbruch sobald der zusammenhängende Bereich für den Mittelwert ermittelt wurde
         End If
       End If
            z = z + 1
    Loop Until z > 210     'Bereich mit den gesamten Werten
    
    ' Bruchkraft als Mittelwert bestimmen
    Cells(zeile, 5).FormulaLocal = "=MITTELWERT(PKliste!J" & za & ":J" & ze & ")"
    
    End Sub
     
  14. schatzi Super-Moderator
    Hallo!

    Wenn in N4 dasselbe steht wie in PKliste!P3, läuft bei mir der Code fehlerfrei...

    Aber ich kenne deine Tabellen nicht, ich kenne deinen Aufbau nicht und ich kenne deine Daten nicht!
     
  15. woerli Erfahrener User
    Ich habe den Fehler gefunden,
    ich hatte den Code nochmals optimiert und gekürzt, jetzt stimmte die Zeile
    Code:
      z = z + i - 1 
    nicht mehr. Die Variable i ist nirgends definiert.

    Die Zeile ist jetzte ganz ans Ende der Do-Schleife gewandert und lautet nur
    Code:
      z = z + 1
    Mit dieser Änderung funktioniert es!

    Vielen lieben Dank! :) Es war wie immer toll und sehr produktiv hier mit dir!
     
Thema:

VBA: variabler Zellbezug in anderes Arbeitsblatt

Die Seite wird geladen...
  1. VBA: variabler Zellbezug in anderes Arbeitsblatt - Similar Threads - VBA variabler Zellbezug

  2. Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access

    in Microsoft Excel Hilfe
    Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access: Hallo zusammen *:)* in diesem Forum habe ich bereits zwei Beiträge gefunden, die in die Richtung meines Anliegens gehen - beides passt letzten Endes dann aber leider doch nicht auf meinen...
  3. VBA Code anpassen mit variablem Tabellen Ende

    in Microsoft Excel Hilfe
    VBA Code anpassen mit variablem Tabellen Ende: Hallo, im folgenden Code möchte ich gerne statt eines fest vorgegebenen Tabellen Ende ein variables einsetzen. Sub Verkettung() Dim i As Long For i = 2 To 15000 'Hier soll kein festes Ende...
  4. [VBA] Daten auf Grund von Variable auf anderes Tabellenblatt kopieren

    in Microsoft Excel Hilfe
    [VBA] Daten auf Grund von Variable auf anderes Tabellenblatt kopieren: Hallo zusammen, vorab großes Lob an das Forum, ich konnte schon einige Dinge sinnvoll für mich nutzen, meine VBA Skills beschränken sich sonst eher auf das Anpassen von aufgezeichneten Makros...
  5. VBA mit Variable suchen und datum setzen?

    in Microsoft Excel Hilfe
    VBA mit Variable suchen und datum setzen?: Hallo ich sitze vor folgendem Problem. in der Zelle C3 habe ich einen Wert der sich durch ein Makro ändert. Diese Zahl ist auch gleich der Spalte A 9 bis 70. Nun möchte ich ein Makro, dass mir...
  6. VBA Schleife kopieren und einfügen von Spalten

    in Microsoft Excel Hilfe
    VBA Schleife kopieren und einfügen von Spalten: Hallo Zusammen, Ich habe auf einem Tabellenblatt eine variable Anzahl an Spalten mit Daten die auch eine variable Anzahl an Zeilen haben, auch mit Lücken in den Zeilen. Die Spalten mit den Infos...
  7. VBA: Variable Anzahl Zeilen mit Suchkriterien finden und kopieren

    in Microsoft Excel Hilfe
    VBA: Variable Anzahl Zeilen mit Suchkriterien finden und kopieren: Hallo zusammen, ich konnte bislang nur bruchstückhafte Ansätze zu meinem Problem finden, jedoch keinen um mehrere Kriterien zu erfassen und anschließend zu ordnen, daher brauche ich (mal wieder)...
  8. Makro Problem nach Wörtern filtern und Zeilen löschen

    in Microsoft Excel Hilfe
    Makro Problem nach Wörtern filtern und Zeilen löschen: Hallo zusammen! Ich habe ein Makro, dass ich erweitern möchte. Dabei soll in den Daten in der ersten Zeile ein Filter aktiviert werden und alle Datenzeilen löschen, die in Spalte 10 eines von 4...
  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