痔になりやすい生活習慣とは?

VB.NETを独学で勉強しているものです
.NETのプログラミングでEXCELを開いてセルに数値を入力するところまではできるようになったのですが、罫線を引こうとするとうまくいきません。
ws.Range(Karist).Borders.LineStyle = xlContinuous
のところの「xlContinuous」の下部に波線が出て、変数が宣言されていないと出るのですが、EXCELの定数はどのように宣言すればよいのでしょうか?
よろしくお願いいたします

このQ&Aに関連する最新のQ&A

A 回答 (4件)

罫線を引く


  ws.Range(Karist).Borders(1).Weight = 1
     Borders(1) → セルの左
     Borders(2) → セルの右
     Borders(3) → セルの上
     Borders(4) → セルの下
     Weight = 1 → 細線
Weight = 2 → 普通
     Weight = 3 → 太線
     Weight = 4 → 極太線
罫線の型
   ws.Range(Karist).Borders(1).LineStyle = 1
罫線の色
   ws.Range(Karist).Borders(1).Color = QBcolor(2)
    • good
    • 0
この回答へのお礼

実際に試したところ、うまく行きました。大変参考になりました。応用として、書いているラインを消すということもうまくいき、大変役立っています。どうもありがとうございました。

お礼日時:2005/11/01 15:27

こんにちは。



Excel側の組み込み定数を使うなら、参照設定すればよいです。そうでなければ、Excelを開いて、実際のコードで定数を調べるなり、#2さんの数字を使うなりすればよいと思います。
    • good
    • 0
この回答へのお礼

参考になりました。どうもありがとうございました

お礼日時:2005/11/01 15:23

ws.Range(Karist).Borders.LineStyle = Excel.XlLineStyle.xlContinuous


とすると定数を利用できます。
定数でなく直接値を入力するのであれば1でいいです。

メニューの「表示」->「オブジェクブラウザ」で調べるとどこに定義されているかがわかります。
    • good
    • 1
この回答へのお礼

参考になりました。どうもありがとうございました

お礼日時:2005/11/01 15:24

こんにちは。



 Excelの定数であろうが、VBの定数であろうが、宣言方法は同じだと思います。xlContinuousをいくつに設定したらいいかというのであれば、ヘルプのMicrosoft Excel Visual Basicリファレンスの列挙の中に記述されていると思います。

では。
    • good
    • 0
この回答へのお礼

参考になりました。どうもありがとうございました

お礼日時:2005/11/01 15:22

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBでエクセルに罫線を引くには?

VBからエクセルの表に罫線を引くようにしたいのですが、
使用しているVBが VB2010 Expressだからか、色々検索して試しても、
エラーが出てしまい、やり方が分からなくて困っています。

ちなみに関係ないとは思いますが、エクセルは2007を使用しています。

Aベストアンサー

こんばんは。

まずは基本的なことの確認をします。

・Excelへの参照設定はできていますよね?
 できてないなら、「ソリューションエクスプローラ」から該当のプロジェクトを右クリックし、
 「参照の追加」から「COM」タブで「Excel 12.0 Object Library」を選択して「OK」をクリックし
 ておいてください。

・VBでExcelを操作するのはなかなかやっかいです。Excelのマクロの記録は役には立ちますが
 そのままでは使用できません。

・また、いちいち「Select」しなくても罫線くらいは引けます。

以下のコードは、新しいExcelを開いてブックを追加し、Sheet1のA1:B2のセル範囲を太罫線で囲みます。

Imports Microsoft.Office.Interop.Excel
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim AppExcel As New Microsoft.Office.Interop.Excel.Application
AppExcel.Visible = True
Dim WB As Workbook
WB = AppExcel.Workbooks.Add
Dim WS As Worksheet
WS = WB.Worksheets(1)
With WS.Range("A1:B2")
With .Borders(XlBordersIndex.xlEdgeLeft)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
With .Borders(XlBordersIndex.xlEdgeTop)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
With .Borders(XlBordersIndex.xlEdgeBottom)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
With .Borders(XlBordersIndex.xlEdgeRight)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
End With
End Sub
End Class

こんばんは。

まずは基本的なことの確認をします。

・Excelへの参照設定はできていますよね?
 できてないなら、「ソリューションエクスプローラ」から該当のプロジェクトを右クリックし、
 「参照の追加」から「COM」タブで「Excel 12.0 Object Library」を選択して「OK」をクリックし
 ておいてください。

・VBでExcelを操作するのはなかなかやっかいです。Excelのマクロの記録は役には立ちますが
 そのままでは使用できません。

・また、いちいち「Select」しなくても罫線くらいは引けます。

以下のコ...続きを読む

QVB2010でExcelの行をコピーして挿入する

いつもお世話になります。

VB2010を使用してExcelのある1行をコピーして、コピーしたものを同じシートに挿入したいのですが方法がわかりません。

画像のように、35と36の行をコピーして、37と38に全く同じ物を挿入したいです。


サイトをしらみつぶしに探しましたが、私に理解できるサイトがヒットしませんでしたので、できればサンプルコードを教えていただけると嬉しいです。

下記のようにコードを書きましたが、コピペ状態でほとんど理解していません。

Imports Microsoft.Office.Interop
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Shown
Me.Visible = False
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

'Excelブックを起動
xlBook = xlApp.Workbooks.Open("C:\test1.xls")
'Excelを表示
xlApp.Visible = False
'シートを指定
xlSheet = DirectCast(xlBook.Worksheets(1), Excel.Worksheet)
xlSheet.Activate()

'ここから
'
'
'
'
'ここまでがわかりません

' xlBook.Save() '上書き保存
xlBook.SaveAs("c:\test2.xls") '名前をつけて保存

xlBook.Close()
xlApp.Quit()
'終了処理

xlSheet = Nothing
xlBook = Nothing
xlApp = Nothing
'テストが完了したらループ処理に変更する
Dim p() As Process = Process.GetProcessesByName("Excel")
p(0).Kill()
End Sub
End Class


エクセルのバージョンはExcel 2003です。

お手数おかけしますがよろしくお願いします。

いつもお世話になります。

VB2010を使用してExcelのある1行をコピーして、コピーしたものを同じシートに挿入したいのですが方法がわかりません。

画像のように、35と36の行をコピーして、37と38に全く同じ物を挿入したいです。


サイトをしらみつぶしに探しましたが、私に理解できるサイトがヒットしませんでしたので、できればサンプルコードを教えていただけると嬉しいです。

下記のようにコードを書きましたが、コピペ状態でほとんど理解していません。

Imports Microsoft.Office.Interop
Public Class F...続きを読む

Aベストアンサー

エクセル開放とエクセルを起動のSetの部分は、
.Netでは外してOKです。

解決できて良かったです(^o^)

答えが同じでも、いろいろなやり方がありますので、

これからいろいろチャレンジしてみて下さい。

QVB.NETで、EXCELの右寄せ

VB.NETで、EXCELのセルに貼り付けたいのです。
.SetValue(rowIndex2, 3, "ABC")
と、しました。これを右寄せにするには
どうすれば良いのでしょうか?
宜しくお願い致します。

Aベストアンサー

お世話になります。

質問者さんの
> VB.NETで、EXCELのセルに貼り付けたいのです。
> .SetValue(rowIndex2, 3, "ABC")
この文章が、
VisualBasic のどのバージョンと
Excel のどのバージョンで
どういった方法でやっているのか、
何に対して SetValue メソッドを実行しているのか
さっぱり解りませんが、
COM を使った方法だと、こんな感じです。
(VB 2005、Excel 2003)

Imports Microsoft.Office.Interop

Public Class Form1
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim xlApplication As New Excel.Application()
    Dim xlBooks As Excel.Workbooks
    xlBooks = xlApplication.Workbooks

    Dim xlBook As Excel.Workbook = xlBooks.Add()
    Dim xlSheets As Excel.Sheets = xlBook.Worksheets
    Dim xlSheet As Excel.Worksheet = DirectCast(xlSheets.Item(1), Excel.Worksheet)
    Dim xlCells As Excel.Range = xlSheet.Cells
    Dim xlRange As Excel.Range
    xlRange = DirectCast(xlCells(1, 2), Excel.Range)
    xlRange.Value = "ABC"
    ' 右寄せ
    xlRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight
    xlApplication.Visible = True
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlCells)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication)
  End Sub
End Class

お世話になります。

質問者さんの
> VB.NETで、EXCELのセルに貼り付けたいのです。
> .SetValue(rowIndex2, 3, "ABC")
この文章が、
VisualBasic のどのバージョンと
Excel のどのバージョンで
どういった方法でやっているのか、
何に対して SetValue メソッドを実行しているのか
さっぱり解りませんが、
COM を使った方法だと、こんな感じです。
(VB 2005、Excel 2003)

Imports Microsoft.Office.Interop

Public Class Form1
  Private Sub Button1_Click(ByVal sender As System.Object,...続きを読む

Qvb.netからエクセル関数書き込み

vb.net2008を使用しております。
vb.netから エクセルの ”L2” のセルに ”K2/H2” という
計算式を入れたいのですが どのようなやり方があるのでしょうか?

よろしくお願いいたします。

Aベストアンサー

#2です。

>現状 FOR~NEXT で K2~K50 H2~H50 まで
>数値を書いています。
このループが終わった後に
xlSheet.Range("L2:L50").Formula = "=K2/H2"
とやれば数式は一気に入りますけど。

値として入れるなら、For~Nextのループ内に
xlSheet.Range("L" & 行を決める変数).Value = K列に代入する変数 / H列に代入する変数
とするだけかな?(ループのコーティングがわからないので何とも)

QDataGridViewで指定したセルの値を取得

こんにちは。

VB2008のDataGridViewで指定したセルの値を取得をする方法がわかりません。
どなたか教えてください。

Aベストアンサー

こんばんは.

 Dim Data As String
 Data = Me.DataGridView(0, 2).Value
 MsgBox(Data)

みたいな感じで取れないですかね???

Qvb.netで画面のコントロールId名を変数で動的に制御し処理する方法

以下のような処理がしたいです。
実現方法をご存知でしたらご教授下さい。

画面のコントロールText1~Text3があります。
For~Nextでこのコントロールに値をセットしたいです。

For i = 1 To 3
  Texti.Text = i
  ※このiのTextの後ろのiの部分を1~3と動的に変更し、各Textに値を設定したいです。
Next

Aベストアンサー

こんにちは、webでは、findcontrolを使うみたいです。

いかに、参考URLから、引用すると
***********************************
Dim L, U, i As Integer
Dim tx As System.Web.UI.WebControls.TextBox
L = LBound(dat)
U = UBound(dat)
For i = L To U
'コントロール名を探し出す
tx = FindControl("TextBox" & CStr(i))
'見つかったコントロールのTextプロパティに代入
tx.Text = dat(i)
Next

******************引用終わり*******
このようにすると良いみたいです。
asp findcontrolで、検索すると、
結構ヒットするみたいです。

参考URL:http://natchan-develop.seesaa.net/

QVB.NETのDataGridで、選択行の特定の列の内容を取得したい

タイトルにあるとおり、DataGridを使用している場合、実行時に選択された行の特定の列の内容を取得するにはどのようにすればよいのでしょうか?

DataGridは複雑で、まだよくわかっていません。
よろしくお願いします。

Aベストアンサー

選択している行番号は、dataGrid1.CurrentRowIndexでわかります。
行、列を指定して各セルにアクセスするには、
dataGrid1(行番号,列番号)でいいので
dataGrid1(dataGrid1.CurrentRowIndex,列番号)
で選択されている行の特定の列の内容を取得できます。
註:番号は、0始まり

QVBからExcelのセルの書式設定を変更する

Excelのセルに
 C2:2000/7/8 16:39:00
 C3:2000/7/9 8:30:00
と入っています。
これをExcel上で「=C3-C2」とすれば「1900/1/0 15:51」となります。
これを[セルの書式設定]-[表示形式]-[ユーザ定義]-[[h]:mm:ss]とすると、
[15:51:00]とう結果が得られます。
これをVB上から、Excelのセルを操作して求めたいのですが、可能なのでしょうか?

Aベストアンサー

こんにちは。maruru01です。

Excel2000、VB6.0とします。
まず、VBのメニューの[プロジェクト]→[参照設定]で、
「Microsoft Excel X.X Object Library」(X.Xはバージョン)
にチェックを入れます。(Excelオブジェクトを使用出来るようにする。)
それで、例えばフォームに[Command1]コマンドボタンを貼り付けて、そのクリックイベントで、次のようにすれば出来ます。
なお、予めExcelファイルを用意しておいて下さい。
そのファイルの"Sheet1"のC4の書式設定を変更します。


Private Sub Command1_Click()

  Dim xlApp As Excel.Application 'Excelアプリケーションオブジェクト
  Dim xlBook As Workbook  'Workbookオブジェクト
  Dim xlSheet As Worksheet  'Worksheetオブジェクト
  Dim ExcelFileName As String  'Excelファイルのフルパス

  ExcelFileName = "c:\Test.xls"

  'Excelブックを開く
  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Open(ExcelFileName)
  Set xlSheet = xlBook.Worksheets("Sheet1")

  With xlSheet
    .Range("C4").Select
    Selection.NumberFormatLocal = "[h]:mm:ss"
  End With

  'Excelブックを閉じる
  xlBook.Close True
  xlApp.Quit
  Set xlSheet = Nothing
  Set xlBook = Nothing
  Set xlApp = Nothing

End Sub

あとは、ファイル名やシート名、セルなどを適宜変更して下さい。

こんにちは。maruru01です。

Excel2000、VB6.0とします。
まず、VBのメニューの[プロジェクト]→[参照設定]で、
「Microsoft Excel X.X Object Library」(X.Xはバージョン)
にチェックを入れます。(Excelオブジェクトを使用出来るようにする。)
それで、例えばフォームに[Command1]コマンドボタンを貼り付けて、そのクリックイベントで、次のようにすれば出来ます。
なお、予めExcelファイルを用意しておいて下さい。
そのファイルの"Sheet1"のC4の書式設定を変更します。


Private Sub Command1_...続きを読む

QDataTableから条件を満たした行を別のDatatableへコピーしたい

VC#2005とSQLServer2005ExpressEditionでWindowsアプリケーションを作成しています。

データベースの中から1つのマスタテーブルのデータを呼び出すのにTableAdapterを使ってDataTableにデータをバインドしました。
そこから条件を満たしている行をすべて抽出して同じ型のDataTableにデータをコピーしたいのです。

ですから、DataTableは2つ用意しています。1つは上記の通りデータをバインドしていますが、もう1つは宣言しただけなのでまだ空っぽの状態です。
DataTableにはカラムが3列あり、その中の1列をグループIDとしています。
条件としてはグループIDが同じであるということです。
やりたいことは条件を満たしている行をすべて抽出して空のデータテーブルにコピーすることです。

どなたかご存知の方いらっしゃれば教えてください。
よろしくお願いします。

Aベストアンサー

C#だったんですね … さほど変わりないと思いますが

お使いのコードが提示されていないのでこちらで適当な変数をでっち上げております
現在お使いのコードを支障の無い範囲で提示しましょう

//元のデータテーブルがdtSourceとすると
// テーブル構造をコピー
DataTable dt = dtSource.Clone();
DataRow r = null;
foreach( DataRow dtRow in dtSource.Select("選択するための文字列"))
{
  r = dt.NewRow();
  for( int n = 0; n < dtRow.ItemArray.Length; n++ )
  {
    r[n] = dtRow[n];
  }
  dt.Rows.Add( r );
}
といった具合になると思います

# 前回の投稿中のstSorceはdtSourceの単なるミスです

QVB.NETでのExcelの印刷について

環境:XP-Pro  VisualStudio.NET2003 VB.NET

VBAについて。
【1】VB.NETを使ってExcelを表示しないで印刷を行います。
その時に印刷用紙を横にしたいのですが、方法がわかりません。
Excel.Worksheet.Range("A1:N9").Orientation = 例:xlLandscapeなどで
試したのですが、うまくできませんでした。
どなたかご存知でしたら教えて頂けませんか?

【2】それと印刷時にExcelを表示させずに、プレビューを出したいのですが、
PrintPreview()をプログラムに追加したらプレビューが表示されずに
固まってしまいます。
引数などが必要ですか?

Aベストアンサー

【1】印刷する前にセットしてはどうでしょうか?
  Dim xlSheet As Excel.Worksheet
  Set xlSheet = xlBook.Worksheets.Add
  (途中省略)
 (印刷の前に)
  With xlSheet.PageSetup
    .Orientation = xlLandscape
  End With

  xlSheet.PrintOut

  xlApp.Quit
  Set xlSheet = Nothing


【2】下記を追加してどうでしょう?
 xlSheet.PrintPreview  '印刷プレビューを表示


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング