質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

2回答

835閲覧

VB.NET エクセルへの入力方法について

ogizo

総合スコア1

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2021/03/26 01:05

編集2021/03/26 05:20

エクセルへの入力に関して

ボタンを押すとエクセルに入力するプログラムを作りたいのですが、
以下のプログラムでは新しいセルに入力が入らず毎度同じ場所(A3)に入ってしまいます。
どなたか解決方法をご教示頂ければ助かります。
宜しくお願い致します。

Imports Microsoft.Office.Interop

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class Form1
Inherits System.Windows.Forms.Form

'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。 <System.Diagnostics.DebuggerNonUserCode()> Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub 'Windows フォーム デザイナーで必要です。 Private components As System.ComponentModel.IContainer 'メモ: 以下のプロシージャは Windows フォーム デザイナーで必要です。 'Windows フォーム デザイナーを使用して変更できます。 'コード エディターを使って変更しないでください。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.Button1 = New System.Windows.Forms.Button() Me.Label1 = New System.Windows.Forms.Label() Me.Label2 = New System.Windows.Forms.Label() Me.DateTimePicker1 = New System.Windows.Forms.DateTimePicker() Me.TextBox1 = New System.Windows.Forms.TextBox() Me.TextBox2 = New System.Windows.Forms.TextBox() Me.DateTimePicker2 = New System.Windows.Forms.DateTimePicker() Me.Button2 = New System.Windows.Forms.Button() Me.SuspendLayout() ' 'Button1 ' Me.Button1.Location = New System.Drawing.Point(51, 198) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(75, 39) Me.Button1.TabIndex = 1 Me.Button1.Text = "出勤" Me.Button1.UseVisualStyleBackColor = True ' 'Label1 ' Me.Label1.AutoSize = True Me.Label1.Location = New System.Drawing.Point(131, 208) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(0, 18) Me.Label1.TabIndex = 3 ' 'Label2 ' Me.Label2.AutoSize = True Me.Label2.Location = New System.Drawing.Point(48, 152) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(0, 18) Me.Label2.TabIndex = 4 ' 'DateTimePicker1 ' Me.DateTimePicker1.CustomFormat = "yyyy/MM/dd HHmm" Me.DateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Custom Me.DateTimePicker1.Location = New System.Drawing.Point(51, 108) Me.DateTimePicker1.Name = "DateTimePicker1" Me.DateTimePicker1.Size = New System.Drawing.Size(253, 25) Me.DateTimePicker1.TabIndex = 5 ' 'TextBox1 ' Me.TextBox1.Location = New System.Drawing.Point(51, 152) Me.TextBox1.Name = "TextBox1" Me.TextBox1.Size = New System.Drawing.Size(300, 25) Me.TextBox1.TabIndex = 6 ' 'TextBox2 ' Me.TextBox2.Location = New System.Drawing.Point(374, 152) Me.TextBox2.Name = "TextBox2" Me.TextBox2.Size = New System.Drawing.Size(298, 25) Me.TextBox2.TabIndex = 7 ' 'DateTimePicker2 ' Me.DateTimePicker2.CustomFormat = "yyyy/MM/dd HHmm" Me.DateTimePicker2.Format = System.Windows.Forms.DateTimePickerFormat.Custom Me.DateTimePicker2.Location = New System.Drawing.Point(374, 108) Me.DateTimePicker2.Name = "DateTimePicker2" Me.DateTimePicker2.Size = New System.Drawing.Size(261, 25) Me.DateTimePicker2.TabIndex = 8 ' 'Button2 ' Me.Button2.Location = New System.Drawing.Point(374, 198) Me.Button2.Name = "Button2" Me.Button2.Size = New System.Drawing.Size(73, 39) Me.Button2.TabIndex = 9 Me.Button2.Text = "退勤" Me.Button2.UseVisualStyleBackColor = True ' 'Form1 ' Me.AutoScaleDimensions = New System.Drawing.SizeF(10.0!, 18.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(800, 450) Me.Controls.Add(Me.Button2) Me.Controls.Add(Me.DateTimePicker2) Me.Controls.Add(Me.TextBox2) Me.Controls.Add(Me.TextBox1) Me.Controls.Add(Me.DateTimePicker1) Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.Button1) Me.Name = "Form1" Me.Text = "Form1" Me.ResumeLayout(False) Me.PerformLayout() End Sub Friend WithEvents Button1 As Button Friend WithEvents Label1 As Label Friend WithEvents Label2 As Label Friend WithEvents DateTimePicker1 As DateTimePicker Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim valueString As String Dim text As String 'ボタンが押された回数 Dim count As Integer = 0 '変数宣言 Dim ex As New Microsoft.Office.Interop.Excel.Application Dim sh As Microsoft.Office.Interop.Excel.Worksheet Dim wb As Microsoft.Office.Interop.Excel.Workbook valueString = DateTimePicker1.Value.ToShortDateString() text = DateTimePicker1.Text TextBox1.Text = ControlChars.NewLine & text If count = 0 Then '----1回目 count = count + 1 'ファイルオープン wb = ex.Workbooks.Open(“D:\NewExcelBook.xlsx”) sh = wb.Sheets(“Sheet1”) sh.Range(“A3”).Value = ControlChars.NewLine & text wb.Save() ex.Quit() MsgBox(“終了”) ElseIf count = 1 Then '----2回目 count = count + 1 'ファイルオープン wb = ex.Workbooks.Open(“D:\NewExcelBook.xlsx”) sh = wb.Sheets(“Sheet1”) sh.Range(“A4”).Value = ControlChars.NewLine & text wb.Save() ex.Quit() MsgBox(“終了”) ElseIf count = 2 Then '----3回目 count = count + 1 'ファイルオープン wb = ex.Workbooks.Open(“D:\NewExcelBook.xlsx”) sh = wb.Sheets(“Sheet1”) sh.Range(“A5”).Value = ControlChars.NewLine & text wb.Save() ex.Quit() MsgBox(“終了”) Else '----4回目 count = 0 '元に戻す 'ファイルオープン wb = ex.Workbooks.Open(“D:\NewExcelBook.xlsx”) sh = wb.Sheets(“Sheet1”) sh.Range(“A6”).Value = ControlChars.NewLine & text wb.Save() ex.Quit() MsgBox(“終了”) End If
End Sub Friend WithEvents TextBox1 As TextBox Friend WithEvents TextBox2 As TextBox Friend WithEvents DateTimePicker2 As DateTimePicker Private Sub DateTimePicker2_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker2.ValueChanged End Sub Friend WithEvents Button2 As Button Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim valueString As String Dim text As String valueString = DateTimePicker2.Value.ToShortDateString() text = DateTimePicker2.Text TextBox2.Text = ControlChars.NewLine & text End Sub

End Class

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/03/26 04:36

コードは ``` と ``` で囲ってください(``` はバッククォート 3 つ)。インデントされて見やすくなうので。インデントされてないコードは質問者さん自身も読む気がしないのでは? 何を作っているか(Windows Forms? WPF? その他?)と開発環境(OS, Visual Studio, .NET Framework のバージョンなど)を書いてください。
ogizo

2021/03/26 05:02

ご回答ありがとうございます。 Windows Forms、開発環境はVisual Studioとなります。
guest

回答2

0

ボタンを押すたびに
Dim count As Integer = 0
が働いてしまうので、毎回count=0のif文の中を実行するのだと思います。

Form1をLoadするときだけ、
Dim count As Integer = 0
を定義しなおせば良いと思うのですが、Form1_loadの定義が無い。。。

下記を追加したら、どうなりますか?

VB.NET

1Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 2 Dim count As Integer = 0 3End Sub

あと、Button1_Click内の「Dim count As Integer = 0」は削除してくださいね。

投稿2021/03/30 21:03

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xail2222

2021/03/30 21:49 編集

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load の中にDimで変数定義したら、その有効範囲はForm1_Loadの中だけです。 Button1_Clickイベントの中ではその変数は使えないですよ。 他でも使えるようにするには、モジュールプライベイトとか つまりイベントの外側にPrivateとかで定義しないといけないです。
退会済みユーザー

退会済みユーザー

2021/03/30 22:09

あらら、失礼しました。 とりあえず、Button1_Clickの中に「Dim count As Integer = 0」があるのが、原因です。 countの定義をどこか外側に移してください。
YAmaGNZ

2021/03/31 00:17

その定義をstatic定義すれば、その場所でも大丈夫です。 何が問題かというと、変数の有効範囲やスコープなどを理解していない部分です。
guest

0

変数の有効期間について学習されるのがよろしいかと思います。
また、ご自身の作ったプログラムがどのように動作しているかステップ実行などを活用して確認してみてください。
その際にどの変数が現在どのような値になっているかも確認できますのでそちらも活用してみてください。
countがどのような値になっているか確認しながら実行してみましょう。

投稿2021/03/26 07:26

YAmaGNZ

総合スコア10489

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問