Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Synchronisierung/ Zellbereich mappenübergreifend k

Betrifft: Synchronisierung/ Zellbereich mappenübergreifend k von: PaulJen
Geschrieben am: 13.10.2014 10:15:59

Hallo Office-Forum Community!

Nach langem Probieren und Ärgern hoffe ich hier im Forum die Lösung für mein Excel-VBA Problem zu finden

Projekt:
Bei dem Projekt handelt es sich um eine Art Beobachtungsbuch/Logbuch. Es ermöglicht per Eingabemasken und Makros die Eingabe von Kommentaren/Beobachtungsinfos. Ein Kommentar entspricht hierbei einer Zeile innerhalb 23 Spalten. Somit werden Kommentare zeilenweise unter einem Übersichtskopf (12 Zeilen)eingetragen.
Die Kommentare werden jeweils für eine Messstelle eingetragen. Jedes Arbeitsblatt von Excel entspricht einer Messstelle.
Desweiteren arbeite ich momentan daran zwei Beobachtungsbücher zu synchronisieren.
Beobachtungsbücher sind in diesem Projekt zwingend gleich strukturiert. Ich habe in allen Arbeitsmappen die Möglichkeit Messstellen (also Arbeitsblätter) anzulegen und Kommentare einzutragen.
Somit habe ich eine Ausgangslage von mehreren Bearbeitern mit ihren jeweiligen Beobachtungsbüchern, wobei die Beobachtungsbücher im Ursprung Kopien sind.

Was funktioniert:
Unter meinem Makro "Kommentare importieren" funtioniert die Synchrinisierung der Messstellen/Blätter.
Nach einer Abfrage wird das "eigene" Beobachtungsbuch zum Master und das asugewählte zur Quelle (das kann jedes der Beobachtungsbücher).
In einer Schleife wird versucht die Blätter mit den Namen aus Master in der Quelldatei zu öffnen. Bei einem Fehler wird das entsprechende Blatt aus der Quelle in den Master kopiert (!).
Im nächsten Schritt werden die Blätternamen der Quelle im Import-Dialog des Masters in einer Listbox mit Checkboxen gesammelt.
Mit einer Schleife wird die Listbox durchgegangen und für jede Messstelle, deren Haken aktiviert ist, sollen die Kommentare kopiert werden.

Das soll nach folgendem Schema ablaufen:
Es wird die erste mit Haken versehene Messstelle aufgerufen, dann alle (!) Kommentare also A12-Vxx kopiert werden und im Master im passenden Blatt unten angefügt werden.
(Funktioniert gut mit : quellemptyrow = Sheets(wks_mst).Range("B" & Rows.Count).End(xlUp).Row '+ 1 )

Was jetzt nur bedingt funktioniert:
Der eigentliche Kopiervorgang hinkt bzw. klappt nicht.



Code:


Public Sub but_impstart_Click()

Call but_übernehmen_Click

If checkbox_sicherimp = True Then
Call sicherung_aktiv
End If


Dim masterdateipfad As String
Dim quelldateipfad As String
Dim masterdateiname As String
Dim quelldateiname As String
masterdateipfad = thisworkbook.FullName
masterdateiname = thisworkbook.Name

quelldateiname = label_beobachtungsbuch.Caption
quelldateipfad = label_quellpfad.Caption

Dim i As Integer

For i = 0 To Me.listbox_komimp.ListCount - 1


If listbox_komimp.Selected(i) = True Then


Dim imparray As Variant
Dim quellemptyrow As Long
Dim masteremptyrow As Long
Dim imprange_row As Long
Dim wks_mst As String
wks_mst = listbox_komimp.List(i)

MsgBox wks_mst & " name in listbox"

Workbooks.Open (quelldateipfad)

quellemptyrow = Sheets(wks_mst).Range("B" & Rows.Count).End(xlUp).Row '+ 1
masteremptyrow = Workbooks(masterdateiname).Sheets(wks_mst).Range("B" & Rows.Count).End(xlUp).Row ' + 1

imprange_row = masteremptyrow + quellemptyrow - 13

Set imparray = Workbooks(quelldateiname).Sheets(wks_mst).Range(Cells(12, 1), Cells(quellemptyrow, 23)).Value 'FEHLER!!!! 1004
''' Workbooks(quelldateiname).Sheets(wks_mst).Range(Cells(12, 1), Cells(quellemptyrow, 23)).Copy

Workbooks(masterdateiname).Sheets(wks_mst).Unprotect Password:=""
Workbooks(masterdateiname).Sheets(wks_mst).Range(Cells(imprange_row, 1), Cells(masteremptyrow, 23)).Value = imparray
'''Workbooks(masterdateiname).Sheets(wks_mst).Range(Cells(imprange_row, 1), Cells(masteremptyrow, 23)).Paste
Workbooks(masterdateiname).Sheets(wks_mst).Protect Password:=""
Workbooks(quelldateiname).Close savechanges:=True

Range("A12:A2000").NumberFormat = "m/d/yyyy"
Range("B12:F2000").NumberFormat = "h:mm;@"
Range("G12:G2000").NumberFormat = "0"
Range("H12:H2000").NumberFormat = "@"
Range("I12:I2000").NumberFormat = "0"
Range("J12:R2000").NumberFormat = "0.0"
Range("S12:W2000").NumberFormat = "@"

End If

Next i

Fehlt mir eine Deklarierung? Geh ich mit dem Array falsch um? Flüchtigkeitsfehler? Unterstützt das Excel nicht richtig?

Was mich viel mehr stört ist, dass es mit der Copy/Paste Variante nach Gutdünken funktioniert.

OS: Win7 Enterprise (64-Bit)
Excel: 2010 Version: 14.0.6023.1000 (32-Bit)
8Gb Ram

Mit freundlichen Grüßen

Paul

  

Betrifft: AW: Synchronisierung/ Zellbereich mappenübergreifend k von: yummi
Geschrieben am: 13.10.2014 11:01:55

Hallo Paul,

wenn dein Copy nur teilweise funktioniert, dann liegt dass daran, dass du nicht vollständig referenzierst. Wenn du z.B. nur mit Range arbeitest, daann gilt das für das gerade aktive Sheet, was nicht unbedingt dass ein muss, was du willst.

deklariere dir Variablen für die worksheets in denen du arbeiten willst (Quelle und Ziel) und referenziere jedesmal ausgehend vom sheet.

Gruß
yummi


 

Beiträge aus den Excel-Beispielen zum Thema "Synchronisierung/ Zellbereich mappenübergreifend k"