私は初心者のプログラマー (経験なし) で、現在行っている仕事のために Visual Basic を学習しています。私は一日かそこら読んでいて、ついに必要なプログラムを作り始めることに決めました!
ただし、いくつかの問題が発生しています。
現在、2 つのサブルーチンがあります。最初のサブルーチンでは、ユーザーがデータ ペアの数を入力できるようにして、ユーザーが入力するテーブルを作成できるようにします。これは、ユーザーのデータが後で参照できるように適切な場所に配置されるようにするためです。
次に、データの入力が完了した後に押すボタンがあり、入力した数値に対していくつかの計算を行う別のサブルーチンを開始します。私の問題は、2 番目のルーチンに引き継がなければならないデータ ペアの数を示す変数が必要なことです。
続行する前に、これまでのコードを示します。(ウィンドウを下にスクロールする必要があります) また、2 番目のサブルーチンが別のモジュールにあることにも注意してください。
Option Explicit
Public Counter As Long
Sub TableCreation1()
ActiveSheet.Shapes.Range(Array("Button 5")).Select
Selection.Delete
Counter = InputBox("How many pairs of data do you have? ")
Range("A1") = "Time (days)"
Range("B1") = "CFL (measured)"
Range("A1:B1").Font.Bold = True
Columns("A:B").EntireColumn.EntireColumn.AutoFit
Range("A1").Select
ActiveCell.Range("A1:B" & Counter + 1).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
End With
Dim btn As Button
Dim rng As Range
With Worksheets("Sheet1")
Set rng = .Range("A" & Counter + 2)
Set btn = .Buttons.Add(rng.Left, rng.Top, rng.Width, rng.Height)
With btn
.Caption = "Click this button to begin calculations"
.AutoSize = True
End With
End With
End Sub
Option Explicit
Dim IntermediateVariable As Long
Public Counter As Long
Sub FindCFLGuess()
IntermediateVariable = Worksheets("Sheet1").Range("B:B").Cells.SpecialCells(xlCellTypeConstants).Count
Counter = IntermediateVariable - 1
End Sub
Counter の値が 2 番目のサブルーチンに引き継がれないのはなぜですか? 現在、列 B に入力されたセルの数をカウントする回避策があります。これにより、数値が得られます。ただし、それにより、使用したいシートの残りの部分に列 B のスペースを使用できなくなります。
誰でも助けることができますか?「パブリック」はワークブックレベルの変数になると思いましたか? 2 番目のサブに Counter の値を表示させるたびに、0 として表示されます。
私のコードが乱雑/非効率的である場合は申し訳ありません。まだ勉強してる。:)