I am writing a macro which loads in a picture and makes a "cross" wherever the user clicks on the picture. I don't know how many times they will click, so I use the following code to make 2 labels, 1 vertical and 1 horizontal, which intersect in the middle to make a cross.
HorHold = HorHold + 1
Set Lbl = Controls.Add("Forms.Label.1", "lblLabel" & HorHold, True)
With Lbl
.Top = Y
.Left = X - 6
.Height = 1
.Width = 12
.BorderStyle = 1
.BorderColor = vbRed
End With
'for the second part of the "X", we need to give it a unique name
'so we use VertHold which starts at 900 and won't intersect HorHold
VertHold = VertHold + 1
Set Lbl = Controls.Add("Forms.Label.1", "lblLabel" & VertHold, True)
With Lbl
.Top = Y - 6
.Left = X
.Height = 12
.Width = 1
.BorderStyle = 1
.BorderColor = vbRed
End With
This works great. I also want to be able to undo any mistakes. I put an "Undo" button on the userform with the following code:
'now we have to clear off the red X
Controls("lblLabel" & HorHold).Visible = False
Controls("lblLabel" & VertHold).Visible = False
HorHold = HorHold - 1
VertHold = VertHold - 1
The idea is that each time they hit "Undo", they can "step back" over all their marks and undo them.
Here is my problem: this works at first, but not later. That is, say I click 4 times and the last 2 are mistakes. So, I hit "Undo" twice, and each time the cross disappears just like it is supposed to. So, now I have only 2 crosses on the image. Then, I click twice more to make two more crosses. However, if I hit "undo" nothing happens! Then, I hit "undo" again and nothing happens. However, when I hit it a third time, mark #2 disappears! So, it seems to be stepping backwards like it should, but it doesn't erase the first two NEW marks, but when I step back far enough I can erase marks that have never been erased.
Sorry if this is confusing, it's a difficult thing to explain. Any ideas?
Bookmarks