Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Unterstützung Prüfen...

Unterstützung Prüfen...
31.01.2023 14:32:13
walter
Hallo Fachfrauen und Männer,
anbei mein Makro, welches ich vom Kollegen mal erhalten habe und auf mich zugeschnitten habe.
Jetzt habe ich noch ein kleines.... Problem, da ich ich nicht so tief in VBA drin bin.
Ich möchte, wenn die Anschrift kopiert werden soll, das nach der Nummer (K11) aus der zu kopierenden Tabelle,
in der Spalte B in der zu kopierenden Datei/Tabelle, geprüft wird.
Wenn die Nummer vorhanden ist, wenn ja überschreiben, sonst einfach unten anfügen (das klappt ja).
Public Sub Namen_in_Lager_Gesamt_kopieren()
  Dim wksQUELLE As Worksheet            'Quell-Worksheet
  Dim wksZIEL As Worksheet                  'Ziel-Worksheet
  Dim wkbZIEL As Workbook, wkbQUELLE As Workbook
  Dim rngZIEL As Range
  Dim strSUCH As String
  
  Const cstr_wkbQUELLE As String = "Lager_Gesamt.xlsm"
  Const cstr_wksQUELLE As String = "Lager_1"
  Const getStrPassWort = "tk"
  
  Set wkbQUELLE = ActiveWorkbook
  Set wksQUELLE = ActiveSheet
    
  On Error Resume Next
  Set wkbZIEL = Workbooks(cstr_wkbQUELLE)
  On Error GoTo 0
  If wkbZIEL Is Nothing Then
    Set wkbZIEL = Workbooks.Open("D:\" & cstr_wkbQUELLE)
  End If
  'Worksheet-Variable setzen
  Set wksZIEL = wkbZIEL.Worksheets(cstr_wksQUELLE)
  '""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    Dim lFile
    Dim lloRow As Long, ldtRgDate As Date, lstrRgNr As String, lboOK As Boolean, lloRNext As Long
    Dim wks, shs, pshDB
    
    Application.EnableEvents = False
    Application.ScreenUpdating = False
             
 wkbZIEL.Activate
 
 wkbQUELLE.Activate
  
  'Suchergebnis prüfen: strSUCH nicht gefunden: Am Ende Anfügen
  If rngZIEL Is Nothing Then
    Set rngZIEL = wksZIEL.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)   'Offset(1, 0  = 1 zeile drunter
  End If
  
  ' jetzt übertragen
  wksZIEL.Unprotect "tk"                 '(getStrPassWort)
  wksQUELLE.Range("K11:K21").Copy
   rngZIEL.Offset(0, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
  wksZIEL.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=getStrPassWort
  Application.CutCopyMode = False
  wkbQUELLE.Activate        'Datei
  wksQUELLE.Activate        'Sheet
  wksQUELLE.Range("K12").Select
    Application.EnableEvents = False
    Application.ScreenUpdating = False
End Sub
Ich würde mich freuen, wenn ich hier eine Hilfe erhalten würde,
danke im Voraus
mfg
walter b

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unterstützung Prüfen...
31.01.2023 15:01:17
GerdL
Hallo Walter,
der strSUCH wird offenbar nicht mehr ermittelt.
Dim X As Variant

X = Application.Match(wksQuelle.Range("K11").Value, wksZiel.Columns(2), 0))
If IsError(X) Then
Set rngZIEL = wksZiel.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) 'Offset(1, 0 = 1 zeile drunter
Else
Set rngZIEL = wksZiel.Cells(X, 2) 'Zeile wenn K11 schon vorhanden
End If
Gruß Gerd
Jo aber
31.01.2023 18:14:33
walter
Guten Abend Gerd,
danke, die Übertragung ist i.o. auch wenn schon vorhanden ist, wird überschrieben.
Das einzige, die Formatierung der Zeile sollte in Arial Schrift 11 sein.
Leider wird immer was anderes dargestellt.
Weßi nicht wie ich es einbinden soll !
mfg walter b
Anzeige
AW: Unterstützung Prüfen...
31.01.2023 15:15:21
snb
Das geht in nur 5 VBA Zeilen.
Verzichte auf:
- 'Select'
- 'Activate'
- redundante Objektvariablen
- 'Protection' und 'Passwörter'
Lade mal eine Beispieldatei hoch.
Hallo sbn, danke habe das von Gerd genommen
31.01.2023 18:17:42
Gerd
AW: Unterstützung Prüfen...
31.01.2023 18:02:56
Yal
Moin,
genau wie gerd es bereit entdeckt hatte, die Suche fehlt.
Ziemlich viele Variablen, ziemlich lange Variablennamen.
Konstanten, die nur einmal verwendet werden, müssen nicht als Konstant isoliert werden.
Public Sub Namen_in_Lager_Gesamt_kopieren()
Dim wsZ As Worksheet                  'Ziel-Worksheet
Dim wsQ As Worksheet
Dim rngZ As Range
Const getStrPassWort = "tk"
  
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Set wsQ = ActiveWorkbook.ActiveSheet
'Ziel-Worksheet setzen
    Set wsZ = Mappe_öffnen("Lager_Gesamt.xlsm").Worksheets("Lager_1")
'Suchergebnis prüfen: strSUCH nicht gefunden: Am Ende Anfügen
    Set rngZ = wsZ.Columns(2).Find(wsQ.Range("K11").Value)
    If rngZ Is Nothing Then Set rngZ = wsZ.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)      'Offset(1, 0  = 1 zeile drunter
  
'jetzt übertragen
    wsZ.Unprotect getStrPassWort
    wsQ.Range("K11:K21").Copy
    rngZ.PasteSpecial Paste:=xlPasteValues
    wsZ.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=getStrPassWort
    Application.CutCopyMode = False
    wsQ.Parent.Activate 'Workbook, in der bisher dort aktiven Sheet
    wsQ.Range("K12").Select
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Private Function Mappe_öffnen(ByVal Dateiname As String) As Workbook
'stellt sicher, dass die Datei geöffnet ist
'vorige ActiveSheet wird wieder aktiviert
    On Error Resume Next
    With ActiveSheet 'merken
    Set Mappe_öffnen = Workbooks(Dateiname)
    If Mappe_öffnen Is Nothing Then Set Mappe_öffnen = Workbooks.Open("D:\" & Dateiname)
    .Activate 'wiederaktivieren
    End With
End Function
VG
Yal
Anzeige
Hallo Yal, danke habe das von Gerd genommen
31.01.2023 18:20:05
Gerd
Hallo Yal,
super, danke. Habe das von Gerd genommen.
Mir fehlt nur noch die Formatierung.
mfg walter b
Hallo Yal, habe geändert ---)))
31.01.2023 19:02:14
walter
Hallo zusammen,
habe geändert:
'jetzt übertragen
wsZ.Unprotect getStrPassWort
wsQ.Range("K11:K21").Copy
rngZ.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
einwandfrei auch deine Version !!!
mfg walter b
AW: Unterstützung Prüfen...
31.01.2023 18:32:43
GerdL
Hallo Walter,
das sagt inetwa mein Makrorekorder. Unterhalb von PasteSpecial einzufügen.
With rngZIEL.EntireRow.Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Den Code von Yal könntest du schon testen.
Gruß Gerd
Anzeige
Habe ich...
31.01.2023 18:45:42
walter
Hallo Gerd,
habe ich gerade getestet.
Es werden die Daten untereinander reinkopiert.
mfg walter b

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige