Excel Formel
Geizhals » Forum » Programmierung » Excel Formel (39 Beiträge, 520 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
...........
Re(11): Excel Formel - Probiers mit vba
30.07.2004, 13:37:01
also wenn du schon soweit gehen willst, dann bitte ordentlich

option explicit
public sub getFreeNumbers()
dim rngArea as excel.range,rngCell as excel.range,rngTarget as excel.range
dim wks as worksheet
dim strTarget as string
dim lngRow as long
dim intColumn as integer

set wks=worksheets("bediener")
'ziel auswaehlen
strtarget=getrange()
lngRow=clng(mid(strtarget,1,instr(1,strtarget,",")-1))
intcolumn=cint(mid(strtarget,instr(1,strtarget,",")+1))
set rngtarget=wks.cells(lngrow,intcolumn)

'spalte B
set rngarea=wks.cells(1,2).offset(0,0).range("a1:a65536")
'nur die mit constanten verwenden (nicht leer, keine Formel)
set rngarea=rngarea.SpecialCells(xlCellTypeConstants)

for each rngCell in rngarea
   if rngcell.text="frei" then
     if len(rngtarget.text)<>0 then
         rngtarget.value=rngtarget.text & "," & rngcell.row
     else
         rngtarget.value="Zahlen die frei sind: " & rngcell.row
    end if
  end if
next rngcell

end sub


public function getRange() as string
dim rng as excel.range
dim strText as string

strtext="Bitte eine Zelle im aktiven Arbeitsblatt auswaehlenauswaehlen " & _
"in die die Liste geschrieben werden soll:!"
anfang:
set rng=application.inputbox(strtext, Type:=8)
if rng.rows.count>1 or rng.columns.count>1 then
msgbox "Bitte nur eine einzelne Zelle im aktiven Arbeitsblatt auswaehlen!"
goto anfang:
endif
getRange=rng.row & "," & rng.column
end function

mfg

Penguin
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
...............
Re(15): Excel Formel - Probiers mit vba
30.07.2004, 14:58:35
SUPER!

Könntest mir das ganze ein bisserl umwandeln:

Er soll es automatisch in die Zelle: A1664 anzeigen und dieses Feld zuvor löschen!

hier der komplette Code:

Sub freieuser()

Dim rngArea As Excel.Range, rngCell As Excel.Range, rngTarget As Excel.Range
Dim wks As Worksheet
Dim strTarget As String
Dim lngRow As Long
Dim intColumn As Integer

Set wks = Worksheets("bediener")
'ziel auswaehlen
strTarget = getRange()
lngRow = CLng(Mid(strTarget, 1, InStr(1, strTarget, ",") - 1))
intColumn = CInt(Mid(strTarget, InStr(1, strTarget, ",") + 1))
Set rngTarget = ActiveSheet.Cells(lngRow, intColumn)

'spalte B
Set rngArea = wks.Cells(1, 2).Offset(0, 0).Range("a1:a65536")
'nur die mit constanten verwenden (nicht leer, keine Formel)
Set rngArea = rngArea.SpecialCells(xlCellTypeConstants)

For Each rngCell In rngArea
   If rngCell.Text = "unbenutzt" Then
     If Len(rngTarget.Text) <> 0 Then
         rngTarget.Value = rngTarget.Text & "," & wks.Cells(rngCell.Row, 1).Text
     Else
         rngTarget.Value = "Unbenutzte Bediener: " & wks.Cells(rngCell.Row, 1).Text
    End If
  End If
Next rngCell

End Sub


Public Function getRange() As String
Dim rng As Excel.Range
Dim strText As String

strText = "Bitte eine Zelle im aktiven Arbeitsblatt auswaehlenauswaehlen " & _
"in die die Liste geschrieben werden soll:!"
anfang:
Set rng = Application.InputBox(strText, Type:=8)
If rng.Rows.Count > 1 Or rng.Columns.Count > 1 Then
MsgBox "Bitte nur eine einzelne Zelle im aktiven Arbeitsblatt auswaehlen!"
GoTo anfang:
End If
getRange = rng.Row & "," & rng.Column
End Function




Hilf auch Du! http://forum.geizhals.at/t261360.html

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung