Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1520to1524
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

If IsError then

If IsError then
08.11.2016 09:32:32
Berndt
Hallo zusammen,
folgender Codebestandteil muss angepasst werden, ich weiß nur nicht wie:
              If IsError(Application.Match(a(i, 1), Worksheets(a(i, 3)).Range("B1:B" &  _
bis), 0)) Then 'Doppelte Werte werden vermieden
Sheets(a(i, 3)).Range("B" & bis) = a(i, 1)
Sheets(a(i, 3)).Range("C" & bis) = a(i, 4)
Sheets(a(i, 3)).Range("B8:C8").Copy  ' da ist das gleiche Format
Sheets(a(i, 3)).Range("B" & bis).Resize(, 2).PasteSpecial xlFormats
Sheets(a(i, 3)).Range("B" & bis).HorizontalAlignment = xlLeft
Sheets(a(i, 3)).Range("C" & bis).NumberFormat = "dd.mm.yyyy"
End If
Das Problem liegt dabei in der IsError-Formel bei dem B1.
Ich möchte nicht das die Formel ab B1 sucht, sondern ab Spaltenkopf "Themenspeicher" in Spalte B. Der steht irgendwo in Spalte B. Erst ab da soll die Formel laufen.
Wo muss ich Anpassungen vornehmen?
LG Berndt

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If IsError then
08.11.2016 09:37:41
Daniel
Hi
Worksheets(a(i, 3)).Range("B" & ab & ":B" & bis)
die Variable ab berechnest du so ( das muss natürlich vorher erfolgen):
ab = application.Match("Themenspeicher", Worksheets(a(i, 3)).Range("B:B"), 0)
Gruß Daniel
AW: If IsError then
08.11.2016 09:46:07
Berndt
Danke für deine Hilfe,
aber nun kommt der Fehler "Typen Unverträglich"

For i = 1 To UBound(a)
If a(i, 2) = "x" Then
bis = Sheets(a(i, 3)).Range("B2000").End(xlUp).Row + 1
Ab = Application.Match("Themenspeicher", Worksheets(a(i, 3)).Range("B:B"), 0)
If IsError(Application.Match(a(i, 1), Worksheets(a(i, 3)).Range("B" & Ab & ":B" &  _
bis), 0)) Then 'Doppelte Werte werden vermieden
Sheets(a(i, 3)).Range("B" & bis) = a(i, 1)
Sheets(a(i, 3)).Range("C" & bis) = a(i, 4)
Sheets(a(i, 3)).Range("B8:C8").Copy  ' da ist das gleiche Format
Sheets(a(i, 3)).Range("B" & bis).Resize(, 2).PasteSpecial xlFormats
Sheets(a(i, 3)).Range("B" & bis).HorizontalAlignment = xlLeft
Sheets(a(i, 3)).Range("C" & bis).NumberFormat = "dd.mm.yyyy"
End If
End If
Next

Anzeige
AW: If IsError then
08.11.2016 10:45:34
Daniel
Hi
das dürfte daran liegen, dass der Begriff "Themenspeicher" nicht gefunden werden konnte und du hier natürlich den Wert aus der Zelle, ab der gesucht werden soll, einsetzen musst.
Da ich deine Datei nicht kenne, kann ich natürlich nur irdendeinen Dummytext in den Code einsetzen, den du dann noch entsprechend anpassen musst.
Gruß Daniel
Zusatz?
08.11.2016 11:00:40
Berndt
Danke. Hatte einen Schusselfehler drinnen. Habs selber korrigiert und es funktioniert. Danke dafür.
Noch eine kleine Frage:
Mein neuer angepasster Teilbereich im Code lautet
    For i = 1 To UBound(a)
If a(i, 2) = "x" Then
bis = Sheets(a(i, 3)).Range("B2000").End(xlUp).Row + 1
Ab = Application.Match("aus Themenspeicher übertragen", Worksheets(a(i, 3)).Range("B: _
B"), 0)
If IsError(Application.Match(a(i, 1), Worksheets(a(i, 3)).Range("B" & Ab & ":B" &  _
bis), 0)) Then 'Doppelte Werte werden vermieden
Sheets(a(i, 3)).Range("B" & bis) = a(i, 1)
Sheets(a(i, 3)).Range("C" & bis) = a(i, 4)
Sheets(a(i, 3)).Range("B8:C8").Copy  ' da ist das gleiche Format
Sheets(a(i, 3)).Range("B" & bis).Resize(, 2).PasteSpecial xlFormats
Sheets(a(i, 3)).Range("B" & bis).HorizontalAlignment = xlLeft
Sheets(a(i, 3)).Range("C" & bis).NumberFormat = "dd.mm.yyyy"
End If
End If
Next
mit
              Sheets(a(i, 3)).Range("B" & bis) = a(i, 1)
Sheets(a(i, 3)).Range("C" & bis) = a(i, 4)

überträgt es mir Werte in Spalte B und C in Tabelle ThemenSpeicher
mit
              Sheets(a(i, 3)).Range("B8:C8").Copy  ' da ist das gleiche Format
Sheets(a(i, 3)).Range("B" & bis).Resize(, 2).PasteSpecial xlFormats

Wird von weiter oben (B8:C8) der Bereich kopiert um das Format für die neuen Werte in Spalte B un C zu übernehmen.
Was muss ich im letzten Codebereich verändern, um das Format via Makro festzulegen und nicht von einem fixen Bereich zu nehmen?
z.B. Rahmen links/rechts/unten
LB Berndt
Anzeige
AW: Zusatz?
08.11.2016 11:08:01
Daniel
HI
solche Fragen beantwortet man sich in der Regel selbst mit Hilfe des Makrorecorders, in dem man die Formatierungen von Hand durchführt und das mit dem Recorder aufzeichnet.
dann sieht man, wie die entsprechenden Befehle aussehen und kann über F1 auf die Hilfeseite zum jeweiligen befehl kommen (Cursor auf unbekannten Befehl setzen, dann F1 drücken) um zusätzliche Informationen abzurufen.
Dann weiß man, wie die Formatierung zu programmieren ist, bzw kann dann den aufgezeichneten Code entsprechend überarbeiten und die Zellbezüge anpassen.
allerdings würde ich dir empfehlen, hierzu nicht Excel 2007, sondern eine andere Excelversion zu verwenden (2010 oder auch 2003).
In 2007 zeichnet der Recorder nur unvollständig auf (den hat MS wohl nicht rechtzeitig fertig bekommen)
Gruß Daniel
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige