2016-11-14 5 views
0

Мне очень сложно писать код для этого. Таким образом, четыре ячейки с переменными значениями должны отображаться в зависимости от ячейки с наибольшим значением при нажатии кнопки.Отображение определенного изображения в Excel в зависимости от наибольшего значения

Пример: Если значение ячейки A1 больше, чем другие ячейки, изображение A должно появиться при нажатии кнопки, если значение ячейки B1 выше, тогда должно появиться изображение B, которое назначено этой ячейке.

Мы старались изо всех сил, но не смог найти решение, любая помощь будет оценена

+3

Не могли бы вы вывести код из своего подхода? – Limak

+2

Вы не очень старались найти решение, я думаю: http://stackoverflow.com/questions/9198097/excel-vba-if-cell-value-equals-then-show-hide-images –

ответ

1

Ну, это что-то тривиальное, но вот как я бы это сделать:

Public Sub ShowPic() 
    Me.s1.Visible = b_is_visible(Me.s1.Name) 
    Me.s2.Visible = b_is_visible(Me.s2.Name) 
End sub 

Public Function b_is_visible(str_name As String) As Boolean 

    If str_name = cells(1,1) Then 
     b_is_visible = True 
    end if 

End Function 

В ячейке A1 вы должны поместить имя изображения. Таким образом, на основе этого изображение будет либо видимым, либо нет. Изображения должны быть в форме. Вышеприведенный код находится в форме.

1

Существует множество решений. Один из них - иметь некоторую папку с изображениями, которые вы хотите отобразить, и называть их строками с максимальным значением. Например. если максимальное значение находится в строке 3, будет отображаться файл picture3.jpg.

Sub test123() 
Dim Rng As Range 
Dim maxRow As Integer, maxVal As Integer 

Set Rng = Range("A1:A4") 
maxVal = Application.WorksheetFunction.Max(Rng) 
picNum = Application.Match(maxVal, Rng, 0) 

ActiveSheet.Pictures.Delete 
ActiveSheet.Pictures.Insert("K:\user files\user 1\pictures\picture" & picNum & ".jpg").Select 

End Sub 

EDIT:

Если вы хотите изменить изображение, вы можете сделать это путем переименования его и используя некоторые воздает должное.

Selection.ShapeRange.Name = "Pic1" 
ActiveSheet.Shapes("Pic1").Left = ActiveSheet.Cells(2, 2).Left 
ActiveSheet.Shapes("Pic1").Top = ActiveSheet.Cells(2, 2).Top 
ActiveSheet.Shapes("Pic1").Height = ActiveSheet.Range("G1:G7").Height 
ActiveSheet.Shapes("Pic1").Width = ActiveSheet.Range("B1:G1").Width 
Смежные вопросы