VBA - ganze Spalte formatieren

Hallo alle zusammen,

Ich möchte wissen, was am folgenden VBA Code nicht funktioniert.
Und zwar möchte ich, dass wenn bei einer Spalte abgebrochen, oder verloren steht, dass
bei einer anderen Spalte dann 0 steht:

Sub Prozent()

Dim a As Variant

a = Workbooks(„Angebotsliste Gesamt.xlsx“).tabelle(1).colums(„M:M“).Value

If a = „abgebrochen“ Then
   Columns(„K:K“).Value = „0“
   ElseIf a = „verloren“ Then
   Columns(„K:K“).Value = „0“
      
End If

End Sub

Moin,

warum mit VBA.

der WENN-Befehl tu es auch für die Spalte K

WENN(M1=„abgebrochen“;0;WENN(M1=„verloren“;0,SONST_Wert))

Wobei Sonst_wert z.B. der Wert aus irgendeiner anderen Spalte ist, oder auch aus Spalte M, sofern die Zellen nicht leer sind (muestte sonst auch 0 in Spalte K ergeben.
Den Befehl einfach bis zur letzten Zeile die gefüllt ist runterziehen

Gruß

slam

Hallo Verena,

zunächst möchte ich Dir nahelegen, Dich mit den allgemeinen Begriffen in Tabellenkalkulationen vertraut zu machen. Dann verstehen wir uns besser :smile:
Es geht hier nicht um Formatierung ( Alles, was das Erscheinungsbild von Zellen / Bereichen verändert, wie Schriftart, Farbe, Ausrichtung usw. )
Vielmehr willst Du Werte von Zellen prüfen und verändern.

Wenn Du nun den Wert einer ganzen Spalte ausliest, passt dieser nicht in eine einzelne eindimensionale Variable - es sind viele Werte.
Du könntest die Spalte zeilenweise abfragen, um einzelne Zellen anzusprechen:

Sub Prozent()

Dim a As Variant

dim i as long

for i = 2 to 100 'beispielsweise Zeilen 2 - 100

a = Workbooks(„Angebotsliste Gesamt.xlsx“).tabelle(1).cells(i,13).Value’M=13.Spalte

If a = „abgebrochen“ Then
cells(i,11).Value = „0“ 'Spalte K = 11
ElseIf a = „verloren“ Then
cells( i, 11).Value = „0“ 'Spalte K = 11

End If

Viel Erfolg

Thomas

Hi, ja danke mal.

naja, weil der sonst_Wert variabel von unseren Vertriebsmitarbeitern ausgefüllt wird.

Aber sonst wär das echt sehr hilfreich:smile:

DANKE!

Hallo Thomas

vielen lieben Dank für die Zeit zum erklären… :smile:

Ich weiß nicht was ich da falsch mache, aber es kommt dann immer: Fehler beim Kompilieren: For ohne next.

Und so siehts aus:

Sub Prozent()

Dim a As Variant

Dim i As Long

For i = 2 To 700

a = Workbooks(„Angebotsliste Gesamt.xlsx“).tabelle(1).Cells(i, 13).Value

If a = „abgebrochen“ Then
Cells(i, 11).Value = „0“

ElseIf a = „verloren“ Then
Cells(i, 11).Value = „0“

End If

End Sub

LG verena

Hallo,

sorry, da ist mir die vorletzte Zeile abhanden gekommen:

Sub Prozent()

Dim a As Variant

Dim i As Long

For i = 2 To 700

a = Workbooks(„Angebotsliste Gesamt.xlsx“).tabelle(1).Cells(i, 13).Value

If a = „abgebrochen“ Then
Cells(i, 11).Value = „0“

ElseIf a = „verloren“ Then
Cells(i, 11).Value = „0“

End If

next i

End Sub

Hallo Thomas,

Ich habs versucht, aber leider kommt immer die Fehlermeldung: Objekt unterstütz diese Methode nicht.

Um nochmal auf die Thematik einzugehen.

Spalte A enthätl das Ergebnis: (Auftrag, abgebrochen, verloren, zu erwarten)
Spalte B enthält die Auftragswahrscheinlichkeit (100%, 50%, 0%,…)

Ich möchte die Spalte B so formatieren, dass sobald die Spalte A verloren oder abgebrochen anzeigt 0% steht, weil sonst wird der Erwartungswert gefälscht.

LG verena

Hi,
bitte antworte immer unter dem entsprechenden Beitrag auf den Du Dich beziehst!
Anscheinend holst Du die Werte aus einer anderen Tabelle, denn xlsx taugt nicht für Makros.

Sub Prozent()
Dim a As Variant
Dim i As Long
For i = 2 To 700
a = Workbooks(„Angebotsliste Gesamt.xlsx“).Sheets(„Tabelle1“).Cells(i, 13).Value
If a = „abgebrochen“ Then Cells(i, 11).Value = „0“
If a = „verloren“ Then Cells(i, 11).Value = „0“
Next i
End Sub

Viel Erfolg

Thomas