2012-12-26 6 views
2

enter image description hereEXCEL VBA 동적 데이터 입력

  1. 적색 박스 ("D : D")는 값이 각각 Me.TextBox1Me.TextBox2의 데이터가있는 Me.ComboBox1.Value
  2. 황색 및 녹색 컬러에서 참조된다. Me에서는 Me.ComboBox1에서 선택한 값에 따라 Me.TextBox1Me.TextBox2의 값이이 시트에 삽입됩니다.
  3. 따라서이 경우 사용자가 선택한 빨강 색에 따라 노란색 및 녹색 색을 입력하고 싶습니다.
  4. 또 다른 추가 것은
  5. 내가 노란색과 녹색 데이터

답변

1

이 그것을 수행해야합니다

nextrow = Sheets("DB Cust").Range("C" & Sheets("DB Cust").Rows.Count).End(xlUp).Row + 1 

UPDATE

이 편집 후, 나는이 비슷한는 당신이 필요로 될 수있다 생각합니다."D"는 마지막 값이있는 경우

Dim lngNewRow As Long 
Dim strLookupValue As String 

strLookupValue = "A" ' or B/C/D etc. 

lngNewRow = Sheets("DB Cust").Range("D:D").Find(strLookupValue).Offset(, 1).End(xlDown).Row + 1 
Sheets("DB Cust").Rows(lngNewRow).Insert 
Sheets("DB Cust").Cells(lngNewRow, "E").Value = "Data for column E" 
Sheets("DB Cust").Cells(lngNewRow, "F").Value = "Data for column F" 

을 요점 4에 관해서, : 그것은 작동하려면이 순서가 항상 데이터의 각 블록의 열 E의 가치에 달려 있습니다 그러면 왜 빈 행을 추가로 삽입해야합니까? 그 아래에있는 모든 행이 공백으로 표시됩니다.

+0

더 나은 이해를 위해 제 질문을 수정했습니다. 당신의 노고에 감사드립니다. –

0

잘 모르겠어요하지만 당신은 당신의 범위를 호출하는 방법은 나에게 이상한 것 같다의 마지막 행에 대해 .OffSet(1,0).EntireRow.Insert을 넣어 것입니다. 개수 범위를 정의하는 다른 방법을 시도해보십시오.

변경이 : 여기에

nextrow = WorksheetFunction.CountA(Sheets("DB Cust").Range("C:C")) + 2 

는 :

Dim myWB as Workbook, DBcust as Worksheet 
Set myWB = Excel.ActiveWorkbook 
Set DBcust = myWB.Worksheets("DB Cust") 

nextrow = Excel.WorksheetFunction.CountA(DBcust.Range(DBcust.Cells(1,3),DBcust.Cells(DBcust.UsedRange.Rows.Count,3)) + 2 

은 좀 더 신뢰성 변수에 책과 시트를 할당하지만, 당신이 원한다면 당신은 명시 적으로 다시 명시 할 수 있습니다. 이 코드는 통합 문서가 현재 활성 통합 문서라고 가정합니다. 그렇지 않으면 통합 문서 이름을 사용하여 변수를 설정해야합니다.

또한 "With"블록 내에서 offset 함수의 "rfound"부분이 필요하지 않은 것처럼 보입니다. . . 그것은 "With"가있는 것입니다. 그것은 단지 작은 것이지만 그와 같은 의미없는 코드는 당신에게 두통이 생길뿐 내 조언을 꺼내는 것입니다.

이 항목을 VBA IDE에로드하지 않았으므로 철자 오류를 다시 확인하십시오. 감사!

는 업데이트 :

당신의 코멘트를 읽은 후, 나는 당신의 코드와 무엇 당신이 할하려는 것입니다 좀 더 자세히 살펴 보았다. combobox1에서 사용자가 정의한 검색 결과의 위치에서 셀 오프셋에 textbox1의 값 (이 부분을 설명하면 도움이 될 수있는 것은 무엇이든)을 배치하려는 것 같습니다. nextrow 변수는 행 오프셋 매개 변수 안에 있지만 위치는 이미 원하는 위치입니다. 이 변경 시도 : 여기에

With rfound 

rfound.Offset(nextrow, 1).Value = TextBox1.Value 
rfound.Offset(nextrow, 2).Value = TextBox1.Value 
rfound.Offset(nextrow, 3).Value = TextBox1.Value 
rfound.Offset(nextrow, 4).Value = TextBox1.Value 
rfound.Offset(nextrow, 5).Value = TextBox1.Value 
rfound.Offset(nextrow, 6).Value = TextBox1.Value 
rfound.Offset(nextrow, 7).Value = TextBox1.Value 
rfound.Offset(nextrow, 8).Value = TextBox1.Value 
MsgBox ("Data entry success") 

End With 

을 :

With rfound 

.Offset(0, 1).Value = TextBox1.Value 
.Offset(0, 2).Value = TextBox1.Value 
.Offset(0, 3).Value = TextBox1.Value 
.Offset(0, 4).Value = TextBox1.Value 
.Offset(0, 5).Value = TextBox1.Value 
.Offset(0, 6).Value = TextBox1.Value 
.Offset(0, 7).Value = TextBox1.Value 
.Offset(0, 8).Value = TextBox1.Value 
MsgBox ("Data entry success") 

End With 

당신은 내가 아니라 내 이전의 조언에 따라 중복 "rfound"를 제거 알 수 있습니다. 이것이 작동하는지 확인하십시오. 그렇다면 newrow 변수를 모두 함께 제거 할 수 있습니다.

행운을 빌어 요 어떻게되는지 알려주세요.

+0

'c2'셀에 강조 표시된 빨간색 '1'을 입력하고 c3, c4, c4 ... 등의 수식이 필요합니다. –

+0

업데이트 된 답변을 참조하십시오. – Lopsided

+0

더 나은 이해를 위해 위에 질문을 편집했습니다. 한번 봐주세요. –