Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: Zellen auslesen
von: Leitz G.
Geschrieben am: 21.01.2010 21:11:12
Guten Abend!
Hätte gerne gewußt wie ich per VBA Werte aus Zellen auslesen kann.
Ich habe in der Spalte AH 4 bis AH 77 Werte (z.B. D 6001 od. D 1001 od. MP 1003 ........).
Wie kann ich die Zeilen auslesen erstens wieviel verschieden Werte stehen drinnen und in welchen Zeilen.
z.B. AH5 - AH7 = D 1001 ; AH11 - AH16 = D 6001 ; AH33 - AH34 = D 4001
Es stehen max. 6 verschieden Werte in den Zellen.
Bitte um Eure Hilfe
Gruß
Leitz G.
Betrifft: AW: Zellen auslesen
von: Rene
Geschrieben am: 21.01.2010 21:27:17
vielleicht so
dim x(100)
For ze = 4 to 77
x(ze) = cells(ze, 34)
if cells(ze, 34) = "???" Then
msgbox "in dieser Zelle steht " & cells(ze,34)
end if
next ze
Betrifft: AW: Zellen auslesen
von: Tino
Geschrieben am: 21.01.2010 23:20:44
Hallo,
hier mal eine Version zum testen.
Sub test() Dim oDic As Object, meAr(1), strString$ Dim A As Long Set oDic = CreateObject("Scripting.Dictionary") 'Tabellennamen anpassen !!!!!!!!!!!!!!! meAr(0) = Sheets("Tabelle1").Range("AH4:AH77").Value2 For A = 1 To Ubound(meAr(0)) If meAr(0)(A, 1) <> "" Then If oDic.exists(meAr(0)(A, 1)) Then oDic(meAr(0)(A, 1)) = Union(Range(oDic(meAr(0)(A, 1))), Range("AH" & 3 + A)).Address(0, 0) Else oDic(meAr(0)(A, 1)) = "AH" & 3 + A End If End If Next A meAr(0) = oDic.Keys meAr(1) = oDic.Items For A = Lbound(meAr(0)) To Ubound(meAr(0)) strString = strString & "'" & meAr(0)(A) & "' In Zelle: " & meAr(1)(A) & vbCr Next A MsgBox Left$(strString, Len(strString) - 1) End SubGruß Tino
Betrifft: AW: Zellen auslesen
von: Leitz G.
Geschrieben am: 22.01.2010 10:22:04
Hallo!
Das ganze ist mir etwas zu kompliziert. Hänge deßhalb eine Testdatei an, die erklären soll was ich will.
Wenn in den Spalten S u. T Einträge sind dann handelt es sich um gleiche Positionen.
Wenn das so ist soll in der ersten Position die Stückzahl (K) um die Anzahl der gleichen erhöt werden und der Gesamtpreis (N) neu berechnet werden. Die darunter liegende Zeilen mit der Gleichen Pos. soll dann die Zellinhalte gelöscht werden bis auf die Spalte I und J.
Wenn in der Spalte P ein Eintrag ist (ausgeschieden) dann soll diese Zeile keine Berücksichtigung finden.
https://www.herber.de/bbs/user/67409.xls
Ich hab in der Datei zwei Tabellenblätter drinnen Tabelle1 = Start ; So solls aussehen = Ergebnis
Gruß
Leitz G.
Betrifft: AW: Zellen auslesen
von: welga
Geschrieben am: 22.01.2010 10:45:40
Hallo Leitz G.,
Versuch mal folgendes:
Sub testing() Dim i As Long For i = Sheets(1).UsedRange.Rows.Count To 4 Step -1 If Cells(i, 19).Value <> "" And IsNumeric(Cells(i, 20)) Then If Cells(i, 19).Value = Cells(i - 1, 19).Value Then Cells(i - 1, 11).Value = Cells(i - 1, 11).Value + Cells(i, 11).Value Cells(i, 11).ClearContents Cells(i, 8).ClearContents Cells(i, 14).ClearContents Cells(i - 1, 14).Value = Cells(i - 1, 8).Value * Cells(i - 1, 11).Value End If End If Next i End SubIch verstehe nur nicht, wie du nachher auf H26=50,00 kommst, denke aber dass es nur ein Tippfehler ist.
Betrifft: AW: Zellen auslesen
von: Leitz G.
Geschrieben am: 22.01.2010 11:22:35
Hallo Welga!
Ist ein Tippfehler! Sorry
Herzlichen Dank für die superschnelle Hilfe!
Funktioniert perfekt! Nur wenn die oberste Zeile (z. B. 25) ausgeschieden wird dann dürfte diese nicht bearbeitet werden und der Endwert eine Zeile darunter ermittelt werden.
Sollte man das leicht ändern können, dann bitte ich Dich nochmals um Hilfe!
Sollte das kompliziert werden, dann versuche ich eine andere Lösung zu finden.
Gruß und Dank
Leitz G.
Betrifft: AW: Zellen auslesen
von: welga
Geschrieben am: 22.01.2010 13:05:00
Hallo,
versuch mal:
Sub testing() Dim i As Long Dim a As Long Dim b As Boolean Dim c As Boolean For i = Sheets(1).UsedRange.Rows.Count To 4 Step -1 b = False c = True If Cells(i, 19).Value <> "" And IsNumeric(Cells(i, 20)) And Cells(i, 16) = "" Then If Cells(i, 19).Value = Cells(i - 1, 19).Value Then If Cells(i - 1, 16).Value <> "" Then b = True If b Then a = 1 If Cells(i, 19).Value <> Cells(i - 1 - a, 19).Value Then c = False b = False Else a = 0 End If If c Then Cells(i - 1 - a, 11).Value = Cells(i - 1 - a, 11).Value + Cells(i, 11).Value If c Then Cells(i, 11).ClearContents If c Then Cells(i, 8).ClearContents If c Then Cells(i, 14).ClearContents If c Then Cells(i - 1 - a, 14).Value = Cells(i - 1 - a, 8).Value * Cells(i - 1 - a, 11).Value End If End If If Cells(i, 16) <> "" Then Cells(i, 11).ClearContents Cells(i, 8).ClearContents Cells(i, 14).ClearContents End If Next i End SubGruß
Betrifft: AW: Zellen auslesen
von: Leitz G.
Geschrieben am: 22.01.2010 13:27:58
Hallo Welga!
Es ist perfekt!
Vielen Dank!!!
Schönes Wochenende und Gruß
Leitz G.
Betrifft: AW: Zellen auslesen
von: welga
Geschrieben am: 22.01.2010 14:36:08
Eine Anmerkung habe ich noch:
Das funktioniert nur, wenn nicht in zwei aufeinander folgenden zeilen etwas in der Ausgeschieden-Spalte steht.
Falls das auch berücksichtigt werden soll, bitte kurz bescheid geben.
Gruß
Welga
Betrifft: Sorry kann nicht helfen, verstehe es nicht.
von: Tino
Geschrieben am: 22.01.2010 11:06:39
Hallo,
ich verstehe Deine Tabelle in Zusammenhang mit dem Ergebnis nicht.
z. Bsp. wird
D 1001 044
nicht mit
D 1001 012
zusammengezogen, aber
D 3010 011
D 3010 005
D 3010 009
D 3010 003
wiederrum doch?!
Warum aus der 40 bei D3010 in 'PREIS STK.' auf einmal eine 50 wird verstehe ich auch nicht?!
Sorry kann nicht helfen da ich es nicht verstehe.
Gruß Tino
Betrifft: AW: an Tino
von: Leitz G.
Geschrieben am: 22.01.2010 11:25:34
Hallo Tino!
Danke für das Angebot! Habe schon eine super Lösung von Welga!
Dank und Gruß
Leitz G.
Betrifft: welches Angebot? Verstehe es immer noch nicht. oT.
von: Tino
Geschrieben am: 22.01.2010 14:36:15