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

Excel VBA Programmierung

Excel VBA Programmierung
22.11.2021 11:31:16
Daniel
Hallo und Guten Tag !
Ich bin erst seit ein paar Tagen dabei mit VBA einen Code zu programmieren und bin nun auf folgendes Problem gestoßen:
Ganz Grundlegend, in meinem Programm wird eine riesige Tabelle mit Daten durchsucht und geordnet.
Nun würde ich gerne eine If Anweisung schreiben bei der es darum geht, das Wenn die Zelle x im Spaltenbereich zwischen y und z liegt, dann soll etwas passieren.
Ich tu mich ein wenig schwer diese if Anweisung zu formulieren.
An sich sollte das ja nicht allzu schwierig sein, jedoch fehlen mir die nötigen Grundkenntnisse zum das anständig zu formulieren.
Schon mal Vielen Dank im Vorraus!
Mfg Daniel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Programmierung
22.11.2021 11:37:14
Herbert_Grom
Hallo Daniel,
und wie wäre es mit einer Beispiel-Datei?
Servus
AW: Excel VBA Programmierung
22.11.2021 11:39:38
Daniel
Hi
also wenn X die Zelle ist als Range-Variable, dann gibts verschiedene Möglichkeiten, auch in abhängigkeit davon, was y und z sind.
sind y und z Zahlen, die die Spaltennummern darstellen, dann:

if X.Column >= y AND X.Column 
wenn du den Zellbereich zwischen der Spalte Y und der Spalte Z meinst ( mit "Y" und "Z" als Spaltenbuchstaben) dann

if not Intersect(X, Range("Y:Z")) is nothing then
wie gesagt, Möglichkeiten das zu lösen gibt es mehrere, es kommt auch immer darauf an, was jetzt genau vorliegt.
Gruß Daniel
Anzeige
AW: Excel VBA Programmierung
22.11.2021 11:50:20
Daniel
Das ist der

Sub in dem die Formulierung benötigt wird.
Konkretes Beispiel:
Wenn die bearbeitete Spalte, = LetzteSpalte, in dem Bereich von CA bis CT liegt, dann soll die Zelle in "UU" der Wert 1 eingetragen werden

Sub Daten_Ueberpruefen()
Dim Wert As Double
Dim UL As Double
Dim LL As Double
Dim LetzteSpalte As Integer
Dim LetzteZeile As Integer
Dim Wort As String
Wort = "FALSCH"
''''''''''''''''''''''''''''NACH AUSCHUSS SUCHEN''''''''''''''''''''''
LetzteSpalte = 6
For LetzteZeile = 6 To Worksheets("Datenblatt").Cells(Rows.Count, 6).End(xlUp).Row
If StrComp(Cells(LetzteZeile, 6), Wort, vbTextCompare) = 0 Then
If (Cells(LetzteZeile, 11)) + (Cells(LetzteZeile, 7)) + (Cells(LetzteZeile, 8)) + (Cells(LetzteZeile, 9)) + (Cells(LetzteZeile, 10))  0 Then
For LetzteSpalte = 7 To Worksheets("Datenblatt").Cells(7, Columns.Count).End(xlToLeft).Column
UL = Worksheets("Datenblatt").Cells.Item(2, LetzteSpalte).Value ' die ObereGrenze holen
LL = Worksheets("Datenblatt").Cells.Item(3, LetzteSpalte).Value ' die UntereGrenze holen
Wert = Cells(LetzteZeile, LetzteSpalte).Value
If (UL = LL And UL = Wert) Or (UL  LL And (UL > Wert And Wert > LL)) Then
Else
Cells(LetzteZeile, LetzteSpalte).Interior.Color = vbRed
Cells(1, LetzteSpalte).Interior.Color = vbRed
Cells(1, LetzteSpalte) = Wort
If *Benötigte Formulierung*
Cells(LetzteZeile, "UU").Value = 1
Else
End If
End If
Next LetzteSpalte
Else
End If
Else
End If
Next LetzteZeile ' Nächste Spalte wird ausgewählt
Wort = Empty
'''''''''''''''''''''''''UNBENUTZTE SPALTEN VERKLEINERN''''''''''''''''''''
For LetzteSpalte = 7 To Worksheets("Datenblatt").Cells(1, Columns.Count).End(xlToLeft).Column
If StrComp(Cells(1, LetzteSpalte), Wort, vbTextCompare) = 1 Then
Else
Cells(1, LetzteSpalte).ColumnWidth = 0.1
End If
Next LetzteSpalte
Call SpaltenKlein
End Sub

Anzeige
AW: Excel VBA Programmierung
22.11.2021 13:06:29
Daniel
Meine Variable x ist definiert als Integer und erhöht sich bei jedem Loop Durchlauf bis zum Ende der Tabelle, dadurch funktioniert das leider nicht so :(
AW: Excel VBA Programmierung
22.11.2021 13:13:01
Daniel
naja, dann halt nix x.Column sondern nur x.
Gruß Daniel
AW: Excel VBA Programmierung
22.11.2021 14:03:16
Yal
Hallo Daniel,
für eine erste Entwurf, nicht schlecht.
Einige Tipp, um falsche Gewonnheit von Anfang an zu vermeiden:
_ achte auf das Indentieren
_ vermeide Leerzeilen ( bei dir 33 von 105!)
_ Schleifen-Variablenamen so kurz wie möglich, üblicherweise 1-buchstabig
_ Variable, die wöhrend des Ablauf sich nicht ändern als Const
_ Objekt-Variable anstatt Integer verwenden (na gut, eher Stufe 2)
_ mit "With" die Wiederholung vermeiden, von alles was vor dem Punkt steht
_ boolsche Ausdrücke noch üben ;-)
Spalte_Min und _Max müssen ev. angepasst werden.

Sub Daten_Ueberpruefen()
Dim OberGrenze As Double
Dim UnterGrenze As Double
Dim S As Integer
Dim Z As Range
Const Spalte_Min = 7
Const Spalte_Max = 11
Const Wort = "FALSCH"
''''''''''''''''''''''''''''NACH AUSCHUSS SUCHEN''''''''''''''''''''''
With Worksheets("Datenblatt")
For Each Z In .Range(.Range("F6"), .Range("F9999").End(xlUp)).Cells 'F ist spalte 6
If StrComp(Z.Value, Wort, vbTextCompare) = 0 Then
If WorksheetFunction.Sum(Z.EntireRow.Range("G1:K1"))  0 Then
For S = 7 To .Cells(7, Columns.Count).End(xlToLeft).Column
OberGrenze = .Cells(2, S).Value ' die ObereGrenze holen
UnterGrenze = .Cells(3, S).Value ' die UntereGrenze holen
If Not (UnterGrenze  "" Then
.Cells(1, S).ColumnWidth = 0.1
End If
Next S
Call SpaltenKlein
End With
End Sub
Ich vermische verschiedenen Schreibweise
.. .Cells(x,y)
.. .Range("A1") 'sowohl absolut als auch relativ
Es ist nicht empfehlenswert, aber zeigt was möglich ist.
VG
Yal
Anzeige
AW: Excel VBA Programmierung
24.11.2021 10:11:46
Daniel
Ok Super Dankeschön für die Tipps, funktioniert alles bisher gut.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige