You should learn to use the debugger as soon as possible. Rather than guessing what your code is doing, It is time to see your code executing and ensuring that it does what you expect.
The debugger allow you to follow the execution line by line, inspect variables and you will see that there is a point where it stop doing what you expect.
Debugger - Wikipedia, the free encyclopedia[
^]
Mastering Debugging in Visual Studio 2010 - A Beginner's Guide[
^]
Assuming your code work, I would simplify that way
Dim rowNo1 As Integer = 1
Dim colNo1 As Integer = 1
Dim colNo2 As Integer = 1
Dim numrow As Integer = 36
objExcelApp = CType(CreateObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)
objExcelBook = CType(objExcelApp.Workbooks.Add, Microsoft.Office.Interop.Excel.Workbook)
objExcelSheet = CType(objExcelBook.Worksheets(1), Microsoft.Office.Interop.Excel.Worksheet)
objExcelBook = objExcelApp.Workbooks.Open(sWorkbook)
For rowNo1 = 0 To DataGridView1.RowCount - 1
For colNo1 = 1 To DataGridView1.ColumnCount - 1
If DataGridView1.Columns(colNo1).Width > 0 Then
If Not IsDBNull(DataGridView1.Item(colNo1, rowNo1).Value) Then
If Trim(DataGridView1.Item(colNo1, rowNo1).Value) <> "" Then
objExcelApp.Cells(rowNo1 + 37, colNo1+3) = DataGridView1.Item(colNo1, rowNo1).Value
End If
End If
If colNo2 >= DataGridView1.ColumnCount Then
colNo2 = 1
Else
colNo2 = colNo2 + 1
End If
End If
Next colNo1
numrow = numrow + 1
Next rowNo1
Use the debugger to see what your code is really doing.