Ich versuche, eine Datenbank zu erstellen, die ein Warehouse mit benannten Buchten darstellt. Dies wird Funktionen haben, um Materialien einzuloggen und sie auszuwerten, wenn sie benötigt werden.Excel VBA - wenn die Zelle leer ist, geben Sie etwas ein, sonst geben Sie den Fehler zurück
Meine Arbeitsmappe hat ein Log In Blatt und sieben Blätter mit der Bezeichnung Reihe A bis Reihe G, um die Gänge im Lagerhaus darzustellen. Jeder Gang hat fünf Regale und mehrere Buchten. Diese Information wird verkettet, um eine eindeutige Position zu erhalten. Ich habe derzeit Probleme damit, VBA zu fragen, ob die Position, der ein Material zugewiesen werden soll, leer ist oder nicht, und wenn dies der Fall ist, sollte es Informationen einfügen, die vom Log In-Blatt kopiert wurden. Unglücklicherweise füllt der Code, egal was in meinem Blatt ist, die ActiveCell mit "TRUE" und zeigt die Fehlermeldung an, die ich gefragt habe, wenn sie nicht wahr ist. Ich habe IfEmpty auch mit dem gleichen Ergebnis versucht.
Mein Code sieht wie folgt aus:
Sub LogIn()
Dim Row As String
Dim Location As String
' assign values to variables
Worksheets("Log In").Activate
Location = Cells(6, 3).Value
Row = Cells(3, 3).Value
' copy new inputs to clipboard
Sheets("Log In").Range("C8:C11").Copy
' find the correct location within the separate racking sheets
Sheets("Row " & Row).Activate
Selection = Cells.Find(What:=Location, After:=Cells(1, 1), LookIn:=xlFormulas, _
lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, _
MatchCase:=False, searchformat:=False).Activate
Selection = Sheets("Log In").Cells(6, 3).Value
Selection = ActiveCell.Offset(0, 2).Activate
' check whether location is empty
If ActiveCell.Value = "" Then
' paste new inputs onto racking sheet
ActiveCell.PasteSpecial
' or return an error
Else: MsgBox "The location you have selected is currently occupied"
End If
End Sub
Das ist wirklich gut zu wissen. Um Zeit zu sparen und umzuschreiben, habe ich es einfach gemacht, indem ich 'Selection =' aus dem 'ActiveCell.Offset' entferne –