Microsoft Excel

Herbers Excel/VBA-Archiv

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

Anzeigen von Tabellenbereichen | Herbers Excel-Forum


Betrifft: Anzeigen von Tabellenbereichen von: jeron
Geschrieben am: 20.01.2010 11:09:32

Hallo liebe Excelfreunde,

ich habe ein einfaches Problem, dass ich schon laienhaft gelöst habe, hätte aber gerne noch eine
Anregung zur Optimierung.

Ich habe im Tabellenblatt 1 eine Drop Down Liste ( KW1, KW2, KW3...KW52) in der Kalenderwochen angezeigt werden.

Für jede Kalenderwoche soll jetzt ein Bereich aus einem anderen Tabellenblatt angezeigt werden.

Wichtig hierbei ist zu wissen, dass die angezeigten Bereiche nicht gleich groß sind, ich also gerne mit einer Funktion arbeiten würde, die mir den Inhalt nur anzeigt und nicht einfach den Inhalt des Bereiches kopiert und mir an meiner Anzeigestelle (Tabelle1 B21:I xx) einfügt.


Wenn Auswahl KW1: Dann Anzeigen Bereich aus Tabellenblatt 3 ( B5:I18) in Tabellenblatt 1 B21: I xx
Wenn Auswahl KW2: Dann Anzeigen Bereich aus Tabellenblatt 3 ( B22:I34) in Tabellenblatt 1 B21: I xx
Wenn Auswahl KW3: Dann Anzeigen Bereich aus Tabellenblatt 3 ( B37:I53) in Tabellenblatt 1 B21: I xx
...

...

Bis KW53

Ich habe momentan mit Copy und Paste Makro und If Else, Else if gearbeitet. Finde das aber nicht sehr schön.
Ich würde gerne mit Select Case Arbeiten und mit der besagten Anzeigefunktion
brauche hierzu eine Hilfestellung bei der Definition:

Es können nämlich 3 Variablen vorliegen die ich per Case bestimmen muss

1. Die Arbeitsmappe der Quellinformation
2. Das Tabellenblatt der Quellinformation
3. Der spezielle Bereich der Quellinformation

Für jede Anregung und Hilfestellung bin ich sehr dankbar.

Viele Grüße aus München,
Jeron

  

Betrifft: AW: Anzeigen von Tabellenbereichen von: fcs
Geschrieben am: 20.01.2010 13:48:44

Hallo Jeron,

was meinst du mit der Anzeigefunktion?

Ansonsten ist es ja der Wahnsinn was du da im Code machen willst.
Den zu kopierenden Bereich für 52 KW, für mehrer Dateien und ggf. mehrere Tabellenblätter festzulegen.
Da die Menge an Code-text, die du in einem Modul schreiben kannst begrenzt ist, könnte es da Probleme geben.

Besser und pflegeleichter ist es, diese Informationen in einem Tabellenblatt zu hinterlegen und diese Tabelle nach KW, Dateiname, Tabellenblatt zu durchsuchen und den Bereich auszulesen.

Eine Select Case Kontruktion kann wie folgt aus sehen -aber wie geschrieben- bei deinem Vorhaben der schiere Wahnsinn.

Gruß
Franz

Sub Test()
  Dim sKW As String, sBereich As String
  Dim sDatei As String
  Dim sTab As String
  Dim wks As Worksheet
  Set wks = ActiveSheet
  sKW = wks.Range("C2")
  sDatei = LCase(wks.Range("C3")) 'Dateiname in Kleinbuchstaben
  sTab = LCase(wks.Range("C4")) 'Tabellenname in Kleinbuchstaben
  Select Case sKW
    Case "KW1"
        Select Case sDatei
          Case "exceldatei01.xls"
            Select Case sTab
              Case "tabelle1": sBereich = "B5:B18"
              Case "tabelle2": sBereich = "B5:B22"
              '... usw
            End Select
          Case "exceldatei02.xls"
            Select Case sTab
              Case "tabelleA": sBereich = "B5:B22"
              Case "tabelleB": sBereich = "B5:B13"
              '... usw
            End Select
          '... usw
        End Select
    Case "KW2": sBereich = "B22:I34"
        Select Case sDatei
          Case "exceldatei01.xls"
            Select Case sTab
              Case "tabelle1": sBereich = "B5:B18"
              Case "tabelle2": sBereich = "B5:B22"
              '... usw
            End Select
          Case "exceldatei02.xls"
            Select Case sTab
              Case "tabelleA": sBereich = "B5:B22"
              Case "tabelleB": sBereich = "B5:B13"
              '... usw
            End Select
          '... usw
        End Select
    '... usw
  End Select
  
  If sBereich <> "" Then
    With wks
      'Altdaten löschen
      .Range(.Range("B21"), .Range("B21").End(xlDown).Offset(0, 7)).ClearContents
      Workbooks(sDatei).Worksheets(sTab).Range(sBereich).Copy
      .Range("B21").PasteSpecial Paste:=xlPasteFormats
      .Range("B21").PasteSpecial Paste:=xlPasteValues
      Application.CutCopyMode = False
    End With
  Else
    MsgBox "Für """ & sKW & """ keine Übereinstimmung in Case-Anweisungen gefunden.", _
      vbInformation + vbOKOnly, "Daten-Anzeige"
  End If
End Sub



  

Betrifft: AW: Anzeigen von Tabellenbereichen von: jeron
Geschrieben am: 20.01.2010 14:47:09

Hallo Franz,

ja das sieht doch super aus.

Ich glaube aber, dass ein Missverständins vorliegt.

Es gibt 52 Kalenderwochen mit 52 unterschiedlichen Bereichen die sich auf verschiedene Tabellenblätter in nur einer Mappe verteilen.

Die Quelle ist also nur eine bestimmte Arbeitsmappe.

Das heißt ein Case hat eigentlich keine drei Variablen sondern einen festen Wert für die Info Quelldatei, Tabellenblatt und die Info Bereich.
Ich muss demnach nur einmal für alle 52 Cases nur eine QuellArbeitsmappe definieren und dann
für jeden Case halt das bestimmte Tabellenblatt und den bestimmten Bereich:
Ungfähr so:
Für alle Cases gilt die Quelldatei "dateiname auch Pfad möglcih? "
Der Case soll als Grundlage die Info der KW aus der Eingabe ComboBox 1 ziehen.
wenn ComboBox: " KW1"
dann Case "KW1"
mit Tabellenblatt " "
und Bereich " "
der Bereich soll kopiert werden
und in Tabellenblatt 1 ab A41 eingefügt werden.
Bei erneuter Auswahl wird kopierter Bereich gelöscht und ein anderer Inhalt erneut hineinkopiert.
Ich bräuchte bitte deine Hilfe bei der Erstellung der Struktur für die Select Case Anwendung für die Cases die ich definieren muss.

Ich finde die Idee mit der Anlegung einer Quellliste auch nicht schlecht und dann halt mit Filtern zu Arbeiten. Möchte aber hier mit Select Case arbeiten.


Mit Anzeigefunktion meinte ich das der ausgewählte Bereich (in Abhängigkeit der KW) kopiert wird und mir dann immer an einer Stelle in Tabellenblatt1 angezeigt wird.
Ich danke dir schon mal für deine Hilfe und hoffe du kannst mir noch mal unter die Arme greifen.


Beste Grüße,

Jeron


























































  

Betrifft: AW: Anzeigen von Tabellenbereichen von: fcs
Geschrieben am: 21.01.2010 07:20:03

Hallo Jeron,

dann wird die Struktur der SELECT-Anweisung natürlich einfacher und bleibt vom Umfang her im Rahmen.
Ich hab die reine Select-Anweisung auch um das notwendige Drumherum ergänzt, so dass Eingabefehler bzw. fehlende Tabellenblätter im Makro kontrolliert abgefangen werden.

Gruß
Franz
https://www.herber.de/bbs/user/67369.txt


  

Betrifft: AW: Anzeigen von Tabellenbereichen von: jeron
Geschrieben am: 21.01.2010 17:43:27

Hallo Franz,

es klappt einfach super und ich bin total happy.
Ich danke dir vielmals für deine Hilfe.
Echt ein geiles Makro, das du da gebaut hast!!

Beste Grüße aus München,
Jeron Bitto


Beiträge aus den Excel-Beispielen zum Thema "Anzeigen von Tabellenbereichen"