|
This seems to work (below) but does anyone know how to return the day of the week. I need to return the date of the next Monday after the current date when the code is ran.
fred = DateDiff("w", duedate, todate)
ActiveSheet.Cells(27, 5).Value = fred + 1
eric = DateDiff("m", duedate, todate)
ActiveSheet.Cells(27, 9).Value = eric + 1
the plus 1 is required as it always returns one week or month less.
Don't suppose anyone knows how to return the day of the week?
I need to make it find the date of the Monday following today's date (today being whatever the date is when the code is ran???
|
|
|
|
|
Here's some code to work with, hope it helps.
Dim i As Integer
Dim datTemp As Date
For i = 1 To 7
datTemp = DateAdd("d", i, Now)
If Weekday(datTemp) = vbMonday Then
MsgBox "Next Monday will be " & datTemp
End If
Next
Andy Gaskell, MCSD
|
|
|
|
|
That's superb thanks - I am using it like this
(Do you know how I can just return the date and not the time too???)
Dim i As Integer
Dim datTemp As Date
For i = 1 To 7
datTemp = DateAdd("d", i, Now)
If Weekday(datTemp) = vbMonday Then
ActiveSheet.Cells(87, 3).Value = datTemp
End If
Next
Do you know how I can return the last Monday in March 2002?
Also any idea how I could do a similar thing with months? Eg to return the next 15th of a month or whatever date the user specifies. Ie if on 17th of June the user wants to return the next 15th of the month it will give 15th July, but if on 14th July the user specifies the 15th it will give the 15th of July.
|
|
|
|
|
This works but I am open to simpler suggestions
Dim TheDate As Date ' Declare variables.
Dim Msg
Dim hey
Dim Ms
Dim instal
Dim instmon
Dim mon
TheDate = Date
Msg = DatePart("m", TheDate) ' Msg now equals the number current month number
dayDate = Date
Ms = DatePart("d", dayDate) 'Ms now equals the current day number
If Ms >= 8 Then
Msg = Msg + 1
End If
instal = 15 & "th "
If Msg = 1 Then
mon = "January"
End If
If Msg = 2 Then
mon = "February"
End If
If Msg = 3 Then
mon = "March"
End If
If Msg = 4 Then
mon = "April"
End If
If Msg = 5 Then
mon = "May"
End If
If Msg = 6 Then
mon = "June"
End If
If Msg = 7 Then
mon = "July"
End If
If Msg = 8 Then
mon = "August"
End If
If Msg = 9 Then
mon = "September"
End If
If Msg = 10 Then
mon = "October"
End If
If Msg = 11 Then
mon = "November"
End If
If Msg = 12 Then
mon = "December"
End If
ActiveSheet.Cells(87, 3).Value = instal & mon
ActiveSheet.Cells(87, 4).Value = "monthly"
ActiveSheet.Cells(88, 3).Value = "15-03-02"
Else
If freq = "weekly" Then
ActiveSheet.Cells(31, 2).Value = (ActiveSheet.Cells(29, 8).Value) / (fred + 1)
ActiveSheet.Cells(31, 1).Value = (("Less " & fred + 1) & " payments @")
ActiveSheet.Cells(31, 8).Value = (ActiveSheet.Cells(31, 2).Value) * (fred + 1)
Dim i As Integer
Dim datTemp As Date
For i = 1 To 7
datTemp = DateAdd("d", i, Date)
If Weekday(datTemp) = vbMonday Then
ActiveSheet.Cells(87, 3).Value = datTemp
ActiveSheet.Cells(87, 4).Value = "weekly"
ActiveSheet.Cells(88, 3).Value = "25-03-02"
'MsgBox "Next Monday will be " & datTemp
End If
Next
|
|
|
|
|
im new to VB, and i really need some help
i want to make an application whos main window is a circle shape and not the regular box shape, how do i do this and is it possible?
any help would be greatly appreciated
also if u know of any sites that help out beginners, please let me know;)
thanks people
|
|
|
|
|
Does anyone know how to validate entries from an input box?
I'd like to ask the user to type in one of three strings. If they type in anything else I would like an error box to pop up and then the procedure to restart.
Can anyone help
This is m code that doesn't work:
Private Sub Workbook_Open()
'gets the rent credit value from user and pastes it into the relevant cell
myref = Application.InputBox(Prompt:="Enter refund, redec or incentive", _
Default:="refund", Type:=2)
myNum = Application.InputBox(Prompt:="Enter amount of the credit", _
Default:=0, Type:=1)
ActiveSheet.Cells(1, 1).Value = myNum
If myref = "refund" Then ActiveSheet.Cells(1, 2).Value = "Refund"
If myref = "redec" Then ActiveSheet.Cells(1, 2).Value = "redec"
If myref = "incentive" Then ActiveSheet.Cells(1, 2).Value = "incentive"
If myref <> "refund" Then GoTo 4
4
If myref <> "redec" Then GoTo 5
5
If myref <> "incentive" Then GoTo 6
6
MsgBox "Error you have not entered a relevant type for credit"
End Sub
|
|
|
|
|
Try this,
Private Sub Workbook_Open()
'gets the rent credit value from user and pastes it into the relevant cell
myref = Application.InputBox(Prompt:="Enter refund, redec or incentive", _
Default:="refund", Type:=2)
myNum = Application.InputBox(Prompt:="Enter amount of the credit", _
Default:=0, Type:=1)
ActiveSheet.Cells(1, 1).Value = myNum
If myref = "refund" Then
ActiveSheet.Cells(1, 2).Value = "Refund"
elseif myref = "redec" Then
ActiveSheet.Cells(1, 2).Value = "redec"
elseif myref = "incentive" Then
ActiveSheet.Cells(1, 2).Value = "incentive"
else
MsgBox "Error you have not entered a relevant type for credit"
endif
End Sub
BTW: Any reason why you are using an edit field, wouldn't a set of radio buttons or a combo box be easier and more user friendly.
The above code is also case senstive which might throw some users.
|
|
|
|
|
I have tried to use a combo box but it goes a bit haywire and I can't get it to work (see earlier post)
Your code is superb thanks.
How could I get it to go back to the input box for the enter refund redec incentive bit instead of just ending.
Your help is very much appreciated
Ian
|
|
|
|
|
I think this should work, loop around until a valid option is selected. I've done it off the top of my head so some of the syntax might be wrong
Private Sub Workbook_Open()
Dim boolCanExit as Boolean
do
boolCanExit = True
'gets the rent credit value from user and pastes it into the relevant cell
myref = Application.InputBox(Prompt:="Enter refund, redec or incentive", _
Default:="refund", Type:=2)
myNum = Application.InputBox(Prompt:="Enter amount of the credit", _
Default:=0, Type:=1)
ActiveSheet.Cells(1, 1).Value = myNum
If myref = "refund" Then
ActiveSheet.Cells(1, 2).Value = "Refund"
elseif myref = "redec" Then
ActiveSheet.Cells(1, 2).Value = "redec"
elseif myref = "incentive" Then
ActiveSheet.Cells(1, 2).Value = "incentive"
else
MsgBox "Error you have not entered a relevant type for credit"
boolCanExit = False
endif
Loop Until boolCanExit = True
End Sub
Michael
|
|
|
|
|
I keep getting loop with out do error message?
Any ideas? This does appear to be what I was after thanks
|
|
|
|
|
I've got this far but the loop remains looping and I have to ctrl alt and delete to kill it:
Private Sub Workbook_Open()
Dim boolCanExit As Boolean
boolCanExit = True
Do
'gets the rent credit value from user
'and pastes it into the relevant cell
myref = Application.InputBox(Prompt:="Enter refund, redec or incentive", Default:="refund", Type:=2)
If myref = "refund" Then
ActiveSheet.Cells(18, 1).Value = "Refund"
ActiveSheet.Cells(32, 1).Value = "91/500 908999"
Else
If myref = "redec" Then
ActiveSheet.Cells(18, 1).Value = "redec"
ActiveSheet.Cells(32, 1).Value = "62/100 225/13"
Else
If myref = "incentive" Then
ActiveSheet.Cells(18, 1).Value = "incentive"
ActiveSheet.Cells(32, 1).Value = "62/100 425/08"
Else: MsgBox "Error you have not entered a relevant type for credit"
boolCanExit = False
End If
rentac = Application.InputBox(Prompt:="Enter rent account number", Default:="1234567", Type:=0)
tenant = Application.InputBox(Prompt:="Enter name of tenant", Default:="Tenant", Type:=2)
Address = Application.InputBox(Prompt:="Enter address of tenant, on one line please", Default:="Address", Type:=2)
payee = Application.InputBox(Prompt:="Enter name of cheque payee please", Default:="Cheque Payee", Type:=2)
payeeadd = Application.InputBox(Prompt:="Enter address of cheque payee, on one line please", Default:="Payee Address", Type:=2)
myNum = Application.InputBox(Prompt:="Enter amount of the credit", Default:=0, Type:=1)
debtorsac = Application.InputBox(Prompt:="Enter debtors account number from Maureen, or enter none", Default:="No Debtors Ac", Type:=1)
debtorsamount = Application.InputBox(Prompt:="Enter amount of the debtors account balance", Default:=0, Type:=1)
ActiveSheet.Cells(51, 2).Value = myNum
ActiveSheet.Cells(10, 1).Value = tenant
ActiveSheet.Cells(11, 1).Value = Address
ActiveSheet.Cells(86, 1).Value = payee
ActiveSheet.Cells(52, 1).Value = "Debtors" & debtorsac
ActiveSheet.Cells(52, 2).Value = "-" & debtorsamount
ActiveSheet.Cells(38, 1).Value = rentac
End If
End If
Loop Until boolCanExit = True
End Sub
Help
|
|
|
|
|
I think the boolCanExit = True needs to be inside the Do loop
Private Sub Workbook_Open()
Dim boolCanExit As Boolean
Do
boolCanExit = True ' will always exit unless the user enters incorrect value
'gets the rent credit value from user
'and pastes it into the relevant cell
myref = Application.InputBox(Prompt:="Enter refund, redec or incentive", Default:="refund", Type:=2)
If myref = "refund" Then
ActiveSheet.Cells(18, 1).Value = "Refund"
ActiveSheet.Cells(32, 1).Value = "91/500 908999"
Else
If myref = "redec" Then
ActiveSheet.Cells(18, 1).Value = "redec"
ActiveSheet.Cells(32, 1).Value = "62/100 225/13"
Else
If myref = "incentive" Then
ActiveSheet.Cells(18, 1).Value = "incentive"
ActiveSheet.Cells(32, 1).Value = "62/100 425/08"
Else: MsgBox "Error you have not entered a relevant type for credit"
boolCanExit = False
End If
rentac = Application.InputBox(Prompt:="Enter rent account number", Default:="1234567", Type:=0)
tenant = Application.InputBox(Prompt:="Enter name of tenant", Default:="Tenant", Type:=2)
Address = Application.InputBox(Prompt:="Enter address of tenant, on one line please", Default:="Address", Type:=2)
payee = Application.InputBox(Prompt:="Enter name of cheque payee please", Default:="Cheque Payee", Type:=2)
payeeadd = Application.InputBox(Prompt:="Enter address of cheque payee, on one line please", Default:="Payee Address", Type:=2)
myNum = Application.InputBox(Prompt:="Enter amount of the credit", Default:=0, Type:=1)
debtorsac = Application.InputBox(Prompt:="Enter debtors account number from Maureen, or enter none", Default:="No Debtors Ac", Type:=1)
debtorsamount = Application.InputBox(Prompt:="Enter amount of the debtors account balance", Default:=0, Type:=1)
ActiveSheet.Cells(51, 2).Value = myNum
ActiveSheet.Cells(10, 1).Value = tenant
ActiveSheet.Cells(11, 1).Value = Address
ActiveSheet.Cells(86, 1).Value = payee
ActiveSheet.Cells(52, 1).Value = "Debtors" & debtorsac
ActiveSheet.Cells(52, 2).Value = "-" & debtorsamount
ActiveSheet.Cells(38, 1).Value = rentac
End If
End If
Loop Until boolCanExit = True
End Sub
|
|
|
|
|
Thanks
It needs the end ifs moved up under the if bits and the loop put above the rest of the code and now it works fine.
Thanks for your help. The examples on the microsoft website were very poor. Your help has been invaluable.
|
|
|
|
|
Dear Experts
I want to customize the fonts used in Outllok like the font used in Text Boxes of
To field,Cc Field,Subject Field and the overall headers...i dont know how to do it..but ive created a form but its not being used by default.Any suggestions
Mahesh Sundararaman
|
|
|
|
|
I am trying to put a combo box onto an excel spreadsheet. The idea is so this bit of the code picks up.Select Case ComboBox1.Value
Case 0 '
ActiveSheet.Cells(1, 1).Value = "refund"
Case 1 '
ActiveSheet.Cells(1, 1).Value = "redec"
Case 2 '
ActiveSheet.Cells(1, 1).Value = "incentive"
But I can't put the code for the combo box onto the workbook open part wqithout an error. If it remains on theindividual sheet on the ComboBox1_Click() sub it does't update. Also my combo box code:
ComboBox1.AddItem "Refund" 'ListIndex = 0
ComboBox1.AddItem "Redecoration Allowance" 'ListIndex = 1
ComboBox1.AddItem "Tenant Incentive" 'ListIndex = 2
'Use drop-down list
ComboBox1.Style = fmStyleDropDownList
for some reason makesmultipple entries on the drop down box instead if jyust the three. Can anyone help please?
|
|
|
|
|
I think you need to look at the ComboBox1.ListIndex, to retunr the index no, starting a 0, if you've used AddItem, without specifying an index.
Hope that helps.
Giles
|
|
|
|
|
Any idea how I might do that?
Thanks for your help.
|
|
|
|
|
'Create a combo box on the worksheet called ComboBox1 and copy and paste this....
'Make sure that youtr not in d3esign mode when you use it as nothing happens
Private Sub Worksheet_Activate()
'Initialisation Code
With ComboBox1
.Clear
.AddItem "Dog" 'Index 0
.AddItem "Cat" 'Index 1
.AddItem "Mouse" 'Index 2
End With
End Sub
Private Sub ComboBox1_Change()
Dim i As Integer
i = ComboBox1.ListIndex
Select Case i
Case 0
Cells(1, 1).Value = "This is a Dog"
Case 1
Cells(1, 1).Value = "This is a Cat"
Case 2
Cells(1, 1).Value = "This is a Mouse"
End Select
End Sub
Giles
|
|
|
|
|
The With ComboBox1 .Clear bit is what I was missing and why mine were adding entries until infinity.
Many thanks.
|
|
|
|
|
Yep, becuase every time to Activate the workbook they are added. There is and Initialize event for a Workbook, but thats the only one to support the once only event. You could initialse it from there when the workbook opens.
Giles
|
|
|
|
|
How can I check if the user has pressed a specified button then change it to something else.
|
|
|
|
|
When someone pushes a button, an event has occured. So, if they click on a button named command1, you could put code in the "OnClick" event that will update the text of your text box like:
Private Sub Command1_Click()
Text1.Text = "You clicked the button."
End Sub
|
|
|
|
|
When someone pushes a button, an event has occured. So, if they click on a button named command1, you could put code in the "OnClick" event that will update the text of your text box like:
Private Sub Command1_Click()
Text1.Text = "You clicked the button."
End Sub
|
|
|
|
|
I found what I thought to be an easy way to shove a graphical VB form to a printer.
It works fine when I call ShowPrinter and change the print quality and click OK.... But I don't know how to pick up the Cancel button click of the CommonDialog1.ShowPrinter and avoid printing.
Here's the code:
CommonDialog1.ShowPrinter
Form1.PrintForm
(need to detect cancel w/in CommonDialog1.ShowPrinter - branch around Form1.PrintForm if Cancel is pressed)
Any ideas?
Thanks in advance,
\\Jim
CommonDialog1.ShowPrinter
jamesdturner@hotmail.com
|
|
|
|
|
Try this:
On Error GoTo ErrHandler
CommonDialog1.CancelError = True
CommonDialog1.ShowPrinter
Form1.PrintForm
Exit Sub
ErrHandler:
End Sub
If you have existing Error Handling code the ErrHandler would look a little different:
ErrHandler:
If Err.Number <> 32755 Then '32755 is the Error Number for Cancel being selected
'Process Error as usual
End If
End Sub
Andy Gaskell, MCSD
|
|
|
|
|