2014-11-24 1 views
0

Я создал событие click, которое позволяет мне добавить цвет в две разные ячейки. Однако на данный момент он только устанавливает цвет в ячейки по вертикали.VBA - Excel VBA Set Горизонтальное и вертикальное выравнивание

Я отчаянно пытаюсь найти вариант, позволяющий пользователям выбирать, хотите ли они добавлять цвета по вертикали или по горизонтали. Это как мой код выглядит до сих пор:

Private Sub Button1_Click() 

Dim chemin1 As Object 
Set chemin1 = ThisWorkbook.Worksheets("Sheet1").Range("A1:J10") 
With chemin1 
Dim length As Integer 
Dim ship As String 
Dim message_box As String 

length = 1 

message_box = "Vertically or Horizontally?" 

If message_box = "V" Then 
     length = length + 4 
     Do While length > 0 
     length = length - 1 
     ActiveCell.Interior.color = RGB(128, 128, 128) 
     ActiveCell.Offset(1, 0).Select 
     Loop 
     ShipCount = ShipCount + 1 
    MsgBox "Your ship has been placed." 
ElseIf message_box = "H" Then 
{ Do the same but horizontally } 
End If 
End With 

End Sub 

ответ

0

Вы могли бы вы метод Application.InputBox() предложит пользователю выбрать 4 клетки, где они хотят, чтобы поместить корабль.

Dim rngSelected As Range 
Dim sSelectedAddress As String 

Do 
    On Error Resume Next 
    Set rngSelected = Application.InputBox(Prompt:="Select 4 cells vertically or horizontally where you would like to place your ship.", Title:="Place Ship", Type:=8) 
    On Error GoTo 0 
    If Not rngSelected Is Nothing Then 
     If rngSelected.Rows.Count > 1 And rngSelected.Columns.Count > 1 Or Not rngSelected.Cells.Count = 4 Then 
      MsgBox Prompt:="Your selection must be 4 cells within the same column or 4 cells within the same row." 
      Set rngSelected = Nothing 
     Else 
      rngSelected.Interior.Color = RGB(128, 128, 128) 
      MsgBox Prompt:="Your ship has been placed." 
     End If 
    Else 
     MsgBox Prompt:="Canceling ship placement." 
     Exit Sub 
    End If 
Loop While rngSelected Is Nothing 
+0

Это именно то, что я хотел, спасибо много! – AlexisP

0

Вы можете получить да/нет MsgBox, но, как правило, поле ввода требуется для ввода значений. Такие как.

Dim chemin1 As Object 
Set chemin1 = ThisWorkbook.Worksheets("Sheet1").Range("A1:J10") 
With chemin1 
    Dim length As Integer 
    Dim ship As String 
    Dim message_box As String 
    message_box = InputBox("V or H") 

    If message_box = "V" Then 
     ActiveCell.Range("A1:A5").Interior.Color = RGB(128, 128, 128) 
     MsgBox "Your ship has been placed." 
    ElseIf message_box = "H" Then 
     ActiveCell.Range("A1:E1").Interior.Color = RGB(128, 128, 128) 
    End If 
End With